xref: /openbmc/telemetry/tests/src/test_report_manager.cpp (revision 9f9ff90a39219ff3a2f1179f74fc9a6dc857e5ab)
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"
90e7ae5dbSEd Tanous #include "utils/set_exception.hpp"
10e2362796SWludzik, Jozef #include "utils/transform.hpp"
112f9f9b87SWludzik, Jozef 
122f9f9b87SWludzik, Jozef using namespace testing;
13e8fc5751SKrzysztof Grobelny using namespace std::string_literals;
14e2362796SWludzik, Jozef using namespace std::chrono_literals;
152f9f9b87SWludzik, Jozef 
162f9f9b87SWludzik, Jozef class TestReportManager : public Test
172f9f9b87SWludzik, Jozef {
182f9f9b87SWludzik, Jozef   public:
19e2362796SWludzik, Jozef     ReportParams reportParams;
202f9f9b87SWludzik, Jozef 
212f9f9b87SWludzik, Jozef     std::unique_ptr<ReportFactoryMock> reportFactoryMockPtr =
222f9f9b87SWludzik, Jozef         std::make_unique<StrictMock<ReportFactoryMock>>();
232f9f9b87SWludzik, Jozef     ReportFactoryMock& reportFactoryMock = *reportFactoryMockPtr;
24e2362796SWludzik, Jozef 
25e2362796SWludzik, Jozef     std::unique_ptr<StorageMock> storageMockPtr =
26e2362796SWludzik, Jozef         std::make_unique<NiceMock<StorageMock>>();
27e2362796SWludzik, Jozef     StorageMock& storageMock = *storageMockPtr;
28e2362796SWludzik, Jozef 
29d2238194SKrzysztof Grobelny     std::unique_ptr<ReportMock> reportMockPtr =
30d2238194SKrzysztof Grobelny         std::make_unique<NiceMock<ReportMock>>(reportParams.reportName());
31d2238194SKrzysztof Grobelny     ReportMock& reportMock = *reportMockPtr;
32d2238194SKrzysztof Grobelny 
33e2362796SWludzik, Jozef     std::unique_ptr<ReportManager> sut;
342f9f9b87SWludzik, Jozef 
352f9f9b87SWludzik, Jozef     MockFunction<void(std::string)> checkPoint;
362f9f9b87SWludzik, Jozef 
37e2362796SWludzik, Jozef     void SetUp() override
38e2362796SWludzik, Jozef     {
39e2362796SWludzik, Jozef         sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr),
40e2362796SWludzik, Jozef                                               std::move(storageMockPtr),
41e2362796SWludzik, Jozef                                               DbusEnvironment::getObjServer());
42e2362796SWludzik, Jozef     }
43e2362796SWludzik, Jozef 
442f9f9b87SWludzik, Jozef     void TearDown() override
452f9f9b87SWludzik, Jozef     {
462f9f9b87SWludzik, Jozef         DbusEnvironment::synchronizeIoc();
472f9f9b87SWludzik, Jozef     }
482f9f9b87SWludzik, Jozef 
492f9f9b87SWludzik, Jozef     std::pair<boost::system::error_code, std::string>
50e2362796SWludzik, Jozef         addReport(const ReportParams& params)
512f9f9b87SWludzik, Jozef     {
522f9f9b87SWludzik, Jozef         std::promise<std::pair<boost::system::error_code, std::string>>
532f9f9b87SWludzik, Jozef             addReportPromise;
542f9f9b87SWludzik, Jozef         DbusEnvironment::getBus()->async_method_call(
552f9f9b87SWludzik, Jozef             [&addReportPromise](boost::system::error_code ec,
562f9f9b87SWludzik, Jozef                                 const std::string& path) {
572f9f9b87SWludzik, Jozef                 addReportPromise.set_value({ec, path});
582f9f9b87SWludzik, Jozef             },
592f9f9b87SWludzik, Jozef             DbusEnvironment::serviceName(), ReportManager::reportManagerPath,
60*9f9ff90aSKrzysztof Grobelny             ReportManager::reportManagerIfaceName, "AddReport",
61e2362796SWludzik, Jozef             params.reportName(), params.reportingType(),
62e2362796SWludzik, Jozef             params.emitReadingUpdate(), params.logToMetricReportCollection(),
63e2362796SWludzik, Jozef             static_cast<uint64_t>(params.interval().count()),
64e2362796SWludzik, Jozef             params.readingParameters());
65f32f6fefSKrzysztof Grobelny         return DbusEnvironment::waitForFuture(addReportPromise.get_future());
662f9f9b87SWludzik, Jozef     }
672f9f9b87SWludzik, Jozef 
682f9f9b87SWludzik, Jozef     template <class T>
692f9f9b87SWludzik, Jozef     static T getProperty(std::string property)
702f9f9b87SWludzik, Jozef     {
710e7ae5dbSEd Tanous         auto propertyPromise = std::promise<T>();
720e7ae5dbSEd Tanous         auto propertyFuture = propertyPromise.get_future();
732f9f9b87SWludzik, Jozef         sdbusplus::asio::getProperty<T>(
742f9f9b87SWludzik, Jozef             *DbusEnvironment::getBus(), DbusEnvironment::serviceName(),
752f9f9b87SWludzik, Jozef             ReportManager::reportManagerPath,
762f9f9b87SWludzik, Jozef             ReportManager::reportManagerIfaceName, property,
77*9f9ff90aSKrzysztof Grobelny             [&propertyPromise](boost::system::error_code ec, T t) {
780e7ae5dbSEd Tanous                 if (ec)
790e7ae5dbSEd Tanous                 {
80*9f9ff90aSKrzysztof Grobelny                     utils::setException(propertyPromise, "GetProperty failed");
810e7ae5dbSEd Tanous                     return;
820e7ae5dbSEd Tanous                 }
830e7ae5dbSEd Tanous                 propertyPromise.set_value(t);
840e7ae5dbSEd Tanous             });
850e7ae5dbSEd Tanous         return DbusEnvironment::waitForFuture(std::move(propertyFuture));
862f9f9b87SWludzik, Jozef     }
872f9f9b87SWludzik, Jozef };
882f9f9b87SWludzik, Jozef 
892f9f9b87SWludzik, Jozef TEST_F(TestReportManager, minInterval)
902f9f9b87SWludzik, Jozef {
912f9f9b87SWludzik, Jozef     EXPECT_THAT(getProperty<uint64_t>("MinInterval"),
922f9f9b87SWludzik, Jozef                 Eq(static_cast<uint64_t>(ReportManager::minInterval.count())));
932f9f9b87SWludzik, Jozef }
942f9f9b87SWludzik, Jozef 
952f9f9b87SWludzik, Jozef TEST_F(TestReportManager, maxReports)
962f9f9b87SWludzik, Jozef {
97503c1589SWludzik, Jozef     EXPECT_THAT(getProperty<size_t>("MaxReports"),
982f9f9b87SWludzik, Jozef                 Eq(ReportManager::maxReports));
992f9f9b87SWludzik, Jozef }
1002f9f9b87SWludzik, Jozef 
1012f9f9b87SWludzik, Jozef TEST_F(TestReportManager, addReport)
1022f9f9b87SWludzik, Jozef {
103d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
1042f9f9b87SWludzik, Jozef         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
1052f9f9b87SWludzik, Jozef 
106e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
1072f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
1082f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(reportMock.getPath()));
1092f9f9b87SWludzik, Jozef }
1102f9f9b87SWludzik, Jozef 
111e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportTwice)
1122f9f9b87SWludzik, Jozef {
113d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
114d2238194SKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
1152f9f9b87SWludzik, Jozef 
116e2362796SWludzik, Jozef     addReport(reportParams);
1172f9f9b87SWludzik, Jozef 
118e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
1192f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::file_exists));
1202f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
1212f9f9b87SWludzik, Jozef }
1222f9f9b87SWludzik, Jozef 
123e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidInterval)
1242f9f9b87SWludzik, Jozef {
125d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(_, std::nullopt, Ref(*sut), Ref(storageMock))
126d2238194SKrzysztof Grobelny         .Times(0);
127d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock), _)
128d2238194SKrzysztof Grobelny         .Times(0);
1292f9f9b87SWludzik, Jozef 
130bc766b4dSWludzik, Jozef     reportParams.reportingType("Periodic");
131e2362796SWludzik, Jozef     reportParams.interval(reportParams.interval() - 1ms);
1322f9f9b87SWludzik, Jozef 
133e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
1342f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
1352f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
1362f9f9b87SWludzik, Jozef }
1372f9f9b87SWludzik, Jozef 
138bc766b4dSWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidReportingType)
139bc766b4dSWludzik, Jozef {
140bc766b4dSWludzik, Jozef     reportFactoryMock.expectMake(_, std::nullopt, Ref(*sut), Ref(storageMock))
141bc766b4dSWludzik, Jozef         .Times(0);
142bc766b4dSWludzik, Jozef     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock), _)
143bc766b4dSWludzik, Jozef         .Times(0);
144bc766b4dSWludzik, Jozef 
145bc766b4dSWludzik, Jozef     reportParams.reportingType("Invalid");
146bc766b4dSWludzik, Jozef 
147bc766b4dSWludzik, Jozef     auto [ec, path] = addReport(reportParams);
148bc766b4dSWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
149bc766b4dSWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
150bc766b4dSWludzik, Jozef }
151bc766b4dSWludzik, Jozef 
152bc766b4dSWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithMoreSensorsThanExpected)
153bc766b4dSWludzik, Jozef {
154bc766b4dSWludzik, Jozef     reportFactoryMock.expectMake(_, std::nullopt, Ref(*sut), Ref(storageMock))
155bc766b4dSWludzik, Jozef         .Times(0);
156bc766b4dSWludzik, Jozef     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock), _)
157bc766b4dSWludzik, Jozef         .Times(0);
158bc766b4dSWludzik, Jozef 
159bc766b4dSWludzik, Jozef     auto readingParams = reportParams.readingParameters();
160bc766b4dSWludzik, Jozef     for (size_t i = 0; i < ReportManager::maxReadingParams + 1; i++)
161bc766b4dSWludzik, Jozef     {
162bc766b4dSWludzik, Jozef         readingParams.push_back(readingParams.front());
163bc766b4dSWludzik, Jozef     }
164bc766b4dSWludzik, Jozef     reportParams.readingParameters(std::move(readingParams));
165bc766b4dSWludzik, Jozef 
166bc766b4dSWludzik, Jozef     auto [ec, path] = addReport(reportParams);
167bc766b4dSWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::argument_list_too_long));
168bc766b4dSWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
169bc766b4dSWludzik, Jozef }
170bc766b4dSWludzik, Jozef 
171e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWhenMaxReportIsReached)
1722f9f9b87SWludzik, Jozef {
173d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(_, std::nullopt, Ref(*sut), Ref(storageMock))
1742f9f9b87SWludzik, Jozef         .Times(ReportManager::maxReports);
1752f9f9b87SWludzik, Jozef 
1762f9f9b87SWludzik, Jozef     for (size_t i = 0; i < ReportManager::maxReports; i++)
1772f9f9b87SWludzik, Jozef     {
178e2362796SWludzik, Jozef         reportParams.reportName(reportParams.reportName() + std::to_string(i));
1792f9f9b87SWludzik, Jozef 
180e2362796SWludzik, Jozef         auto [ec, path] = addReport(reportParams);
1812f9f9b87SWludzik, Jozef         EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
1822f9f9b87SWludzik, Jozef     }
1832f9f9b87SWludzik, Jozef 
184e2362796SWludzik, Jozef     reportParams.reportName(reportParams.reportName() +
185e2362796SWludzik, Jozef                             std::to_string(ReportManager::maxReports));
186e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
1872f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::too_many_files_open));
1882f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
1892f9f9b87SWludzik, Jozef }
1902f9f9b87SWludzik, Jozef 
1912f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removeReport)
1922f9f9b87SWludzik, Jozef {
1932f9f9b87SWludzik, Jozef     {
1942f9f9b87SWludzik, Jozef         InSequence seq;
195d2238194SKrzysztof Grobelny         reportFactoryMock
196d2238194SKrzysztof Grobelny             .expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
1972f9f9b87SWludzik, Jozef             .WillOnce(Return(ByMove(std::move(reportMockPtr))));
1982f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
1992f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
2002f9f9b87SWludzik, Jozef     }
2012f9f9b87SWludzik, Jozef 
202e2362796SWludzik, Jozef     addReport(reportParams);
203e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
2042f9f9b87SWludzik, Jozef     checkPoint.Call("end");
2052f9f9b87SWludzik, Jozef }
2062f9f9b87SWludzik, Jozef 
2072f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removingReportThatIsNotInContainerHasNoEffect)
2082f9f9b87SWludzik, Jozef {
2092f9f9b87SWludzik, Jozef     {
2102f9f9b87SWludzik, Jozef         InSequence seq;
2112f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
2122f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
2132f9f9b87SWludzik, Jozef     }
2142f9f9b87SWludzik, Jozef 
215e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
2162f9f9b87SWludzik, Jozef     checkPoint.Call("end");
2172f9f9b87SWludzik, Jozef }
2182f9f9b87SWludzik, Jozef 
2192f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removingSameReportTwiceHasNoSideEffect)
2202f9f9b87SWludzik, Jozef {
2212f9f9b87SWludzik, Jozef     {
2222f9f9b87SWludzik, Jozef         InSequence seq;
223d2238194SKrzysztof Grobelny         reportFactoryMock
224d2238194SKrzysztof Grobelny             .expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
2252f9f9b87SWludzik, Jozef             .WillOnce(Return(ByMove(std::move(reportMockPtr))));
2262f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
2272f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
2282f9f9b87SWludzik, Jozef     }
2292f9f9b87SWludzik, Jozef 
230e2362796SWludzik, Jozef     addReport(reportParams);
231e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
232e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
2332f9f9b87SWludzik, Jozef     checkPoint.Call("end");
2342f9f9b87SWludzik, Jozef }
235e2362796SWludzik, Jozef 
236d960e1f3SWludzik, Jozef TEST_F(TestReportManager, updateReportCallsUpdateReadingsForExistReport)
237d960e1f3SWludzik, Jozef {
238d960e1f3SWludzik, Jozef     reportFactoryMock.expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
239d960e1f3SWludzik, Jozef         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
240d960e1f3SWludzik, Jozef     EXPECT_CALL(reportMock, updateReadings());
241d960e1f3SWludzik, Jozef 
242d960e1f3SWludzik, Jozef     addReport(reportParams);
243d960e1f3SWludzik, Jozef     sut->updateReport(reportParams.reportName());
244d960e1f3SWludzik, Jozef }
245d960e1f3SWludzik, Jozef 
246d960e1f3SWludzik, Jozef TEST_F(TestReportManager, updateReportDoNothingIfReportDoesNotExist)
247d960e1f3SWludzik, Jozef {
248d960e1f3SWludzik, Jozef     reportFactoryMock.expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
249d960e1f3SWludzik, Jozef         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
250d960e1f3SWludzik, Jozef     EXPECT_CALL(reportMock, updateReadings()).Times(0);
251d960e1f3SWludzik, Jozef 
252d960e1f3SWludzik, Jozef     addReport(reportParams);
253d960e1f3SWludzik, Jozef     sut->updateReport("NotAReport");
254d960e1f3SWludzik, Jozef }
255d960e1f3SWludzik, Jozef 
256e8fc5751SKrzysztof Grobelny class TestReportManagerWithAggregationOperationType :
257e8fc5751SKrzysztof Grobelny     public TestReportManager,
258e8fc5751SKrzysztof Grobelny     public WithParamInterface<OperationType>
259e8fc5751SKrzysztof Grobelny {
260e8fc5751SKrzysztof Grobelny   public:
261e8fc5751SKrzysztof Grobelny     OperationType operationType = GetParam();
262e8fc5751SKrzysztof Grobelny };
263e8fc5751SKrzysztof Grobelny 
264e8fc5751SKrzysztof Grobelny INSTANTIATE_TEST_SUITE_P(_, TestReportManagerWithAggregationOperationType,
265e8fc5751SKrzysztof Grobelny                          Values(OperationType::single, OperationType::max,
266e8fc5751SKrzysztof Grobelny                                 OperationType::min, OperationType::avg,
267e8fc5751SKrzysztof Grobelny                                 OperationType::sum));
268e8fc5751SKrzysztof Grobelny 
269e8fc5751SKrzysztof Grobelny TEST_P(TestReportManagerWithAggregationOperationType,
270e8fc5751SKrzysztof Grobelny        addReportWithDifferentOperationTypes)
271e8fc5751SKrzysztof Grobelny {
272e8fc5751SKrzysztof Grobelny     reportParams.readingParameters(
273e8fc5751SKrzysztof Grobelny         {{{sdbusplus::message::object_path(
274e8fc5751SKrzysztof Grobelny               "/xyz/openbmc_project/sensors/power/p1")},
275e8fc5751SKrzysztof Grobelny           utils::enumToString(operationType),
276e8fc5751SKrzysztof Grobelny           "MetricId1",
277*9f9ff90aSKrzysztof Grobelny           "Metadata1"}});
278e8fc5751SKrzysztof Grobelny 
279e8fc5751SKrzysztof Grobelny     reportFactoryMock.expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
280e8fc5751SKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
281e8fc5751SKrzysztof Grobelny 
282e8fc5751SKrzysztof Grobelny     auto [ec, path] = addReport(reportParams);
283e8fc5751SKrzysztof Grobelny     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
284e8fc5751SKrzysztof Grobelny     EXPECT_THAT(path, Eq("/"s + reportParams.reportName()));
285e8fc5751SKrzysztof Grobelny }
286e8fc5751SKrzysztof Grobelny 
287e2362796SWludzik, Jozef class TestReportManagerStorage : public TestReportManager
288e2362796SWludzik, Jozef {
289e2362796SWludzik, Jozef   public:
290e2362796SWludzik, Jozef     using FilePath = interfaces::JsonStorage::FilePath;
291e2362796SWludzik, Jozef     using DirectoryPath = interfaces::JsonStorage::DirectoryPath;
292e2362796SWludzik, Jozef 
293e2362796SWludzik, Jozef     void SetUp() override
294e2362796SWludzik, Jozef     {
295e2362796SWludzik, Jozef         ON_CALL(storageMock, list())
296e2362796SWludzik, Jozef             .WillByDefault(Return(std::vector<FilePath>{FilePath("report1")}));
297e2362796SWludzik, Jozef         ON_CALL(storageMock, load(FilePath("report1")))
2986ccfcbf5SKrzysztof Grobelny             .WillByDefault(InvokeWithoutArgs([this] { return data; }));
299e2362796SWludzik, Jozef     }
300e2362796SWludzik, Jozef 
301e2362796SWludzik, Jozef     void makeReportManager()
302e2362796SWludzik, Jozef     {
303e2362796SWludzik, Jozef         sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr),
304e2362796SWludzik, Jozef                                               std::move(storageMockPtr),
305e2362796SWludzik, Jozef                                               DbusEnvironment::getObjServer());
306e2362796SWludzik, Jozef     }
307e2362796SWludzik, Jozef 
308d2238194SKrzysztof Grobelny     static std::vector<LabeledMetricParameters>
309d2238194SKrzysztof Grobelny         convertToLabeled(const ReadingParameters& params)
310d2238194SKrzysztof Grobelny     {
311d2238194SKrzysztof Grobelny         return utils::transform(params, [](const auto& item) {
312d2238194SKrzysztof Grobelny             return LabeledMetricParameters(
313e8fc5751SKrzysztof Grobelny                 LabeledSensorParameters("service", std::get<0>(item)),
314e8fc5751SKrzysztof Grobelny                 utils::stringToOperationType(std::get<1>(item)),
315*9f9ff90aSKrzysztof Grobelny                 std::get<2>(item), std::get<3>(item));
316d2238194SKrzysztof Grobelny         });
317d2238194SKrzysztof Grobelny     }
318d2238194SKrzysztof Grobelny 
319e2362796SWludzik, Jozef     nlohmann::json data = nlohmann::json{
320e2362796SWludzik, Jozef         {"Version", Report::reportVersion},
321e2362796SWludzik, Jozef         {"Name", reportParams.reportName()},
322e2362796SWludzik, Jozef         {"ReportingType", reportParams.reportingType()},
323e2362796SWludzik, Jozef         {"EmitsReadingsUpdate", reportParams.emitReadingUpdate()},
324e2362796SWludzik, Jozef         {"LogToMetricReportsCollection",
325e2362796SWludzik, Jozef          reportParams.logToMetricReportCollection()},
326e2362796SWludzik, Jozef         {"Interval", reportParams.interval().count()},
327e2362796SWludzik, Jozef         {"ReadingParameters",
328d2238194SKrzysztof Grobelny          convertToLabeled(reportParams.readingParameters())}};
329e2362796SWludzik, Jozef };
330e2362796SWludzik, Jozef 
331e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage, reportManagerCtorAddReportFromStorage)
332e2362796SWludzik, Jozef {
333d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(
334d2238194SKrzysztof Grobelny         reportParams, _, Ref(storageMock),
335d2238194SKrzysztof Grobelny         ElementsAreArray(convertToLabeled(reportParams.readingParameters())));
336e2362796SWludzik, Jozef 
337e2362796SWludzik, Jozef     makeReportManager();
338e2362796SWludzik, Jozef }
339e2362796SWludzik, Jozef 
340e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage,
341e2362796SWludzik, Jozef        reportManagerCtorRemoveFileIfVersionDoesNotMatch)
342e2362796SWludzik, Jozef {
343e2362796SWludzik, Jozef     data["Version"] = Report::reportVersion - 1;
344e2362796SWludzik, Jozef 
345e2362796SWludzik, Jozef     EXPECT_CALL(storageMock, remove(FilePath("report1")));
346e2362796SWludzik, Jozef 
347e2362796SWludzik, Jozef     makeReportManager();
348e2362796SWludzik, Jozef }
349e2362796SWludzik, Jozef 
350e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage,
351e2362796SWludzik, Jozef        reportManagerCtorRemoveFileIfIntervalHasWrongType)
352e2362796SWludzik, Jozef {
353e2362796SWludzik, Jozef     data["Interval"] = "1000";
354e2362796SWludzik, Jozef 
355e2362796SWludzik, Jozef     EXPECT_CALL(storageMock, remove(FilePath("report1")));
356e2362796SWludzik, Jozef 
357e2362796SWludzik, Jozef     makeReportManager();
358e2362796SWludzik, Jozef }
359