xref: /openbmc/telemetry/tests/src/test_report_manager.cpp (revision 3eb56865714cd591b24d2bdef83307508aa072c5)
12f9f9b87SWludzik, Jozef #include "dbus_environment.hpp"
2d2238194SKrzysztof Grobelny #include "helpers.hpp"
3e2362796SWludzik, Jozef #include "mocks/json_storage_mock.hpp"
42f9f9b87SWludzik, Jozef #include "mocks/report_factory_mock.hpp"
5e2362796SWludzik, Jozef #include "params/report_params.hpp"
6e2362796SWludzik, Jozef #include "report.hpp"
72f9f9b87SWludzik, Jozef #include "report_manager.hpp"
8e8fc5751SKrzysztof Grobelny #include "utils/conversion.hpp"
9e2362796SWludzik, Jozef #include "utils/transform.hpp"
102f9f9b87SWludzik, Jozef 
112f9f9b87SWludzik, Jozef using namespace testing;
12e8fc5751SKrzysztof Grobelny using namespace std::string_literals;
13e2362796SWludzik, Jozef using namespace std::chrono_literals;
142f9f9b87SWludzik, Jozef 
152f9f9b87SWludzik, Jozef class TestReportManager : public Test
162f9f9b87SWludzik, Jozef {
172f9f9b87SWludzik, Jozef   public:
18e2362796SWludzik, Jozef     ReportParams reportParams;
192f9f9b87SWludzik, Jozef 
202f9f9b87SWludzik, Jozef     std::unique_ptr<ReportFactoryMock> reportFactoryMockPtr =
212f9f9b87SWludzik, Jozef         std::make_unique<StrictMock<ReportFactoryMock>>();
222f9f9b87SWludzik, Jozef     ReportFactoryMock& reportFactoryMock = *reportFactoryMockPtr;
23e2362796SWludzik, Jozef 
24e2362796SWludzik, Jozef     std::unique_ptr<StorageMock> storageMockPtr =
25e2362796SWludzik, Jozef         std::make_unique<NiceMock<StorageMock>>();
26e2362796SWludzik, Jozef     StorageMock& storageMock = *storageMockPtr;
27e2362796SWludzik, Jozef 
28d2238194SKrzysztof Grobelny     std::unique_ptr<ReportMock> reportMockPtr =
29d2238194SKrzysztof Grobelny         std::make_unique<NiceMock<ReportMock>>(reportParams.reportName());
30d2238194SKrzysztof Grobelny     ReportMock& reportMock = *reportMockPtr;
31d2238194SKrzysztof Grobelny 
32e2362796SWludzik, Jozef     std::unique_ptr<ReportManager> sut;
332f9f9b87SWludzik, Jozef 
342f9f9b87SWludzik, Jozef     MockFunction<void(std::string)> checkPoint;
352f9f9b87SWludzik, Jozef 
36e2362796SWludzik, Jozef     void SetUp() override
37e2362796SWludzik, Jozef     {
38dcc4e193SKrzysztof Grobelny         EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _))
39dcc4e193SKrzysztof Grobelny             .Times(AnyNumber());
40dcc4e193SKrzysztof Grobelny 
41e2362796SWludzik, Jozef         sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr),
42e2362796SWludzik, Jozef                                               std::move(storageMockPtr),
43e2362796SWludzik, Jozef                                               DbusEnvironment::getObjServer());
44e2362796SWludzik, Jozef     }
45e2362796SWludzik, Jozef 
462f9f9b87SWludzik, Jozef     void TearDown() override
472f9f9b87SWludzik, Jozef     {
482f9f9b87SWludzik, Jozef         DbusEnvironment::synchronizeIoc();
492f9f9b87SWludzik, Jozef     }
502f9f9b87SWludzik, Jozef 
512f9f9b87SWludzik, Jozef     std::pair<boost::system::error_code, std::string>
52e2362796SWludzik, Jozef         addReport(const ReportParams& params)
532f9f9b87SWludzik, Jozef     {
542f9f9b87SWludzik, Jozef         std::promise<std::pair<boost::system::error_code, std::string>>
552f9f9b87SWludzik, Jozef             addReportPromise;
562f9f9b87SWludzik, Jozef         DbusEnvironment::getBus()->async_method_call(
572f9f9b87SWludzik, Jozef             [&addReportPromise](boost::system::error_code ec,
582f9f9b87SWludzik, Jozef                                 const std::string& path) {
592f9f9b87SWludzik, Jozef                 addReportPromise.set_value({ec, path});
602f9f9b87SWludzik, Jozef             },
612f9f9b87SWludzik, Jozef             DbusEnvironment::serviceName(), ReportManager::reportManagerPath,
62dcc4e193SKrzysztof Grobelny             ReportManager::reportManagerIfaceName, "AddReportFutureVersion",
63*3eb56865SSzymon Dompke             params.reportName(), params.reportingType(), params.reportUpdates(),
64*3eb56865SSzymon Dompke             params.appendLimit(), params.emitReadingUpdate(),
65*3eb56865SSzymon Dompke             params.logToMetricReportCollection(), params.interval().count(),
66dcc4e193SKrzysztof Grobelny             toReadingParameters(params.metricParameters()));
67f32f6fefSKrzysztof Grobelny         return DbusEnvironment::waitForFuture(addReportPromise.get_future());
682f9f9b87SWludzik, Jozef     }
692f9f9b87SWludzik, Jozef 
702f9f9b87SWludzik, Jozef     template <class T>
71e28aa53dSSzymon Dompke     static T getProperty(const std::string& property)
722f9f9b87SWludzik, Jozef     {
73e28aa53dSSzymon Dompke         return DbusEnvironment::getProperty<T>(
742f9f9b87SWludzik, Jozef             ReportManager::reportManagerPath,
75e28aa53dSSzymon Dompke             ReportManager::reportManagerIfaceName, property);
7632859b63SKarol Niczyj     }
772f9f9b87SWludzik, Jozef };
782f9f9b87SWludzik, Jozef 
792f9f9b87SWludzik, Jozef TEST_F(TestReportManager, minInterval)
802f9f9b87SWludzik, Jozef {
812f9f9b87SWludzik, Jozef     EXPECT_THAT(getProperty<uint64_t>("MinInterval"),
82dcc4e193SKrzysztof Grobelny                 Eq(ReportManager::minInterval.count()));
832f9f9b87SWludzik, Jozef }
842f9f9b87SWludzik, Jozef 
852f9f9b87SWludzik, Jozef TEST_F(TestReportManager, maxReports)
862f9f9b87SWludzik, Jozef {
87503c1589SWludzik, Jozef     EXPECT_THAT(getProperty<size_t>("MaxReports"),
882f9f9b87SWludzik, Jozef                 Eq(ReportManager::maxReports));
892f9f9b87SWludzik, Jozef }
902f9f9b87SWludzik, Jozef 
912f9f9b87SWludzik, Jozef TEST_F(TestReportManager, addReport)
922f9f9b87SWludzik, Jozef {
93dcc4e193SKrzysztof Grobelny     EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _));
94dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
952f9f9b87SWludzik, Jozef         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
962f9f9b87SWludzik, Jozef 
97e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
982f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
992f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(reportMock.getPath()));
1002f9f9b87SWludzik, Jozef }
1012f9f9b87SWludzik, Jozef 
10232859b63SKarol Niczyj TEST_F(TestReportManager, addReportWithMaxLengthName)
10332859b63SKarol Niczyj {
104e28aa53dSSzymon Dompke     std::string reportName(ReportManager::maxReportNameLength, 'z');
10532859b63SKarol Niczyj     reportParams.reportName(reportName);
106dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock));
10732859b63SKarol Niczyj 
10832859b63SKarol Niczyj     auto [ec, path] = addReport(reportParams);
10932859b63SKarol Niczyj 
11032859b63SKarol Niczyj     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
11132859b63SKarol Niczyj     EXPECT_THAT(path, Eq("/"s + reportName));
11232859b63SKarol Niczyj }
11332859b63SKarol Niczyj 
11432859b63SKarol Niczyj TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongName)
11532859b63SKarol Niczyj {
116dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
11732859b63SKarol Niczyj         .Times(0);
11832859b63SKarol Niczyj 
11932859b63SKarol Niczyj     reportParams.reportName(
120e28aa53dSSzymon Dompke         std::string(ReportManager::maxReportNameLength + 1, 'z'));
12132859b63SKarol Niczyj 
12232859b63SKarol Niczyj     auto [ec, path] = addReport(reportParams);
12332859b63SKarol Niczyj 
12432859b63SKarol Niczyj     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
12532859b63SKarol Niczyj     EXPECT_THAT(path, Eq(std::string()));
12632859b63SKarol Niczyj }
12732859b63SKarol Niczyj 
128e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportTwice)
1292f9f9b87SWludzik, Jozef {
130dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
131d2238194SKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
1322f9f9b87SWludzik, Jozef 
133e2362796SWludzik, Jozef     addReport(reportParams);
1342f9f9b87SWludzik, Jozef 
135e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
13632859b63SKarol Niczyj 
1372f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::file_exists));
1382f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
1392f9f9b87SWludzik, Jozef }
1402f9f9b87SWludzik, Jozef 
141e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidInterval)
1422f9f9b87SWludzik, Jozef {
143dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
144d2238194SKrzysztof Grobelny         .Times(0);
1452f9f9b87SWludzik, Jozef 
146bc766b4dSWludzik, Jozef     reportParams.reportingType("Periodic");
147e2362796SWludzik, Jozef     reportParams.interval(reportParams.interval() - 1ms);
1482f9f9b87SWludzik, Jozef 
149e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
15032859b63SKarol Niczyj 
1512f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
1522f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
1532f9f9b87SWludzik, Jozef }
1542f9f9b87SWludzik, Jozef 
155bc766b4dSWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidReportingType)
156bc766b4dSWludzik, Jozef {
157dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
158bc766b4dSWludzik, Jozef         .Times(0);
159bc766b4dSWludzik, Jozef 
160bc766b4dSWludzik, Jozef     reportParams.reportingType("Invalid");
161bc766b4dSWludzik, Jozef 
162bc766b4dSWludzik, Jozef     auto [ec, path] = addReport(reportParams);
16332859b63SKarol Niczyj 
164bc766b4dSWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
165bc766b4dSWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
166bc766b4dSWludzik, Jozef }
167bc766b4dSWludzik, Jozef 
168bc766b4dSWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithMoreSensorsThanExpected)
169bc766b4dSWludzik, Jozef {
170dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
171bc766b4dSWludzik, Jozef         .Times(0);
172bc766b4dSWludzik, Jozef 
173dcc4e193SKrzysztof Grobelny     auto metricParams = reportParams.metricParameters();
174bc766b4dSWludzik, Jozef     for (size_t i = 0; i < ReportManager::maxReadingParams + 1; i++)
175bc766b4dSWludzik, Jozef     {
176dcc4e193SKrzysztof Grobelny         metricParams.push_back(metricParams.front());
177bc766b4dSWludzik, Jozef     }
178dcc4e193SKrzysztof Grobelny     reportParams.metricParameters(std::move(metricParams));
179bc766b4dSWludzik, Jozef 
180bc766b4dSWludzik, Jozef     auto [ec, path] = addReport(reportParams);
18132859b63SKarol Niczyj 
182bc766b4dSWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::argument_list_too_long));
183bc766b4dSWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
184bc766b4dSWludzik, Jozef }
185bc766b4dSWludzik, Jozef 
186e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWhenMaxReportIsReached)
1872f9f9b87SWludzik, Jozef {
188dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock))
1892f9f9b87SWludzik, Jozef         .Times(ReportManager::maxReports);
1902f9f9b87SWludzik, Jozef 
1912f9f9b87SWludzik, Jozef     for (size_t i = 0; i < ReportManager::maxReports; i++)
1922f9f9b87SWludzik, Jozef     {
193e2362796SWludzik, Jozef         reportParams.reportName(reportParams.reportName() + std::to_string(i));
1942f9f9b87SWludzik, Jozef 
195e2362796SWludzik, Jozef         auto [ec, path] = addReport(reportParams);
1962f9f9b87SWludzik, Jozef         EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
1972f9f9b87SWludzik, Jozef     }
1982f9f9b87SWludzik, Jozef 
199e2362796SWludzik, Jozef     reportParams.reportName(reportParams.reportName() +
200e2362796SWludzik, Jozef                             std::to_string(ReportManager::maxReports));
201e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
20232859b63SKarol Niczyj 
2032f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::too_many_files_open));
2042f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
2052f9f9b87SWludzik, Jozef }
2062f9f9b87SWludzik, Jozef 
2072f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removeReport)
2082f9f9b87SWludzik, Jozef {
2092f9f9b87SWludzik, Jozef     {
2102f9f9b87SWludzik, Jozef         InSequence seq;
211dcc4e193SKrzysztof Grobelny         EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _));
212dcc4e193SKrzysztof Grobelny         reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
2132f9f9b87SWludzik, Jozef             .WillOnce(Return(ByMove(std::move(reportMockPtr))));
2142f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
2152f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
2162f9f9b87SWludzik, Jozef     }
2172f9f9b87SWludzik, Jozef 
218e2362796SWludzik, Jozef     addReport(reportParams);
219e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
2202f9f9b87SWludzik, Jozef     checkPoint.Call("end");
2212f9f9b87SWludzik, Jozef }
2222f9f9b87SWludzik, Jozef 
2232f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removingReportThatIsNotInContainerHasNoEffect)
2242f9f9b87SWludzik, Jozef {
2252f9f9b87SWludzik, Jozef     {
2262f9f9b87SWludzik, Jozef         InSequence seq;
2272f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
2282f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
2292f9f9b87SWludzik, Jozef     }
2302f9f9b87SWludzik, Jozef 
231e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
2322f9f9b87SWludzik, Jozef     checkPoint.Call("end");
2332f9f9b87SWludzik, Jozef }
2342f9f9b87SWludzik, Jozef 
2352f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removingSameReportTwiceHasNoSideEffect)
2362f9f9b87SWludzik, Jozef {
2372f9f9b87SWludzik, Jozef     {
2382f9f9b87SWludzik, Jozef         InSequence seq;
239dcc4e193SKrzysztof Grobelny         EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _));
240dcc4e193SKrzysztof Grobelny         reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
2412f9f9b87SWludzik, Jozef             .WillOnce(Return(ByMove(std::move(reportMockPtr))));
2422f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
2432f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
2442f9f9b87SWludzik, Jozef     }
2452f9f9b87SWludzik, Jozef 
246e2362796SWludzik, Jozef     addReport(reportParams);
247e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
248e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
2492f9f9b87SWludzik, Jozef     checkPoint.Call("end");
2502f9f9b87SWludzik, Jozef }
251e2362796SWludzik, Jozef 
252d960e1f3SWludzik, Jozef TEST_F(TestReportManager, updateReportCallsUpdateReadingsForExistReport)
253d960e1f3SWludzik, Jozef {
254dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
255d960e1f3SWludzik, Jozef         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
256d960e1f3SWludzik, Jozef     EXPECT_CALL(reportMock, updateReadings());
257d960e1f3SWludzik, Jozef 
258d960e1f3SWludzik, Jozef     addReport(reportParams);
259d960e1f3SWludzik, Jozef     sut->updateReport(reportParams.reportName());
260d960e1f3SWludzik, Jozef }
261d960e1f3SWludzik, Jozef 
262d960e1f3SWludzik, Jozef TEST_F(TestReportManager, updateReportDoNothingIfReportDoesNotExist)
263d960e1f3SWludzik, Jozef {
264dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
265d960e1f3SWludzik, Jozef         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
266d960e1f3SWludzik, Jozef     EXPECT_CALL(reportMock, updateReadings()).Times(0);
267d960e1f3SWludzik, Jozef 
268d960e1f3SWludzik, Jozef     addReport(reportParams);
269d960e1f3SWludzik, Jozef     sut->updateReport("NotAReport");
270d960e1f3SWludzik, Jozef }
271d960e1f3SWludzik, Jozef 
272e8fc5751SKrzysztof Grobelny class TestReportManagerWithAggregationOperationType :
273e8fc5751SKrzysztof Grobelny     public TestReportManager,
274e8fc5751SKrzysztof Grobelny     public WithParamInterface<OperationType>
275e8fc5751SKrzysztof Grobelny {
276e8fc5751SKrzysztof Grobelny   public:
277e8fc5751SKrzysztof Grobelny     OperationType operationType = GetParam();
278e8fc5751SKrzysztof Grobelny };
279e8fc5751SKrzysztof Grobelny 
280e8fc5751SKrzysztof Grobelny INSTANTIATE_TEST_SUITE_P(_, TestReportManagerWithAggregationOperationType,
281e8fc5751SKrzysztof Grobelny                          Values(OperationType::single, OperationType::max,
282e8fc5751SKrzysztof Grobelny                                 OperationType::min, OperationType::avg,
283e8fc5751SKrzysztof Grobelny                                 OperationType::sum));
284e8fc5751SKrzysztof Grobelny 
285e8fc5751SKrzysztof Grobelny TEST_P(TestReportManagerWithAggregationOperationType,
286e8fc5751SKrzysztof Grobelny        addReportWithDifferentOperationTypes)
287e8fc5751SKrzysztof Grobelny {
288dcc4e193SKrzysztof Grobelny     reportParams.metricParameters(
289dcc4e193SKrzysztof Grobelny         std::vector<LabeledMetricParameters>{{LabeledMetricParameters{
290dcc4e193SKrzysztof Grobelny             {LabeledSensorParameters{"Service",
291dcc4e193SKrzysztof Grobelny                                      "/xyz/openbmc_project/sensors/power/p1"}},
292dcc4e193SKrzysztof Grobelny             operationType,
293e8fc5751SKrzysztof Grobelny             "MetricId1",
294dcc4e193SKrzysztof Grobelny             "Metadata1",
295dcc4e193SKrzysztof Grobelny             CollectionTimeScope::point,
296dcc4e193SKrzysztof Grobelny             CollectionDuration(Milliseconds(0u))}}});
297e8fc5751SKrzysztof Grobelny 
298dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
299e8fc5751SKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
300e8fc5751SKrzysztof Grobelny 
301e8fc5751SKrzysztof Grobelny     auto [ec, path] = addReport(reportParams);
30232859b63SKarol Niczyj 
303e8fc5751SKrzysztof Grobelny     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
304e8fc5751SKrzysztof Grobelny     EXPECT_THAT(path, Eq("/"s + reportParams.reportName()));
305e8fc5751SKrzysztof Grobelny }
306e8fc5751SKrzysztof Grobelny 
307e2362796SWludzik, Jozef class TestReportManagerStorage : public TestReportManager
308e2362796SWludzik, Jozef {
309e2362796SWludzik, Jozef   public:
310e2362796SWludzik, Jozef     using FilePath = interfaces::JsonStorage::FilePath;
311e2362796SWludzik, Jozef     using DirectoryPath = interfaces::JsonStorage::DirectoryPath;
312e2362796SWludzik, Jozef 
313e2362796SWludzik, Jozef     void SetUp() override
314e2362796SWludzik, Jozef     {
315dcc4e193SKrzysztof Grobelny         EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _)).Times(0);
316dcc4e193SKrzysztof Grobelny 
317e2362796SWludzik, Jozef         ON_CALL(storageMock, list())
318e2362796SWludzik, Jozef             .WillByDefault(Return(std::vector<FilePath>{FilePath("report1")}));
319e2362796SWludzik, Jozef         ON_CALL(storageMock, load(FilePath("report1")))
3206ccfcbf5SKrzysztof Grobelny             .WillByDefault(InvokeWithoutArgs([this] { return data; }));
321e2362796SWludzik, Jozef     }
322e2362796SWludzik, Jozef 
323e2362796SWludzik, Jozef     void makeReportManager()
324e2362796SWludzik, Jozef     {
325e2362796SWludzik, Jozef         sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr),
326e2362796SWludzik, Jozef                                               std::move(storageMockPtr),
327e2362796SWludzik, Jozef                                               DbusEnvironment::getObjServer());
328e2362796SWludzik, Jozef     }
329e2362796SWludzik, Jozef 
330e2362796SWludzik, Jozef     nlohmann::json data = nlohmann::json{
3317e098e93SLukasz Kazmierczak         {"Enabled", reportParams.enabled()},
332e2362796SWludzik, Jozef         {"Version", Report::reportVersion},
333e2362796SWludzik, Jozef         {"Name", reportParams.reportName()},
334e2362796SWludzik, Jozef         {"ReportingType", reportParams.reportingType()},
335e2362796SWludzik, Jozef         {"EmitsReadingsUpdate", reportParams.emitReadingUpdate()},
336e2362796SWludzik, Jozef         {"LogToMetricReportsCollection",
337e2362796SWludzik, Jozef          reportParams.logToMetricReportCollection()},
338e2362796SWludzik, Jozef         {"Interval", reportParams.interval().count()},
339*3eb56865SSzymon Dompke         {"ReportUpdates", reportParams.reportUpdates()},
340*3eb56865SSzymon Dompke         {"AppendLimit", reportParams.appendLimit()},
341dcc4e193SKrzysztof Grobelny         {"ReadingParameters", reportParams.metricParameters()}};
342e2362796SWludzik, Jozef };
343e2362796SWludzik, Jozef 
344e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage, reportManagerCtorAddReportFromStorage)
345e2362796SWludzik, Jozef {
346dcc4e193SKrzysztof Grobelny     reportFactoryMock.expectMake(reportParams, _, Ref(storageMock));
347e2362796SWludzik, Jozef 
348e2362796SWludzik, Jozef     makeReportManager();
349e2362796SWludzik, Jozef }
350e2362796SWludzik, Jozef 
351e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage,
352e2362796SWludzik, Jozef        reportManagerCtorRemoveFileIfVersionDoesNotMatch)
353e2362796SWludzik, Jozef {
354e2362796SWludzik, Jozef     data["Version"] = Report::reportVersion - 1;
355e2362796SWludzik, Jozef 
356e2362796SWludzik, Jozef     EXPECT_CALL(storageMock, remove(FilePath("report1")));
357e2362796SWludzik, Jozef 
358e2362796SWludzik, Jozef     makeReportManager();
359e2362796SWludzik, Jozef }
360e2362796SWludzik, Jozef 
361e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage,
362e2362796SWludzik, Jozef        reportManagerCtorRemoveFileIfIntervalHasWrongType)
363e2362796SWludzik, Jozef {
364e2362796SWludzik, Jozef     data["Interval"] = "1000";
365e2362796SWludzik, Jozef 
366e2362796SWludzik, Jozef     EXPECT_CALL(storageMock, remove(FilePath("report1")));
367e2362796SWludzik, Jozef 
368e2362796SWludzik, Jozef     makeReportManager();
369e2362796SWludzik, Jozef }
370