xref: /openbmc/telemetry/tests/src/test_report_manager.cpp (revision e8fc57514575f07565035db07cb522fe21988224)
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"
8*e8fc5751SKrzysztof Grobelny #include "utils/conversion.hpp"
9e2362796SWludzik, Jozef #include "utils/transform.hpp"
102f9f9b87SWludzik, Jozef 
112f9f9b87SWludzik, Jozef using namespace testing;
12*e8fc5751SKrzysztof 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     {
38e2362796SWludzik, Jozef         sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr),
39e2362796SWludzik, Jozef                                               std::move(storageMockPtr),
40e2362796SWludzik, Jozef                                               DbusEnvironment::getObjServer());
41e2362796SWludzik, Jozef     }
42e2362796SWludzik, Jozef 
432f9f9b87SWludzik, Jozef     void TearDown() override
442f9f9b87SWludzik, Jozef     {
452f9f9b87SWludzik, Jozef         DbusEnvironment::synchronizeIoc();
462f9f9b87SWludzik, Jozef     }
472f9f9b87SWludzik, Jozef 
482f9f9b87SWludzik, Jozef     std::pair<boost::system::error_code, std::string>
49e2362796SWludzik, Jozef         addReport(const ReportParams& params)
502f9f9b87SWludzik, Jozef     {
512f9f9b87SWludzik, Jozef         std::promise<std::pair<boost::system::error_code, std::string>>
522f9f9b87SWludzik, Jozef             addReportPromise;
532f9f9b87SWludzik, Jozef         DbusEnvironment::getBus()->async_method_call(
542f9f9b87SWludzik, Jozef             [&addReportPromise](boost::system::error_code ec,
552f9f9b87SWludzik, Jozef                                 const std::string& path) {
562f9f9b87SWludzik, Jozef                 addReportPromise.set_value({ec, path});
572f9f9b87SWludzik, Jozef             },
582f9f9b87SWludzik, Jozef             DbusEnvironment::serviceName(), ReportManager::reportManagerPath,
59e2362796SWludzik, Jozef             ReportManager::reportManagerIfaceName, "AddReport",
60e2362796SWludzik, Jozef             params.reportName(), params.reportingType(),
61e2362796SWludzik, Jozef             params.emitReadingUpdate(), params.logToMetricReportCollection(),
62e2362796SWludzik, Jozef             static_cast<uint64_t>(params.interval().count()),
63e2362796SWludzik, Jozef             params.readingParameters());
64f32f6fefSKrzysztof Grobelny         return DbusEnvironment::waitForFuture(addReportPromise.get_future());
652f9f9b87SWludzik, Jozef     }
662f9f9b87SWludzik, Jozef 
672f9f9b87SWludzik, Jozef     template <class T>
682f9f9b87SWludzik, Jozef     static T getProperty(std::string property)
692f9f9b87SWludzik, Jozef     {
702f9f9b87SWludzik, Jozef         std::promise<T> propertyPromise;
712f9f9b87SWludzik, Jozef         sdbusplus::asio::getProperty<T>(
722f9f9b87SWludzik, Jozef             *DbusEnvironment::getBus(), DbusEnvironment::serviceName(),
732f9f9b87SWludzik, Jozef             ReportManager::reportManagerPath,
742f9f9b87SWludzik, Jozef             ReportManager::reportManagerIfaceName, property,
752f9f9b87SWludzik, Jozef             [&propertyPromise](boost::system::error_code ec) {
762f9f9b87SWludzik, Jozef                 EXPECT_THAT(static_cast<bool>(ec), ::testing::Eq(false));
772f9f9b87SWludzik, Jozef                 propertyPromise.set_value(T{});
782f9f9b87SWludzik, Jozef             },
792f9f9b87SWludzik, Jozef             [&propertyPromise](T t) { propertyPromise.set_value(t); });
80f32f6fefSKrzysztof Grobelny         return DbusEnvironment::waitForFuture(propertyPromise.get_future());
812f9f9b87SWludzik, Jozef     }
822f9f9b87SWludzik, Jozef };
832f9f9b87SWludzik, Jozef 
842f9f9b87SWludzik, Jozef TEST_F(TestReportManager, minInterval)
852f9f9b87SWludzik, Jozef {
862f9f9b87SWludzik, Jozef     EXPECT_THAT(getProperty<uint64_t>("MinInterval"),
872f9f9b87SWludzik, Jozef                 Eq(static_cast<uint64_t>(ReportManager::minInterval.count())));
882f9f9b87SWludzik, Jozef }
892f9f9b87SWludzik, Jozef 
902f9f9b87SWludzik, Jozef TEST_F(TestReportManager, maxReports)
912f9f9b87SWludzik, Jozef {
92503c1589SWludzik, Jozef     EXPECT_THAT(getProperty<size_t>("MaxReports"),
932f9f9b87SWludzik, Jozef                 Eq(ReportManager::maxReports));
942f9f9b87SWludzik, Jozef }
952f9f9b87SWludzik, Jozef 
962f9f9b87SWludzik, Jozef TEST_F(TestReportManager, addReport)
972f9f9b87SWludzik, Jozef {
98d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
992f9f9b87SWludzik, Jozef         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
1002f9f9b87SWludzik, Jozef 
101e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
1022f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
1032f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(reportMock.getPath()));
1042f9f9b87SWludzik, Jozef }
1052f9f9b87SWludzik, Jozef 
106e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportTwice)
1072f9f9b87SWludzik, Jozef {
108d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
109d2238194SKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
1102f9f9b87SWludzik, Jozef 
111e2362796SWludzik, Jozef     addReport(reportParams);
1122f9f9b87SWludzik, Jozef 
113e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
1142f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::file_exists));
1152f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
1162f9f9b87SWludzik, Jozef }
1172f9f9b87SWludzik, Jozef 
118e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidInterval)
1192f9f9b87SWludzik, Jozef {
120d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(_, std::nullopt, Ref(*sut), Ref(storageMock))
121d2238194SKrzysztof Grobelny         .Times(0);
122d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock), _)
123d2238194SKrzysztof Grobelny         .Times(0);
1242f9f9b87SWludzik, Jozef 
125bc766b4dSWludzik, Jozef     reportParams.reportingType("Periodic");
126e2362796SWludzik, Jozef     reportParams.interval(reportParams.interval() - 1ms);
1272f9f9b87SWludzik, Jozef 
128e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
1292f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
1302f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
1312f9f9b87SWludzik, Jozef }
1322f9f9b87SWludzik, Jozef 
133bc766b4dSWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidReportingType)
134bc766b4dSWludzik, Jozef {
135bc766b4dSWludzik, Jozef     reportFactoryMock.expectMake(_, std::nullopt, Ref(*sut), Ref(storageMock))
136bc766b4dSWludzik, Jozef         .Times(0);
137bc766b4dSWludzik, Jozef     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock), _)
138bc766b4dSWludzik, Jozef         .Times(0);
139bc766b4dSWludzik, Jozef 
140bc766b4dSWludzik, Jozef     reportParams.reportingType("Invalid");
141bc766b4dSWludzik, Jozef 
142bc766b4dSWludzik, Jozef     auto [ec, path] = addReport(reportParams);
143bc766b4dSWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument));
144bc766b4dSWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
145bc766b4dSWludzik, Jozef }
146bc766b4dSWludzik, Jozef 
147bc766b4dSWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithMoreSensorsThanExpected)
148bc766b4dSWludzik, Jozef {
149bc766b4dSWludzik, Jozef     reportFactoryMock.expectMake(_, std::nullopt, Ref(*sut), Ref(storageMock))
150bc766b4dSWludzik, Jozef         .Times(0);
151bc766b4dSWludzik, Jozef     reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock), _)
152bc766b4dSWludzik, Jozef         .Times(0);
153bc766b4dSWludzik, Jozef 
154bc766b4dSWludzik, Jozef     auto readingParams = reportParams.readingParameters();
155bc766b4dSWludzik, Jozef     for (size_t i = 0; i < ReportManager::maxReadingParams + 1; i++)
156bc766b4dSWludzik, Jozef     {
157bc766b4dSWludzik, Jozef         readingParams.push_back(readingParams.front());
158bc766b4dSWludzik, Jozef     }
159bc766b4dSWludzik, Jozef     reportParams.readingParameters(std::move(readingParams));
160bc766b4dSWludzik, Jozef 
161bc766b4dSWludzik, Jozef     auto [ec, path] = addReport(reportParams);
162bc766b4dSWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::argument_list_too_long));
163bc766b4dSWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
164bc766b4dSWludzik, Jozef }
165bc766b4dSWludzik, Jozef 
166e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWhenMaxReportIsReached)
1672f9f9b87SWludzik, Jozef {
168d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(_, std::nullopt, Ref(*sut), Ref(storageMock))
1692f9f9b87SWludzik, Jozef         .Times(ReportManager::maxReports);
1702f9f9b87SWludzik, Jozef 
1712f9f9b87SWludzik, Jozef     for (size_t i = 0; i < ReportManager::maxReports; i++)
1722f9f9b87SWludzik, Jozef     {
173e2362796SWludzik, Jozef         reportParams.reportName(reportParams.reportName() + std::to_string(i));
1742f9f9b87SWludzik, Jozef 
175e2362796SWludzik, Jozef         auto [ec, path] = addReport(reportParams);
1762f9f9b87SWludzik, Jozef         EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
1772f9f9b87SWludzik, Jozef     }
1782f9f9b87SWludzik, Jozef 
179e2362796SWludzik, Jozef     reportParams.reportName(reportParams.reportName() +
180e2362796SWludzik, Jozef                             std::to_string(ReportManager::maxReports));
181e2362796SWludzik, Jozef     auto [ec, path] = addReport(reportParams);
1822f9f9b87SWludzik, Jozef     EXPECT_THAT(ec.value(), Eq(boost::system::errc::too_many_files_open));
1832f9f9b87SWludzik, Jozef     EXPECT_THAT(path, Eq(std::string()));
1842f9f9b87SWludzik, Jozef }
1852f9f9b87SWludzik, Jozef 
1862f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removeReport)
1872f9f9b87SWludzik, Jozef {
1882f9f9b87SWludzik, Jozef     {
1892f9f9b87SWludzik, Jozef         InSequence seq;
190d2238194SKrzysztof Grobelny         reportFactoryMock
191d2238194SKrzysztof Grobelny             .expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
1922f9f9b87SWludzik, Jozef             .WillOnce(Return(ByMove(std::move(reportMockPtr))));
1932f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
1942f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
1952f9f9b87SWludzik, Jozef     }
1962f9f9b87SWludzik, Jozef 
197e2362796SWludzik, Jozef     addReport(reportParams);
198e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
1992f9f9b87SWludzik, Jozef     checkPoint.Call("end");
2002f9f9b87SWludzik, Jozef }
2012f9f9b87SWludzik, Jozef 
2022f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removingReportThatIsNotInContainerHasNoEffect)
2032f9f9b87SWludzik, Jozef {
2042f9f9b87SWludzik, Jozef     {
2052f9f9b87SWludzik, Jozef         InSequence seq;
2062f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
2072f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
2082f9f9b87SWludzik, Jozef     }
2092f9f9b87SWludzik, Jozef 
210e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
2112f9f9b87SWludzik, Jozef     checkPoint.Call("end");
2122f9f9b87SWludzik, Jozef }
2132f9f9b87SWludzik, Jozef 
2142f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removingSameReportTwiceHasNoSideEffect)
2152f9f9b87SWludzik, Jozef {
2162f9f9b87SWludzik, Jozef     {
2172f9f9b87SWludzik, Jozef         InSequence seq;
218d2238194SKrzysztof Grobelny         reportFactoryMock
219d2238194SKrzysztof Grobelny             .expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
2202f9f9b87SWludzik, Jozef             .WillOnce(Return(ByMove(std::move(reportMockPtr))));
2212f9f9b87SWludzik, Jozef         EXPECT_CALL(reportMock, Die());
2222f9f9b87SWludzik, Jozef         EXPECT_CALL(checkPoint, Call("end"));
2232f9f9b87SWludzik, Jozef     }
2242f9f9b87SWludzik, Jozef 
225e2362796SWludzik, Jozef     addReport(reportParams);
226e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
227e2362796SWludzik, Jozef     sut->removeReport(&reportMock);
2282f9f9b87SWludzik, Jozef     checkPoint.Call("end");
2292f9f9b87SWludzik, Jozef }
230e2362796SWludzik, Jozef 
231d960e1f3SWludzik, Jozef TEST_F(TestReportManager, updateReportCallsUpdateReadingsForExistReport)
232d960e1f3SWludzik, Jozef {
233d960e1f3SWludzik, Jozef     reportFactoryMock.expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
234d960e1f3SWludzik, Jozef         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
235d960e1f3SWludzik, Jozef     EXPECT_CALL(reportMock, updateReadings());
236d960e1f3SWludzik, Jozef 
237d960e1f3SWludzik, Jozef     addReport(reportParams);
238d960e1f3SWludzik, Jozef     sut->updateReport(reportParams.reportName());
239d960e1f3SWludzik, Jozef }
240d960e1f3SWludzik, Jozef 
241d960e1f3SWludzik, Jozef TEST_F(TestReportManager, updateReportDoNothingIfReportDoesNotExist)
242d960e1f3SWludzik, Jozef {
243d960e1f3SWludzik, Jozef     reportFactoryMock.expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
244d960e1f3SWludzik, Jozef         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
245d960e1f3SWludzik, Jozef     EXPECT_CALL(reportMock, updateReadings()).Times(0);
246d960e1f3SWludzik, Jozef 
247d960e1f3SWludzik, Jozef     addReport(reportParams);
248d960e1f3SWludzik, Jozef     sut->updateReport("NotAReport");
249d960e1f3SWludzik, Jozef }
250d960e1f3SWludzik, Jozef 
251*e8fc5751SKrzysztof Grobelny class TestReportManagerWithAggregationOperationType :
252*e8fc5751SKrzysztof Grobelny     public TestReportManager,
253*e8fc5751SKrzysztof Grobelny     public WithParamInterface<OperationType>
254*e8fc5751SKrzysztof Grobelny {
255*e8fc5751SKrzysztof Grobelny   public:
256*e8fc5751SKrzysztof Grobelny     OperationType operationType = GetParam();
257*e8fc5751SKrzysztof Grobelny };
258*e8fc5751SKrzysztof Grobelny 
259*e8fc5751SKrzysztof Grobelny INSTANTIATE_TEST_SUITE_P(_, TestReportManagerWithAggregationOperationType,
260*e8fc5751SKrzysztof Grobelny                          Values(OperationType::single, OperationType::max,
261*e8fc5751SKrzysztof Grobelny                                 OperationType::min, OperationType::avg,
262*e8fc5751SKrzysztof Grobelny                                 OperationType::sum));
263*e8fc5751SKrzysztof Grobelny 
264*e8fc5751SKrzysztof Grobelny TEST_P(TestReportManagerWithAggregationOperationType,
265*e8fc5751SKrzysztof Grobelny        addReportWithDifferentOperationTypes)
266*e8fc5751SKrzysztof Grobelny {
267*e8fc5751SKrzysztof Grobelny     reportParams.readingParameters(
268*e8fc5751SKrzysztof Grobelny         {{{sdbusplus::message::object_path(
269*e8fc5751SKrzysztof Grobelny               "/xyz/openbmc_project/sensors/power/p1")},
270*e8fc5751SKrzysztof Grobelny           utils::enumToString(operationType),
271*e8fc5751SKrzysztof Grobelny           "MetricId1",
272*e8fc5751SKrzysztof Grobelny           "Metadata1"}});
273*e8fc5751SKrzysztof Grobelny 
274*e8fc5751SKrzysztof Grobelny     reportFactoryMock.expectMake(_, reportParams, Ref(*sut), Ref(storageMock))
275*e8fc5751SKrzysztof Grobelny         .WillOnce(Return(ByMove(std::move(reportMockPtr))));
276*e8fc5751SKrzysztof Grobelny 
277*e8fc5751SKrzysztof Grobelny     auto [ec, path] = addReport(reportParams);
278*e8fc5751SKrzysztof Grobelny     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
279*e8fc5751SKrzysztof Grobelny     EXPECT_THAT(path, Eq("/"s + reportParams.reportName()));
280*e8fc5751SKrzysztof Grobelny }
281*e8fc5751SKrzysztof Grobelny 
282e2362796SWludzik, Jozef class TestReportManagerStorage : public TestReportManager
283e2362796SWludzik, Jozef {
284e2362796SWludzik, Jozef   public:
285e2362796SWludzik, Jozef     using FilePath = interfaces::JsonStorage::FilePath;
286e2362796SWludzik, Jozef     using DirectoryPath = interfaces::JsonStorage::DirectoryPath;
287e2362796SWludzik, Jozef 
288e2362796SWludzik, Jozef     void SetUp() override
289e2362796SWludzik, Jozef     {
290e2362796SWludzik, Jozef         ON_CALL(storageMock, list())
291e2362796SWludzik, Jozef             .WillByDefault(Return(std::vector<FilePath>{FilePath("report1")}));
292e2362796SWludzik, Jozef         ON_CALL(storageMock, load(FilePath("report1")))
2936ccfcbf5SKrzysztof Grobelny             .WillByDefault(InvokeWithoutArgs([this] { return data; }));
294e2362796SWludzik, Jozef     }
295e2362796SWludzik, Jozef 
296e2362796SWludzik, Jozef     void makeReportManager()
297e2362796SWludzik, Jozef     {
298e2362796SWludzik, Jozef         sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr),
299e2362796SWludzik, Jozef                                               std::move(storageMockPtr),
300e2362796SWludzik, Jozef                                               DbusEnvironment::getObjServer());
301e2362796SWludzik, Jozef     }
302e2362796SWludzik, Jozef 
303d2238194SKrzysztof Grobelny     static std::vector<LabeledMetricParameters>
304d2238194SKrzysztof Grobelny         convertToLabeled(const ReadingParameters& params)
305d2238194SKrzysztof Grobelny     {
306d2238194SKrzysztof Grobelny         return utils::transform(params, [](const auto& item) {
307d2238194SKrzysztof Grobelny             return LabeledMetricParameters(
308*e8fc5751SKrzysztof Grobelny                 LabeledSensorParameters("service", std::get<0>(item)),
309*e8fc5751SKrzysztof Grobelny                 utils::stringToOperationType(std::get<1>(item)),
310*e8fc5751SKrzysztof Grobelny                 std::get<2>(item), std::get<3>(item));
311d2238194SKrzysztof Grobelny         });
312d2238194SKrzysztof Grobelny     }
313d2238194SKrzysztof Grobelny 
314e2362796SWludzik, Jozef     nlohmann::json data = nlohmann::json{
315e2362796SWludzik, Jozef         {"Version", Report::reportVersion},
316e2362796SWludzik, Jozef         {"Name", reportParams.reportName()},
317e2362796SWludzik, Jozef         {"ReportingType", reportParams.reportingType()},
318e2362796SWludzik, Jozef         {"EmitsReadingsUpdate", reportParams.emitReadingUpdate()},
319e2362796SWludzik, Jozef         {"LogToMetricReportsCollection",
320e2362796SWludzik, Jozef          reportParams.logToMetricReportCollection()},
321e2362796SWludzik, Jozef         {"Interval", reportParams.interval().count()},
322e2362796SWludzik, Jozef         {"ReadingParameters",
323d2238194SKrzysztof Grobelny          convertToLabeled(reportParams.readingParameters())}};
324e2362796SWludzik, Jozef };
325e2362796SWludzik, Jozef 
326e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage, reportManagerCtorAddReportFromStorage)
327e2362796SWludzik, Jozef {
328d2238194SKrzysztof Grobelny     reportFactoryMock.expectMake(
329d2238194SKrzysztof Grobelny         reportParams, _, Ref(storageMock),
330d2238194SKrzysztof Grobelny         ElementsAreArray(convertToLabeled(reportParams.readingParameters())));
331e2362796SWludzik, Jozef 
332e2362796SWludzik, Jozef     makeReportManager();
333e2362796SWludzik, Jozef }
334e2362796SWludzik, Jozef 
335e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage,
336e2362796SWludzik, Jozef        reportManagerCtorRemoveFileIfVersionDoesNotMatch)
337e2362796SWludzik, Jozef {
338e2362796SWludzik, Jozef     data["Version"] = Report::reportVersion - 1;
339e2362796SWludzik, Jozef 
340e2362796SWludzik, Jozef     EXPECT_CALL(storageMock, remove(FilePath("report1")));
341e2362796SWludzik, Jozef 
342e2362796SWludzik, Jozef     makeReportManager();
343e2362796SWludzik, Jozef }
344e2362796SWludzik, Jozef 
345e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage,
346e2362796SWludzik, Jozef        reportManagerCtorRemoveFileIfIntervalHasWrongType)
347e2362796SWludzik, Jozef {
348e2362796SWludzik, Jozef     data["Interval"] = "1000";
349e2362796SWludzik, Jozef 
350e2362796SWludzik, Jozef     EXPECT_CALL(storageMock, remove(FilePath("report1")));
351e2362796SWludzik, Jozef 
352e2362796SWludzik, Jozef     makeReportManager();
353e2362796SWludzik, Jozef }
354