xref: /openbmc/telemetry/tests/src/test_report_manager.cpp (revision a8182beb1129b0608d2ddfb82895194ea3485288)
12f9f9b87SWludzik, Jozef #include "dbus_environment.hpp"
2d2238194SKrzysztof Grobelny #include "helpers.hpp"
3b4ef22e4SSzymon Dompke #include "interfaces/trigger_manager.hpp"
4e2362796SWludzik, Jozef #include "mocks/json_storage_mock.hpp"
52f9f9b87SWludzik, Jozef #include "mocks/report_factory_mock.hpp"
6b4ef22e4SSzymon Dompke #include "mocks/trigger_manager_mock.hpp"
7e2362796SWludzik, Jozef #include "params/report_params.hpp"
8e2362796SWludzik, Jozef #include "report.hpp"
92f9f9b87SWludzik, Jozef #include "report_manager.hpp"
10e8fc5751SKrzysztof Grobelny #include "utils/conversion.hpp"
1132305f14SSzymon Dompke #include "utils/dbus_path_utils.hpp"
1232305f14SSzymon Dompke #include "utils/string_utils.hpp"
13e2362796SWludzik, Jozef #include "utils/transform.hpp"
1432305f14SSzymon Dompke #include "utils/tstring.hpp"
15*a8182bebSKrzysztof Grobelny #include "utils/variant_utils.hpp"
162f9f9b87SWludzik, Jozef 
172f9f9b87SWludzik, Jozef using namespace testing;
18e8fc5751SKrzysztof Grobelny using namespace std::string_literals;
19e2362796SWludzik, Jozef using namespace std::chrono_literals;
202f9f9b87SWludzik, Jozef 
21*a8182bebSKrzysztof Grobelny using AddReportFutureVersionVariantForSet =
22*a8182bebSKrzysztof Grobelny     utils::WithoutMonostate<AddReportFutureVersionVariant>;
23*a8182bebSKrzysztof Grobelny 
242f9f9b87SWludzik, Jozef class TestReportManager : public Test
252f9f9b87SWludzik, Jozef {
262f9f9b87SWludzik, Jozef   public:
27e2362796SWludzik, Jozef     ReportParams reportParams;
282f9f9b87SWludzik, Jozef 
292f9f9b87SWludzik, Jozef     std::unique_ptr<ReportFactoryMock> reportFactoryMockPtr =
302f9f9b87SWludzik, Jozef         std::make_unique<StrictMock<ReportFactoryMock>>();
312f9f9b87SWludzik, Jozef     ReportFactoryMock& reportFactoryMock = *reportFactoryMockPtr;
32e2362796SWludzik, Jozef 
33e2362796SWludzik, Jozef     std::unique_ptr<StorageMock> storageMockPtr =
34e2362796SWludzik, Jozef         std::make_unique<NiceMock<StorageMock>>();
35e2362796SWludzik, Jozef     StorageMock& storageMock = *storageMockPtr;
36e2362796SWludzik, Jozef 
37d2238194SKrzysztof Grobelny     std::unique_ptr<ReportMock> reportMockPtr =
38b8cc78ddSKrzysztof Grobelny         std::make_unique<NiceMock<ReportMock>>(reportParams.reportId());
39d2238194SKrzysztof Grobelny     ReportMock& reportMock = *reportMockPtr;
40d2238194SKrzysztof Grobelny 
41e2362796SWludzik, Jozef     std::unique_ptr<ReportManager> sut;
422f9f9b87SWludzik, Jozef 
432f9f9b87SWludzik, Jozef     MockFunction<void(std::string)> checkPoint;
442f9f9b87SWludzik, Jozef 
45e2362796SWludzik, Jozef     void SetUp() override
46e2362796SWludzik, Jozef     {
47dcc4e193SKrzysztof Grobelny         EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _))
48dcc4e193SKrzysztof Grobelny             .Times(AnyNumber());
49dcc4e193SKrzysztof Grobelny 
50e6d48874SKrzysztof Grobelny         sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr),
51e6d48874SKrzysztof Grobelny                                               std::move(storageMockPtr),
52e6d48874SKrzysztof Grobelny                                               DbusEnvironment::getObjServer());
53e2362796SWludzik, Jozef     }
54e2362796SWludzik, Jozef 
552f9f9b87SWludzik, Jozef     void TearDown() override
562f9f9b87SWludzik, Jozef     {
572f9f9b87SWludzik, Jozef         DbusEnvironment::synchronizeIoc();
582f9f9b87SWludzik, Jozef     }
592f9f9b87SWludzik, Jozef 
60*a8182bebSKrzysztof Grobelny     std::pair<boost::system::error_code, std::string>
61*a8182bebSKrzysztof Grobelny         addReport(const std::vector<
62*a8182bebSKrzysztof Grobelny                   std::pair<std::string, AddReportFutureVersionVariantForSet>>&
63*a8182bebSKrzysztof Grobelny                       properties)
642f9f9b87SWludzik, Jozef     {
652f9f9b87SWludzik, Jozef         std::promise<std::pair<boost::system::error_code, std::string>>
662f9f9b87SWludzik, Jozef             addReportPromise;
672f9f9b87SWludzik, Jozef         DbusEnvironment::getBus()->async_method_call(
682f9f9b87SWludzik, Jozef             [&addReportPromise](boost::system::error_code ec,
692f9f9b87SWludzik, Jozef                                 const std::string& path) {
702f9f9b87SWludzik, Jozef                 addReportPromise.set_value({ec, path});
712f9f9b87SWludzik, Jozef             },
722f9f9b87SWludzik, Jozef             DbusEnvironment::serviceName(), ReportManager::reportManagerPath,
73dcc4e193SKrzysztof Grobelny             ReportManager::reportManagerIfaceName, "AddReportFutureVersion",
74*a8182bebSKrzysztof Grobelny             properties);
75f32f6fefSKrzysztof Grobelny         return DbusEnvironment::waitForFuture(addReportPromise.get_future());
762f9f9b87SWludzik, Jozef     }
772f9f9b87SWludzik, Jozef 
7851497a0cSKrzysztof Grobelny     auto addReport(const ReportParams& params)
7951497a0cSKrzysztof Grobelny     {
80*a8182bebSKrzysztof Grobelny         std::vector<std::pair<std::string, AddReportFutureVersionVariantForSet>>
81*a8182bebSKrzysztof Grobelny             properties;
82*a8182bebSKrzysztof Grobelny 
83*a8182bebSKrzysztof Grobelny         properties.emplace_back("Id", params.reportId());
84*a8182bebSKrzysztof Grobelny         properties.emplace_back("Name", params.reportName());
85*a8182bebSKrzysztof Grobelny         properties.emplace_back("ReportingType",
86*a8182bebSKrzysztof Grobelny                                 utils::enumToString(params.reportingType()));
87*a8182bebSKrzysztof Grobelny         properties.emplace_back("ReportUpdates",
88*a8182bebSKrzysztof Grobelny                                 utils::enumToString(params.reportUpdates()));
89*a8182bebSKrzysztof Grobelny         properties.emplace_back("AppendLimit", params.appendLimit());
90*a8182bebSKrzysztof Grobelny         properties.emplace_back("Enabled", params.enabled());
91*a8182bebSKrzysztof Grobelny         properties.emplace_back(
92*a8182bebSKrzysztof Grobelny             "ReportActions",
93*a8182bebSKrzysztof Grobelny             utils::transform(params.reportActions(), [](const auto v) {
94b8cc78ddSKrzysztof Grobelny                 return utils::enumToString(v);
95*a8182bebSKrzysztof Grobelny             }));
96*a8182bebSKrzysztof Grobelny         properties.emplace_back("Interval", params.interval().count());
97*a8182bebSKrzysztof Grobelny         properties.emplace_back("MetricParams",
9851497a0cSKrzysztof Grobelny                                 toReadingParameters(params.metricParameters()));
99*a8182bebSKrzysztof Grobelny 
100*a8182bebSKrzysztof Grobelny         return addReport(properties);
10151497a0cSKrzysztof Grobelny     }
10251497a0cSKrzysztof Grobelny 
1032f9f9b87SWludzik, Jozef     template <class T>
104e28aa53dSSzymon Dompke     static T getProperty(const std::string& property)
1052f9f9b87SWludzik, Jozef     {
106e28aa53dSSzymon Dompke         return DbusEnvironment::getProperty<T>(
1072f9f9b87SWludzik, Jozef             ReportManager::reportManagerPath,
108e28aa53dSSzymon Dompke             ReportManager::reportManagerIfaceName, property);
10932859b63SKarol Niczyj     }
1102f9f9b87SWludzik, Jozef };
1112f9f9b87SWludzik, Jozef 
1122f9f9b87SWludzik, Jozef TEST_F(TestReportManager, minInterval)
1132f9f9b87SWludzik, Jozef {
1142f9f9b87SWludzik, Jozef     EXPECT_THAT(getProperty<uint64_t>("MinInterval"),
115dcc4e193SKrzysztof Grobelny                 Eq(ReportManager::minInterval.count()));
1162f9f9b87SWludzik, Jozef }
1172f9f9b87SWludzik, Jozef 
1182f9f9b87SWludzik, Jozef TEST_F(TestReportManager, maxReports)
1192f9f9b87SWludzik, Jozef {
120503c1589SWludzik, Jozef     EXPECT_THAT(getProperty<size_t>("MaxReports"),
1212f9f9b87SWludzik, Jozef                 Eq(ReportManager::maxReports));
1222f9f9b87SWludzik, Jozef }
1232f9f9b87SWludzik, Jozef 
12460fee077SKrzysztof Grobelny TEST_F(TestReportManager, returnsPropertySupportedOperationTypes)
12560fee077SKrzysztof Grobelny {
12660fee077SKrzysztof Grobelny     EXPECT_THAT(
12760fee077SKrzysztof Grobelny         getProperty<std::vector<std::string>>("SupportedOperationTypes"),
12860fee077SKrzysztof Grobelny         UnorderedElementsAre("Maximum", "Minimum", "Average", "Summation"));
12960fee077SKrzysztof Grobelny }
13060fee077SKrzysztof Grobelny 
1312f9f9b87SWludzik, Jozef TEST_F(TestReportManager, addReport)
1322f9f9b87SWludzik, Jozef {
133dcc4e193SKrzysztof Grobelny     EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _));
134dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
1352f9f9b87SWludzik, Jozef         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
1362f9f9b87SWludzik, Jozef 
137e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
1382f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
1392f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(reportMock.getPath()));
1402f9f9b87SWludzik, Jozef }
1412f9f9b87SWludzik, Jozef 
142*a8182bebSKrzysztof Grobelny TEST_F(TestReportManager, addDisabledReport)
143*a8182bebSKrzysztof Grobelny {
144*a8182bebSKrzysztof Grobelny     reportParams.enabled(false);
145*a8182bebSKrzysztof Grobelny 
146*a8182bebSKrzysztof Grobelny     EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _));
147*a8182bebSKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
148*a8182bebSKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
149*a8182bebSKrzysztof Grobelny 
150*a8182bebSKrzysztof Grobelny     auto [ec, path] = addReport(reportParams);
151*a8182bebSKrzysztof Grobelny     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
152*a8182bebSKrzysztof Grobelny     EXPECT_THAT(path, Eq(reportMock.getPath()));
153*a8182bebSKrzysztof Grobelny }
154*a8182bebSKrzysztof Grobelny 
155*a8182bebSKrzysztof Grobelny TEST_F(TestReportManager, addReportWithOnlyDefaultParams)
156*a8182bebSKrzysztof Grobelny {
157*a8182bebSKrzysztof Grobelny     EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _));
158*a8182bebSKrzysztof Grobelny     EXPECT_CALL(reportFactoryMock,
159*a8182bebSKrzysztof Grobelny                 make("Report"s, "Report"s, ReportingType::onRequest,
160*a8182bebSKrzysztof Grobelny                      std::vector<ReportAction>{}, Milliseconds{}, 0,
161*a8182bebSKrzysztof Grobelny                      ReportUpdates::overwrite, _, _,
162*a8182bebSKrzysztof Grobelny                      std::vector<LabeledMetricParameters>{}, true, Readings{}))
163*a8182bebSKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
164*a8182bebSKrzysztof Grobelny 
165*a8182bebSKrzysztof Grobelny     auto [ec, path] = addReport(
166*a8182bebSKrzysztof Grobelny         std::vector<
167*a8182bebSKrzysztof Grobelny             std::pair<std::string, AddReportFutureVersionVariantForSet>>{});
168*a8182bebSKrzysztof Grobelny     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
169*a8182bebSKrzysztof Grobelny     EXPECT_THAT(path, Eq(reportMock.getPath()));
170*a8182bebSKrzysztof Grobelny }
171*a8182bebSKrzysztof Grobelny 
172f7ea2997SKrzysztof Grobelny TEST_F(TestReportManager, addOnChangeReport)
173f7ea2997SKrzysztof Grobelny {
174f7ea2997SKrzysztof Grobelny     EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _));
175f7ea2997SKrzysztof Grobelny     reportFactoryMock
176f7ea2997SKrzysztof Grobelny         .expectMake(reportParams.reportingType(ReportingType::onChange),
177f7ea2997SKrzysztof Grobelny                     Ref(*sut), Ref(storageMock))
178f7ea2997SKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
179f7ea2997SKrzysztof Grobelny 
180f7ea2997SKrzysztof Grobelny     auto [ec, path] = addReport(reportParams);
181f7ea2997SKrzysztof Grobelny     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
182f7ea2997SKrzysztof Grobelny     EXPECT_THAT(path, Eq(reportMock.getPath()));
183f7ea2997SKrzysztof Grobelny }
184f7ea2997SKrzysztof Grobelny 
185b8cc78ddSKrzysztof Grobelny TEST_F(TestReportManager, nameIsUsedToGenerateIdWhenIdIsEmptyInAddReport)
18632859b63SKarol Niczyj {
187b8cc78ddSKrzysztof Grobelny     reportParams.reportId("ReportName");
188b8cc78ddSKrzysztof Grobelny     reportParams.reportName("ReportName");
189b8cc78ddSKrzysztof Grobelny 
190b8cc78ddSKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock));
191b8cc78ddSKrzysztof Grobelny 
192b8cc78ddSKrzysztof Grobelny     auto [ec, path] = addReport(reportParams.reportId(""));
193b8cc78ddSKrzysztof Grobelny 
194b8cc78ddSKrzysztof Grobelny     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
195b8cc78ddSKrzysztof Grobelny     EXPECT_THAT(path, Eq("/ReportName"));
196b8cc78ddSKrzysztof Grobelny }
197b8cc78ddSKrzysztof Grobelny 
198b8cc78ddSKrzysztof Grobelny TEST_F(TestReportManager, nameIsUsedToGenerateIdWhenIdIsNamespace)
199b8cc78ddSKrzysztof Grobelny {
200b8cc78ddSKrzysztof Grobelny     reportParams.reportId("Prefix/ReportName");
201b8cc78ddSKrzysztof Grobelny     reportParams.reportName("ReportName");
202b8cc78ddSKrzysztof Grobelny 
203b8cc78ddSKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock));
204b8cc78ddSKrzysztof Grobelny 
205b8cc78ddSKrzysztof Grobelny     auto [ec, path] = addReport(reportParams.reportId("Prefix/"));
206b8cc78ddSKrzysztof Grobelny 
207b8cc78ddSKrzysztof Grobelny     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
208b8cc78ddSKrzysztof Grobelny     EXPECT_THAT(path, Eq("/Prefix/ReportName"));
209b8cc78ddSKrzysztof Grobelny }
210b8cc78ddSKrzysztof Grobelny 
211b8cc78ddSKrzysztof Grobelny TEST_F(TestReportManager, addReportWithMaxLengthId)
212b8cc78ddSKrzysztof Grobelny {
21332305f14SSzymon Dompke     std::string reportId = utils::string_utils::getMaxId();
214b8cc78ddSKrzysztof Grobelny     reportParams.reportId(reportId);
215dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock));
21632859b63SKarol Niczyj 
21732859b63SKarol Niczyj     auto [ec, path] = addReport(reportParams);
21832859b63SKarol Niczyj 
21932859b63SKarol Niczyj     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
220b8cc78ddSKrzysztof Grobelny     EXPECT_THAT(path, Eq("/"s + reportId));
22132859b63SKarol Niczyj }
22232859b63SKarol Niczyj 
22332305f14SSzymon Dompke TEST_F(TestReportManager, addReportWithMaxLengthPrefix)
22432305f14SSzymon Dompke {
22532305f14SSzymon Dompke     std::string reportId = utils::string_utils::getMaxPrefix() + "/MyId";
22632305f14SSzymon Dompke     reportParams.reportId(reportId);
22732305f14SSzymon Dompke     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock));
22832305f14SSzymon Dompke 
22932305f14SSzymon Dompke     auto [ec, path] = addReport(reportParams);
23032305f14SSzymon Dompke 
23132305f14SSzymon Dompke     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
23232305f14SSzymon Dompke     EXPECT_THAT(path, Eq("/"s + reportId));
23332305f14SSzymon Dompke }
23432305f14SSzymon Dompke 
23532305f14SSzymon Dompke TEST_F(TestReportManager, addReportWithMaxLengthName)
23632305f14SSzymon Dompke {
23732305f14SSzymon Dompke     reportParams.reportName(utils::string_utils::getMaxName());
23832305f14SSzymon Dompke     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock));
23932305f14SSzymon Dompke 
24032305f14SSzymon Dompke     auto [ec, path] = addReport(reportParams);
24132305f14SSzymon Dompke 
24232305f14SSzymon Dompke     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
24332305f14SSzymon Dompke     EXPECT_THAT(path, Eq("/"s + reportParams.reportId()));
24432305f14SSzymon Dompke }
24532305f14SSzymon Dompke 
24632305f14SSzymon Dompke TEST_F(TestReportManager, addReportWithMaxLengthMetricId)
24732305f14SSzymon Dompke {
24832305f14SSzymon Dompke     namespace ts = utils::tstring;
24932305f14SSzymon Dompke     std::vector<LabeledMetricParameters> newMetricParams{
25032305f14SSzymon Dompke         {LabeledMetricParameters{
25132305f14SSzymon Dompke             {LabeledSensorInfo{"Service",
25232305f14SSzymon Dompke                                "/xyz/openbmc_project/sensors/power/p1",
25332305f14SSzymon Dompke                                "metadata1"}},
25432305f14SSzymon Dompke             OperationType::avg,
25532305f14SSzymon Dompke             utils::string_utils::getMaxId(),
25632305f14SSzymon Dompke             CollectionTimeScope::point,
25732305f14SSzymon Dompke             CollectionDuration(Milliseconds(0u))}}};
25832305f14SSzymon Dompke 
25932305f14SSzymon Dompke     reportParams.metricParameters(newMetricParams);
26032305f14SSzymon Dompke     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock));
26132305f14SSzymon Dompke 
26232305f14SSzymon Dompke     auto [ec, path] = addReport(reportParams);
26332305f14SSzymon Dompke 
26432305f14SSzymon Dompke     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
26532305f14SSzymon Dompke     EXPECT_THAT(path, Eq("/"s + reportParams.reportId()));
26632305f14SSzymon Dompke }
26732305f14SSzymon Dompke 
26832305f14SSzymon Dompke TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongFullId)
26932859b63SKarol Niczyj {
270dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
27132859b63SKarol Niczyj         .Times(0);
27232859b63SKarol Niczyj 
273b8cc78ddSKrzysztof Grobelny     reportParams.reportId(
27432305f14SSzymon Dompke         std::string(utils::constants::maxReportFullIdLength + 1, 'z'));
27532305f14SSzymon Dompke 
27632305f14SSzymon Dompke     auto [ec, path] = addReport(reportParams);
27732305f14SSzymon Dompke 
27832305f14SSzymon Dompke     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
27932305f14SSzymon Dompke     EXPECT_THAT(path, Eq(std::string()));
28032305f14SSzymon Dompke }
28132305f14SSzymon Dompke 
28232305f14SSzymon Dompke TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongId)
28332305f14SSzymon Dompke {
28432305f14SSzymon Dompke     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
28532305f14SSzymon Dompke         .Times(0);
28632305f14SSzymon Dompke 
28732305f14SSzymon Dompke     reportParams.reportId(utils::string_utils::getTooLongId());
28832305f14SSzymon Dompke 
28932305f14SSzymon Dompke     auto [ec, path] = addReport(reportParams);
29032305f14SSzymon Dompke 
29132305f14SSzymon Dompke     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
29232305f14SSzymon Dompke     EXPECT_THAT(path, Eq(std::string()));
29332305f14SSzymon Dompke }
29432305f14SSzymon Dompke 
29532305f14SSzymon Dompke TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongPrefix)
29632305f14SSzymon Dompke {
29732305f14SSzymon Dompke     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
29832305f14SSzymon Dompke         .Times(0);
29932305f14SSzymon Dompke 
30032305f14SSzymon Dompke     reportParams.reportId(utils::string_utils::getTooLongPrefix() + "/MyId");
30132305f14SSzymon Dompke 
30232305f14SSzymon Dompke     auto [ec, path] = addReport(reportParams);
30332305f14SSzymon Dompke 
30432305f14SSzymon Dompke     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
30532305f14SSzymon Dompke     EXPECT_THAT(path, Eq(std::string()));
30632305f14SSzymon Dompke }
30732305f14SSzymon Dompke 
30832305f14SSzymon Dompke TEST_F(TestReportManager, DISABLED_failToAddReportWithTooManyPrefixes)
30932305f14SSzymon Dompke {
31032305f14SSzymon Dompke     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
31132305f14SSzymon Dompke         .Times(0);
31232305f14SSzymon Dompke 
31332305f14SSzymon Dompke     std::string reportId;
31432305f14SSzymon Dompke     for (size_t i = 0; i < utils::constants::maxPrefixesInId + 1; i++)
31532305f14SSzymon Dompke     {
31632305f14SSzymon Dompke         reportId += "prefix/";
31732305f14SSzymon Dompke     }
31832305f14SSzymon Dompke     reportId += "MyId";
31932305f14SSzymon Dompke 
32032305f14SSzymon Dompke     reportParams.reportId(reportId);
32132305f14SSzymon Dompke 
32232305f14SSzymon Dompke     auto [ec, path] = addReport(reportParams);
32332305f14SSzymon Dompke 
32432305f14SSzymon Dompke     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
32532305f14SSzymon Dompke     EXPECT_THAT(path, Eq(std::string()));
32632305f14SSzymon Dompke }
32732305f14SSzymon Dompke 
32832305f14SSzymon Dompke TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongName)
32932305f14SSzymon Dompke {
33032305f14SSzymon Dompke     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
33132305f14SSzymon Dompke         .Times(0);
33232305f14SSzymon Dompke 
33332305f14SSzymon Dompke     reportParams.reportName(utils::string_utils::getTooLongName());
33432305f14SSzymon Dompke 
33532305f14SSzymon Dompke     auto [ec, path] = addReport(reportParams);
33632305f14SSzymon Dompke 
33732305f14SSzymon Dompke     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
33832305f14SSzymon Dompke     EXPECT_THAT(path, Eq(std::string()));
33932305f14SSzymon Dompke }
34032305f14SSzymon Dompke 
34132305f14SSzymon Dompke TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongMetricId)
34232305f14SSzymon Dompke {
34332305f14SSzymon Dompke     namespace ts = utils::tstring;
34432305f14SSzymon Dompke 
34532305f14SSzymon Dompke     std::vector<LabeledMetricParameters> newMetricParams{
34632305f14SSzymon Dompke         {LabeledMetricParameters{
34732305f14SSzymon Dompke             {LabeledSensorInfo{"Service",
34832305f14SSzymon Dompke                                "/xyz/openbmc_project/sensors/power/p1",
34932305f14SSzymon Dompke                                "metadata1"}},
35032305f14SSzymon Dompke             OperationType::avg,
35132305f14SSzymon Dompke             utils::string_utils::getTooLongId(),
35232305f14SSzymon Dompke             CollectionTimeScope::point,
35332305f14SSzymon Dompke             CollectionDuration(Milliseconds(0u))}}};
35432305f14SSzymon Dompke 
35532305f14SSzymon Dompke     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
35632305f14SSzymon Dompke         .Times(0);
35732305f14SSzymon Dompke 
35832305f14SSzymon Dompke     reportParams.metricParameters(newMetricParams);
35932859b63SKarol Niczyj 
36032859b63SKarol Niczyj     auto [ec, path] = addReport(reportParams);
36132859b63SKarol Niczyj 
36232859b63SKarol Niczyj     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
36332859b63SKarol Niczyj     EXPECT_THAT(path, Eq(std::string()));
36432859b63SKarol Niczyj }
36532859b63SKarol Niczyj 
366e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportTwice)
3672f9f9b87SWludzik, Jozef {
368dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
369d2238194SKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
3702f9f9b87SWludzik, Jozef 
371e2362796SWludzik, Jozef     addReport(reportParams);
3722f9f9b87SWludzik, Jozef 
373e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
37432859b63SKarol Niczyj 
3752f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::file_exists));
3762f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
3772f9f9b87SWludzik, Jozef }
3782f9f9b87SWludzik, Jozef 
379e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidInterval)
3802f9f9b87SWludzik, Jozef {
381dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
382d2238194SKrzysztof Grobelny         .Times(0);
3832f9f9b87SWludzik, Jozef 
38451497a0cSKrzysztof Grobelny     reportParams.reportingType(ReportingType::periodic);
385973b4bb0SKrzysztof Grobelny     reportParams.interval(ReportManager::minInterval - 1ms);
3862f9f9b87SWludzik, Jozef 
387e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
38832859b63SKarol Niczyj 
3892f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
3902f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
3912f9f9b87SWludzik, Jozef }
3922f9f9b87SWludzik, Jozef 
393bc766b4dSWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidReportingType)
394bc766b4dSWludzik, Jozef {
395dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
396bc766b4dSWludzik, Jozef         .Times(0);
397bc766b4dSWludzik, Jozef 
398*a8182bebSKrzysztof Grobelny     auto [ec, path] = addReport({{"Name", reportParams.reportName()},
399*a8182bebSKrzysztof Grobelny                                  {"ReportingType", "InvalidReportingType"}});
40032859b63SKarol Niczyj 
401bc766b4dSWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
402bc766b4dSWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
403bc766b4dSWludzik, Jozef }
404bc766b4dSWludzik, Jozef 
405cd5b0b7eSAnkita Vilas Gawade TEST_F(TestReportManager,
406cd5b0b7eSAnkita Vilas Gawade        DISABLED_failToAddReportWithMoreMetricPropertiesThanExpected)
407bc766b4dSWludzik, Jozef {
408dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
409bc766b4dSWludzik, Jozef         .Times(0);
410bc766b4dSWludzik, Jozef 
411cd5b0b7eSAnkita Vilas Gawade     reportParams.metricParameters(
412cd5b0b7eSAnkita Vilas Gawade         std::vector<LabeledMetricParameters>{{LabeledMetricParameters{
41394f71c51SSzymon Dompke             {LabeledSensorInfo{"Service",
414cd5b0b7eSAnkita Vilas Gawade                                "/xyz/openbmc_project/sensors/power/p1",
415cd5b0b7eSAnkita Vilas Gawade                                "Metadata1"}},
41660fee077SKrzysztof Grobelny             OperationType::avg,
417cd5b0b7eSAnkita Vilas Gawade             "MetricId1",
418cd5b0b7eSAnkita Vilas Gawade             CollectionTimeScope::point,
419cd5b0b7eSAnkita Vilas Gawade             CollectionDuration(Milliseconds(0u))}}});
420cd5b0b7eSAnkita Vilas Gawade 
421dcc4e193SKrzysztof Grobelny     auto metricParams = reportParams.metricParameters();
422cd5b0b7eSAnkita Vilas Gawade     auto& metricParamsVec =
423cd5b0b7eSAnkita Vilas Gawade         metricParams[0].at_label<utils::tstring::SensorPath>();
424cd5b0b7eSAnkita Vilas Gawade 
425cd5b0b7eSAnkita Vilas Gawade     for (size_t i = 0; i < ReportManager::maxNumberMetrics; i++)
426bc766b4dSWludzik, Jozef     {
42794f71c51SSzymon Dompke         metricParamsVec.emplace_back(LabeledSensorInfo{
428cd5b0b7eSAnkita Vilas Gawade             "Service", "/xyz/openbmc_project/sensors/power/p1", "Metadata1"});
429bc766b4dSWludzik, Jozef     }
430cd5b0b7eSAnkita Vilas Gawade 
431dcc4e193SKrzysztof Grobelny     reportParams.metricParameters(std::move(metricParams));
432bc766b4dSWludzik, Jozef 
433bc766b4dSWludzik, Jozef     auto [ec, path] = addReport(reportParams);
43432859b63SKarol Niczyj 
435bc766b4dSWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::argument_list_too_long));
436bc766b4dSWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
437bc766b4dSWludzik, Jozef }
438bc766b4dSWludzik, Jozef 
439cd5b0b7eSAnkita Vilas Gawade TEST_F(TestReportManager, DISABLED_failToAddReportWithMoreMetricsThanExpected)
440cd5b0b7eSAnkita Vilas Gawade {
441cd5b0b7eSAnkita Vilas Gawade     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
442cd5b0b7eSAnkita Vilas Gawade         .Times(0);
443cd5b0b7eSAnkita Vilas Gawade 
444cd5b0b7eSAnkita Vilas Gawade     auto metricParams = std::vector<LabeledMetricParameters>{};
445cd5b0b7eSAnkita Vilas Gawade 
446cd5b0b7eSAnkita Vilas Gawade     for (size_t i = 0; i < ReportManager::maxNumberMetrics + 1; i++)
447cd5b0b7eSAnkita Vilas Gawade     {
448cd5b0b7eSAnkita Vilas Gawade         metricParams.emplace_back(
449cd5b0b7eSAnkita Vilas Gawade             LabeledMetricParameters{{},
45060fee077SKrzysztof Grobelny                                     OperationType::avg,
451cd5b0b7eSAnkita Vilas Gawade                                     "MetricId1",
452cd5b0b7eSAnkita Vilas Gawade                                     CollectionTimeScope::point,
453cd5b0b7eSAnkita Vilas Gawade                                     CollectionDuration(Milliseconds(0u))});
454cd5b0b7eSAnkita Vilas Gawade     }
455cd5b0b7eSAnkita Vilas Gawade 
456cd5b0b7eSAnkita Vilas Gawade     reportParams.metricParameters(std::move(metricParams));
457cd5b0b7eSAnkita Vilas Gawade 
458cd5b0b7eSAnkita Vilas Gawade     auto [ec, path] = addReport(reportParams);
459cd5b0b7eSAnkita Vilas Gawade 
460cd5b0b7eSAnkita Vilas Gawade     EXPECT_THAT(ec.value(), Eq(boost::system::errc::argument_list_too_long));
461cd5b0b7eSAnkita Vilas Gawade     EXPECT_THAT(path, Eq(std::string()));
462cd5b0b7eSAnkita Vilas Gawade }
463cd5b0b7eSAnkita Vilas Gawade 
464cd5b0b7eSAnkita Vilas Gawade TEST_F(TestReportManager, DISABLED_failToAddReportWithAppendLimitGreaterThanMax)
465cd5b0b7eSAnkita Vilas Gawade {
466cd5b0b7eSAnkita Vilas Gawade     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
467cd5b0b7eSAnkita Vilas Gawade         .Times(0);
468cd5b0b7eSAnkita Vilas Gawade 
469cd5b0b7eSAnkita Vilas Gawade     reportParams.appendLimit(ReportManager::maxAppendLimit + 1);
470cd5b0b7eSAnkita Vilas Gawade 
471cd5b0b7eSAnkita Vilas Gawade     auto [ec, path] = addReport(reportParams);
472cd5b0b7eSAnkita Vilas Gawade 
473cd5b0b7eSAnkita Vilas Gawade     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
474cd5b0b7eSAnkita Vilas Gawade     EXPECT_THAT(path, Eq(std::string()));
475cd5b0b7eSAnkita Vilas Gawade }
476cd5b0b7eSAnkita Vilas Gawade 
477e6c417cfSKrzysztof Grobelny TEST_F(TestReportManager, addReportWithAppendLimitEqualToUint64MaxIsAllowed)
478e6c417cfSKrzysztof Grobelny {
479e6c417cfSKrzysztof Grobelny     reportParams.appendLimit(std::numeric_limits<uint64_t>::max());
480e6c417cfSKrzysztof Grobelny 
481e6c417cfSKrzysztof Grobelny     EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _));
482e6c417cfSKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
483e6c417cfSKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
484e6c417cfSKrzysztof Grobelny 
485e6c417cfSKrzysztof Grobelny     auto [ec, path] = addReport(reportParams);
486e6c417cfSKrzysztof Grobelny     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
487e6c417cfSKrzysztof Grobelny     EXPECT_THAT(path, Eq(reportMock.getPath()));
488e6c417cfSKrzysztof Grobelny }
489e6c417cfSKrzysztof Grobelny 
490e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWhenMaxReportIsReached)
4912f9f9b87SWludzik, Jozef {
492dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
4932f9f9b87SWludzik, Jozef         .Times(ReportManager::maxReports);
4942f9f9b87SWludzik, Jozef 
4952f9f9b87SWludzik, Jozef     for (size_t i = 0; i < ReportManager::maxReports; i++)
4962f9f9b87SWludzik, Jozef     {
497b8cc78ddSKrzysztof Grobelny         reportParams.reportId(reportParams.reportName() + std::to_string(i));
4982f9f9b87SWludzik, Jozef 
499e2362796SWludzik, Jozef         auto [ec, path] = addReport(reportParams);
5002f9f9b87SWludzik, Jozef         EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
5012f9f9b87SWludzik, Jozef     }
5022f9f9b87SWludzik, Jozef 
503b8cc78ddSKrzysztof Grobelny     reportParams.reportId(reportParams.reportName() +
504e2362796SWludzik, Jozef                           std::to_string(ReportManager::maxReports));
505e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
50632859b63SKarol Niczyj 
5072f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::too_many_files_open));
5082f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
5092f9f9b87SWludzik, Jozef }
5102f9f9b87SWludzik, Jozef 
5112f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removeReport)
5122f9f9b87SWludzik, Jozef {
5132f9f9b87SWludzik, Jozef     {
5142f9f9b87SWludzik, Jozef         InSequence seq;
515dcc4e193SKrzysztof Grobelny         EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _));
516dcc4e193SKrzysztof Grobelny         reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
5172f9f9b87SWludzik, Jozef             .WillOnce(Return(ByMove(std::move(reportMockPtr))));
5182f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
5192f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
5202f9f9b87SWludzik, Jozef     }
5212f9f9b87SWludzik, Jozef 
522e2362796SWludzik, Jozef     addReport(reportParams);
523e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
5242f9f9b87SWludzik, Jozef     checkPoint.Call("end");
5252f9f9b87SWludzik, Jozef }
5262f9f9b87SWludzik, Jozef 
5272f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removingReportThatIsNotInContainerHasNoEffect)
5282f9f9b87SWludzik, Jozef {
5292f9f9b87SWludzik, Jozef     {
5302f9f9b87SWludzik, Jozef         InSequence seq;
5312f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
5322f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
5332f9f9b87SWludzik, Jozef     }
5342f9f9b87SWludzik, Jozef 
535e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
5362f9f9b87SWludzik, Jozef     checkPoint.Call("end");
5372f9f9b87SWludzik, Jozef }
5382f9f9b87SWludzik, Jozef 
5392f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removingSameReportTwiceHasNoSideEffect)
5402f9f9b87SWludzik, Jozef {
5412f9f9b87SWludzik, Jozef     {
5422f9f9b87SWludzik, Jozef         InSequence seq;
543dcc4e193SKrzysztof Grobelny         EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _));
544dcc4e193SKrzysztof Grobelny         reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
5452f9f9b87SWludzik, Jozef             .WillOnce(Return(ByMove(std::move(reportMockPtr))));
5462f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
5472f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
5482f9f9b87SWludzik, Jozef     }
5492f9f9b87SWludzik, Jozef 
550e2362796SWludzik, Jozef     addReport(reportParams);
551e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
552e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
5532f9f9b87SWludzik, Jozef     checkPoint.Call("end");
5542f9f9b87SWludzik, Jozef }
555e2362796SWludzik, Jozef 
556e8fc5751SKrzysztof Grobelny class TestReportManagerWithAggregationOperationType :
557e8fc5751SKrzysztof Grobelny     public TestReportManager,
558e8fc5751SKrzysztof Grobelny     public WithParamInterface<OperationType>
559e8fc5751SKrzysztof Grobelny {
560e8fc5751SKrzysztof Grobelny   public:
561e8fc5751SKrzysztof Grobelny     OperationType operationType = GetParam();
562e8fc5751SKrzysztof Grobelny };
563e8fc5751SKrzysztof Grobelny 
564e8fc5751SKrzysztof Grobelny INSTANTIATE_TEST_SUITE_P(_, TestReportManagerWithAggregationOperationType,
56560fee077SKrzysztof Grobelny                          Values(OperationType::max, OperationType::min,
56660fee077SKrzysztof Grobelny                                 OperationType::avg, OperationType::sum));
567e8fc5751SKrzysztof Grobelny 
568e8fc5751SKrzysztof Grobelny TEST_P(TestReportManagerWithAggregationOperationType,
569e8fc5751SKrzysztof Grobelny        addReportWithDifferentOperationTypes)
570e8fc5751SKrzysztof Grobelny {
571dcc4e193SKrzysztof Grobelny     reportParams.metricParameters(
572dcc4e193SKrzysztof Grobelny         std::vector<LabeledMetricParameters>{{LabeledMetricParameters{
57394f71c51SSzymon Dompke             {LabeledSensorInfo{"Service",
574b8cc78ddSKrzysztof Grobelny                                "/xyz/openbmc_project/sensors/power/p1",
575b8cc78ddSKrzysztof Grobelny                                "Metadata1"}},
576dcc4e193SKrzysztof Grobelny             operationType,
577e8fc5751SKrzysztof Grobelny             "MetricId1",
578dcc4e193SKrzysztof Grobelny             CollectionTimeScope::point,
579dcc4e193SKrzysztof Grobelny             CollectionDuration(Milliseconds(0u))}}});
580e8fc5751SKrzysztof Grobelny 
581dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
582e8fc5751SKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
583e8fc5751SKrzysztof Grobelny 
584e8fc5751SKrzysztof Grobelny     auto [ec, path] = addReport(reportParams);
58532859b63SKarol Niczyj 
586e8fc5751SKrzysztof Grobelny     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
587b8cc78ddSKrzysztof Grobelny     EXPECT_THAT(path, Eq("/"s + reportParams.reportId()));
588e8fc5751SKrzysztof Grobelny }
589e8fc5751SKrzysztof Grobelny 
590e2362796SWludzik, Jozef class TestReportManagerStorage : public TestReportManager
591e2362796SWludzik, Jozef {
592e2362796SWludzik, Jozef   public:
593e2362796SWludzik, Jozef     using FilePath = interfaces::JsonStorage::FilePath;
594e2362796SWludzik, Jozef     using DirectoryPath = interfaces::JsonStorage::DirectoryPath;
595e2362796SWludzik, Jozef 
596e2362796SWludzik, Jozef     void SetUp() override
597e2362796SWludzik, Jozef     {
598dcc4e193SKrzysztof Grobelny         EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _)).Times(0);
599dcc4e193SKrzysztof Grobelny 
600e2362796SWludzik, Jozef         ON_CALL(storageMock, list())
601e2362796SWludzik, Jozef             .WillByDefault(Return(std::vector<FilePath>{FilePath("report1")}));
602e2362796SWludzik, Jozef         ON_CALL(storageMock, load(FilePath("report1")))
6036ccfcbf5SKrzysztof Grobelny             .WillByDefault(InvokeWithoutArgs([this] { return data; }));
604e2362796SWludzik, Jozef     }
605e2362796SWludzik, Jozef 
606e2362796SWludzik, Jozef     void makeReportManager()
607e2362796SWludzik, Jozef     {
608e6d48874SKrzysztof Grobelny         sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr),
609e6d48874SKrzysztof Grobelny                                               std::move(storageMockPtr),
610e6d48874SKrzysztof Grobelny                                               DbusEnvironment::getObjServer());
611e2362796SWludzik, Jozef     }
612e2362796SWludzik, Jozef 
613e2362796SWludzik, Jozef     nlohmann::json data = nlohmann::json{
6147e098e93SLukasz Kazmierczak         {"Enabled", reportParams.enabled()},
615e2362796SWludzik, Jozef         {"Version", Report::reportVersion},
616b8cc78ddSKrzysztof Grobelny         {"Id", reportParams.reportId()},
617e2362796SWludzik, Jozef         {"Name", reportParams.reportName()},
61851497a0cSKrzysztof Grobelny         {"ReportingType", utils::toUnderlying(reportParams.reportingType())},
61951497a0cSKrzysztof Grobelny         {"ReportActions", reportParams.reportActions()},
620e2362796SWludzik, Jozef         {"Interval", reportParams.interval().count()},
62151497a0cSKrzysztof Grobelny         {"ReportUpdates", utils::toUnderlying(reportParams.reportUpdates())},
6223eb56865SSzymon Dompke         {"AppendLimit", reportParams.appendLimit()},
623dcc4e193SKrzysztof Grobelny         {"ReadingParameters", reportParams.metricParameters()}};
624e2362796SWludzik, Jozef };
625e2362796SWludzik, Jozef 
626e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage, reportManagerCtorAddReportFromStorage)
627e2362796SWludzik, Jozef {
628dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, _, Ref(storageMock));
629e2362796SWludzik, Jozef 
630e2362796SWludzik, Jozef     makeReportManager();
631e2362796SWludzik, Jozef }
632e2362796SWludzik, Jozef 
633e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage,
634e2362796SWludzik, Jozef        reportManagerCtorRemoveFileIfVersionDoesNotMatch)
635e2362796SWludzik, Jozef {
636e2362796SWludzik, Jozef     data["Version"] = Report::reportVersion - 1;
637e2362796SWludzik, Jozef 
638e2362796SWludzik, Jozef     EXPECT_CALL(storageMock, remove(FilePath("report1")));
639e2362796SWludzik, Jozef 
640e2362796SWludzik, Jozef     makeReportManager();
641e2362796SWludzik, Jozef }
642e2362796SWludzik, Jozef 
643e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage,
644e2362796SWludzik, Jozef        reportManagerCtorRemoveFileIfIntervalHasWrongType)
645e2362796SWludzik, Jozef {
646e2362796SWludzik, Jozef     data["Interval"] = "1000";
647e2362796SWludzik, Jozef 
648e2362796SWludzik, Jozef     EXPECT_CALL(storageMock, remove(FilePath("report1")));
649e2362796SWludzik, Jozef 
650e2362796SWludzik, Jozef     makeReportManager();
651e2362796SWludzik, Jozef }
652