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 51*51497a0cSKrzysztof Grobelny template <class... Args> 52*51497a0cSKrzysztof Grobelny requires(sizeof...(Args) > 1) 53*51497a0cSKrzysztof Grobelny std::pair<boost::system::error_code, std::string> addReport( 54*51497a0cSKrzysztof Grobelny Args&&... args) 552f9f9b87SWludzik, Jozef { 562f9f9b87SWludzik, Jozef std::promise<std::pair<boost::system::error_code, std::string>> 572f9f9b87SWludzik, Jozef addReportPromise; 582f9f9b87SWludzik, Jozef DbusEnvironment::getBus()->async_method_call( 592f9f9b87SWludzik, Jozef [&addReportPromise](boost::system::error_code ec, 602f9f9b87SWludzik, Jozef const std::string& path) { 612f9f9b87SWludzik, Jozef addReportPromise.set_value({ec, path}); 622f9f9b87SWludzik, Jozef }, 632f9f9b87SWludzik, Jozef DbusEnvironment::serviceName(), ReportManager::reportManagerPath, 64dcc4e193SKrzysztof Grobelny ReportManager::reportManagerIfaceName, "AddReportFutureVersion", 65*51497a0cSKrzysztof Grobelny std::forward<Args>(args)...); 66f32f6fefSKrzysztof Grobelny return DbusEnvironment::waitForFuture(addReportPromise.get_future()); 672f9f9b87SWludzik, Jozef } 682f9f9b87SWludzik, Jozef 69*51497a0cSKrzysztof Grobelny auto addReport(const ReportParams& params) 70*51497a0cSKrzysztof Grobelny { 71*51497a0cSKrzysztof Grobelny return addReport( 72*51497a0cSKrzysztof Grobelny params.reportName(), utils::enumToString(params.reportingType()), 73*51497a0cSKrzysztof Grobelny utils::enumToString(params.reportUpdates()), params.appendLimit(), 74*51497a0cSKrzysztof Grobelny utils::transform( 75*51497a0cSKrzysztof Grobelny params.reportActions(), 76*51497a0cSKrzysztof Grobelny [](const auto v) { return utils::enumToString(v); }), 77*51497a0cSKrzysztof Grobelny params.interval().count(), 78*51497a0cSKrzysztof Grobelny toReadingParameters(params.metricParameters())); 79*51497a0cSKrzysztof Grobelny } 80*51497a0cSKrzysztof Grobelny 812f9f9b87SWludzik, Jozef template <class T> 82e28aa53dSSzymon Dompke static T getProperty(const std::string& property) 832f9f9b87SWludzik, Jozef { 84e28aa53dSSzymon Dompke return DbusEnvironment::getProperty<T>( 852f9f9b87SWludzik, Jozef ReportManager::reportManagerPath, 86e28aa53dSSzymon Dompke ReportManager::reportManagerIfaceName, property); 8732859b63SKarol Niczyj } 882f9f9b87SWludzik, Jozef }; 892f9f9b87SWludzik, Jozef 902f9f9b87SWludzik, Jozef TEST_F(TestReportManager, minInterval) 912f9f9b87SWludzik, Jozef { 922f9f9b87SWludzik, Jozef EXPECT_THAT(getProperty<uint64_t>("MinInterval"), 93dcc4e193SKrzysztof Grobelny Eq(ReportManager::minInterval.count())); 942f9f9b87SWludzik, Jozef } 952f9f9b87SWludzik, Jozef 962f9f9b87SWludzik, Jozef TEST_F(TestReportManager, maxReports) 972f9f9b87SWludzik, Jozef { 98503c1589SWludzik, Jozef EXPECT_THAT(getProperty<size_t>("MaxReports"), 992f9f9b87SWludzik, Jozef Eq(ReportManager::maxReports)); 1002f9f9b87SWludzik, Jozef } 1012f9f9b87SWludzik, Jozef 1022f9f9b87SWludzik, Jozef TEST_F(TestReportManager, addReport) 1032f9f9b87SWludzik, Jozef { 104dcc4e193SKrzysztof Grobelny EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _)); 105dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock)) 1062f9f9b87SWludzik, Jozef .WillOnce(Return(ByMove(std::move(reportMockPtr)))); 1072f9f9b87SWludzik, Jozef 108e2362796SWludzik, Jozef auto [ec, path] = addReport(reportParams); 1092f9f9b87SWludzik, Jozef EXPECT_THAT(ec.value(), Eq(boost::system::errc::success)); 1102f9f9b87SWludzik, Jozef EXPECT_THAT(path, Eq(reportMock.getPath())); 1112f9f9b87SWludzik, Jozef } 1122f9f9b87SWludzik, Jozef 11332859b63SKarol Niczyj TEST_F(TestReportManager, addReportWithMaxLengthName) 11432859b63SKarol Niczyj { 115e28aa53dSSzymon Dompke std::string reportName(ReportManager::maxReportNameLength, 'z'); 11632859b63SKarol Niczyj reportParams.reportName(reportName); 117dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock)); 11832859b63SKarol Niczyj 11932859b63SKarol Niczyj auto [ec, path] = addReport(reportParams); 12032859b63SKarol Niczyj 12132859b63SKarol Niczyj EXPECT_THAT(ec.value(), Eq(boost::system::errc::success)); 12232859b63SKarol Niczyj EXPECT_THAT(path, Eq("/"s + reportName)); 12332859b63SKarol Niczyj } 12432859b63SKarol Niczyj 12532859b63SKarol Niczyj TEST_F(TestReportManager, DISABLED_failToAddReportWithTooLongName) 12632859b63SKarol Niczyj { 127dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock)) 12832859b63SKarol Niczyj .Times(0); 12932859b63SKarol Niczyj 13032859b63SKarol Niczyj reportParams.reportName( 131e28aa53dSSzymon Dompke std::string(ReportManager::maxReportNameLength + 1, 'z')); 13232859b63SKarol Niczyj 13332859b63SKarol Niczyj auto [ec, path] = addReport(reportParams); 13432859b63SKarol Niczyj 13532859b63SKarol Niczyj EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument)); 13632859b63SKarol Niczyj EXPECT_THAT(path, Eq(std::string())); 13732859b63SKarol Niczyj } 13832859b63SKarol Niczyj 139e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportTwice) 1402f9f9b87SWludzik, Jozef { 141dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock)) 142d2238194SKrzysztof Grobelny .WillOnce(Return(ByMove(std::move(reportMockPtr)))); 1432f9f9b87SWludzik, Jozef 144e2362796SWludzik, Jozef addReport(reportParams); 1452f9f9b87SWludzik, Jozef 146e2362796SWludzik, Jozef auto [ec, path] = addReport(reportParams); 14732859b63SKarol Niczyj 1482f9f9b87SWludzik, Jozef EXPECT_THAT(ec.value(), Eq(boost::system::errc::file_exists)); 1492f9f9b87SWludzik, Jozef EXPECT_THAT(path, Eq(std::string())); 1502f9f9b87SWludzik, Jozef } 1512f9f9b87SWludzik, Jozef 152e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidInterval) 1532f9f9b87SWludzik, Jozef { 154dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock)) 155d2238194SKrzysztof Grobelny .Times(0); 1562f9f9b87SWludzik, Jozef 157*51497a0cSKrzysztof Grobelny reportParams.reportingType(ReportingType::periodic); 158e2362796SWludzik, Jozef reportParams.interval(reportParams.interval() - 1ms); 1592f9f9b87SWludzik, Jozef 160e2362796SWludzik, Jozef auto [ec, path] = addReport(reportParams); 16132859b63SKarol Niczyj 1622f9f9b87SWludzik, Jozef EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument)); 1632f9f9b87SWludzik, Jozef EXPECT_THAT(path, Eq(std::string())); 1642f9f9b87SWludzik, Jozef } 1652f9f9b87SWludzik, Jozef 166bc766b4dSWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithInvalidReportingType) 167bc766b4dSWludzik, Jozef { 168dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock)) 169bc766b4dSWludzik, Jozef .Times(0); 170bc766b4dSWludzik, Jozef 171*51497a0cSKrzysztof Grobelny auto [ec, path] = addReport( 172*51497a0cSKrzysztof Grobelny reportParams.reportName(), "InvalidReportingType", 173*51497a0cSKrzysztof Grobelny utils::transform(reportParams.reportActions(), 174*51497a0cSKrzysztof Grobelny [](const auto v) { return utils::enumToString(v); }), 175*51497a0cSKrzysztof Grobelny reportParams.interval().count(), 176*51497a0cSKrzysztof Grobelny toReadingParameters(reportParams.metricParameters())); 17732859b63SKarol Niczyj 178bc766b4dSWludzik, Jozef EXPECT_THAT(ec.value(), Eq(boost::system::errc::invalid_argument)); 179bc766b4dSWludzik, Jozef EXPECT_THAT(path, Eq(std::string())); 180bc766b4dSWludzik, Jozef } 181bc766b4dSWludzik, Jozef 182bc766b4dSWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWithMoreSensorsThanExpected) 183bc766b4dSWludzik, Jozef { 184dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock)) 185bc766b4dSWludzik, Jozef .Times(0); 186bc766b4dSWludzik, Jozef 187dcc4e193SKrzysztof Grobelny auto metricParams = reportParams.metricParameters(); 188bc766b4dSWludzik, Jozef for (size_t i = 0; i < ReportManager::maxReadingParams + 1; i++) 189bc766b4dSWludzik, Jozef { 190dcc4e193SKrzysztof Grobelny metricParams.push_back(metricParams.front()); 191bc766b4dSWludzik, Jozef } 192dcc4e193SKrzysztof Grobelny reportParams.metricParameters(std::move(metricParams)); 193bc766b4dSWludzik, Jozef 194bc766b4dSWludzik, Jozef auto [ec, path] = addReport(reportParams); 19532859b63SKarol Niczyj 196bc766b4dSWludzik, Jozef EXPECT_THAT(ec.value(), Eq(boost::system::errc::argument_list_too_long)); 197bc766b4dSWludzik, Jozef EXPECT_THAT(path, Eq(std::string())); 198bc766b4dSWludzik, Jozef } 199bc766b4dSWludzik, Jozef 200e2362796SWludzik, Jozef TEST_F(TestReportManager, DISABLED_failToAddReportWhenMaxReportIsReached) 2012f9f9b87SWludzik, Jozef { 202dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(std::nullopt, Ref(*sut), Ref(storageMock)) 2032f9f9b87SWludzik, Jozef .Times(ReportManager::maxReports); 2042f9f9b87SWludzik, Jozef 2052f9f9b87SWludzik, Jozef for (size_t i = 0; i < ReportManager::maxReports; i++) 2062f9f9b87SWludzik, Jozef { 207e2362796SWludzik, Jozef reportParams.reportName(reportParams.reportName() + std::to_string(i)); 2082f9f9b87SWludzik, Jozef 209e2362796SWludzik, Jozef auto [ec, path] = addReport(reportParams); 2102f9f9b87SWludzik, Jozef EXPECT_THAT(ec.value(), Eq(boost::system::errc::success)); 2112f9f9b87SWludzik, Jozef } 2122f9f9b87SWludzik, Jozef 213e2362796SWludzik, Jozef reportParams.reportName(reportParams.reportName() + 214e2362796SWludzik, Jozef std::to_string(ReportManager::maxReports)); 215e2362796SWludzik, Jozef auto [ec, path] = addReport(reportParams); 21632859b63SKarol Niczyj 2172f9f9b87SWludzik, Jozef EXPECT_THAT(ec.value(), Eq(boost::system::errc::too_many_files_open)); 2182f9f9b87SWludzik, Jozef EXPECT_THAT(path, Eq(std::string())); 2192f9f9b87SWludzik, Jozef } 2202f9f9b87SWludzik, Jozef 2212f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removeReport) 2222f9f9b87SWludzik, Jozef { 2232f9f9b87SWludzik, Jozef { 2242f9f9b87SWludzik, Jozef InSequence seq; 225dcc4e193SKrzysztof Grobelny EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _)); 226dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock)) 2272f9f9b87SWludzik, Jozef .WillOnce(Return(ByMove(std::move(reportMockPtr)))); 2282f9f9b87SWludzik, Jozef EXPECT_CALL(reportMock, Die()); 2292f9f9b87SWludzik, Jozef EXPECT_CALL(checkPoint, Call("end")); 2302f9f9b87SWludzik, Jozef } 2312f9f9b87SWludzik, Jozef 232e2362796SWludzik, Jozef addReport(reportParams); 233e2362796SWludzik, Jozef sut->removeReport(&reportMock); 2342f9f9b87SWludzik, Jozef checkPoint.Call("end"); 2352f9f9b87SWludzik, Jozef } 2362f9f9b87SWludzik, Jozef 2372f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removingReportThatIsNotInContainerHasNoEffect) 2382f9f9b87SWludzik, Jozef { 2392f9f9b87SWludzik, Jozef { 2402f9f9b87SWludzik, Jozef InSequence seq; 2412f9f9b87SWludzik, Jozef EXPECT_CALL(checkPoint, Call("end")); 2422f9f9b87SWludzik, Jozef EXPECT_CALL(reportMock, Die()); 2432f9f9b87SWludzik, Jozef } 2442f9f9b87SWludzik, Jozef 245e2362796SWludzik, Jozef sut->removeReport(&reportMock); 2462f9f9b87SWludzik, Jozef checkPoint.Call("end"); 2472f9f9b87SWludzik, Jozef } 2482f9f9b87SWludzik, Jozef 2492f9f9b87SWludzik, Jozef TEST_F(TestReportManager, removingSameReportTwiceHasNoSideEffect) 2502f9f9b87SWludzik, Jozef { 2512f9f9b87SWludzik, Jozef { 2522f9f9b87SWludzik, Jozef InSequence seq; 253dcc4e193SKrzysztof Grobelny EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _)); 254dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock)) 2552f9f9b87SWludzik, Jozef .WillOnce(Return(ByMove(std::move(reportMockPtr)))); 2562f9f9b87SWludzik, Jozef EXPECT_CALL(reportMock, Die()); 2572f9f9b87SWludzik, Jozef EXPECT_CALL(checkPoint, Call("end")); 2582f9f9b87SWludzik, Jozef } 2592f9f9b87SWludzik, Jozef 260e2362796SWludzik, Jozef addReport(reportParams); 261e2362796SWludzik, Jozef sut->removeReport(&reportMock); 262e2362796SWludzik, Jozef sut->removeReport(&reportMock); 2632f9f9b87SWludzik, Jozef checkPoint.Call("end"); 2642f9f9b87SWludzik, Jozef } 265e2362796SWludzik, Jozef 266d960e1f3SWludzik, Jozef TEST_F(TestReportManager, updateReportCallsUpdateReadingsForExistReport) 267d960e1f3SWludzik, Jozef { 268dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock)) 269d960e1f3SWludzik, Jozef .WillOnce(Return(ByMove(std::move(reportMockPtr)))); 270d960e1f3SWludzik, Jozef EXPECT_CALL(reportMock, updateReadings()); 271d960e1f3SWludzik, Jozef 272d960e1f3SWludzik, Jozef addReport(reportParams); 273d960e1f3SWludzik, Jozef sut->updateReport(reportParams.reportName()); 274d960e1f3SWludzik, Jozef } 275d960e1f3SWludzik, Jozef 276d960e1f3SWludzik, Jozef TEST_F(TestReportManager, updateReportDoNothingIfReportDoesNotExist) 277d960e1f3SWludzik, Jozef { 278dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock)) 279d960e1f3SWludzik, Jozef .WillOnce(Return(ByMove(std::move(reportMockPtr)))); 280d960e1f3SWludzik, Jozef EXPECT_CALL(reportMock, updateReadings()).Times(0); 281d960e1f3SWludzik, Jozef 282d960e1f3SWludzik, Jozef addReport(reportParams); 283d960e1f3SWludzik, Jozef sut->updateReport("NotAReport"); 284d960e1f3SWludzik, Jozef } 285d960e1f3SWludzik, Jozef 286e8fc5751SKrzysztof Grobelny class TestReportManagerWithAggregationOperationType : 287e8fc5751SKrzysztof Grobelny public TestReportManager, 288e8fc5751SKrzysztof Grobelny public WithParamInterface<OperationType> 289e8fc5751SKrzysztof Grobelny { 290e8fc5751SKrzysztof Grobelny public: 291e8fc5751SKrzysztof Grobelny OperationType operationType = GetParam(); 292e8fc5751SKrzysztof Grobelny }; 293e8fc5751SKrzysztof Grobelny 294e8fc5751SKrzysztof Grobelny INSTANTIATE_TEST_SUITE_P(_, TestReportManagerWithAggregationOperationType, 295e8fc5751SKrzysztof Grobelny Values(OperationType::single, OperationType::max, 296e8fc5751SKrzysztof Grobelny OperationType::min, OperationType::avg, 297e8fc5751SKrzysztof Grobelny OperationType::sum)); 298e8fc5751SKrzysztof Grobelny 299e8fc5751SKrzysztof Grobelny TEST_P(TestReportManagerWithAggregationOperationType, 300e8fc5751SKrzysztof Grobelny addReportWithDifferentOperationTypes) 301e8fc5751SKrzysztof Grobelny { 302dcc4e193SKrzysztof Grobelny reportParams.metricParameters( 303dcc4e193SKrzysztof Grobelny std::vector<LabeledMetricParameters>{{LabeledMetricParameters{ 304dcc4e193SKrzysztof Grobelny {LabeledSensorParameters{"Service", 305dcc4e193SKrzysztof Grobelny "/xyz/openbmc_project/sensors/power/p1"}}, 306dcc4e193SKrzysztof Grobelny operationType, 307e8fc5751SKrzysztof Grobelny "MetricId1", 308dcc4e193SKrzysztof Grobelny "Metadata1", 309dcc4e193SKrzysztof Grobelny CollectionTimeScope::point, 310dcc4e193SKrzysztof Grobelny CollectionDuration(Milliseconds(0u))}}}); 311e8fc5751SKrzysztof Grobelny 312dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock)) 313e8fc5751SKrzysztof Grobelny .WillOnce(Return(ByMove(std::move(reportMockPtr)))); 314e8fc5751SKrzysztof Grobelny 315e8fc5751SKrzysztof Grobelny auto [ec, path] = addReport(reportParams); 31632859b63SKarol Niczyj 317e8fc5751SKrzysztof Grobelny EXPECT_THAT(ec.value(), Eq(boost::system::errc::success)); 318e8fc5751SKrzysztof Grobelny EXPECT_THAT(path, Eq("/"s + reportParams.reportName())); 319e8fc5751SKrzysztof Grobelny } 320e8fc5751SKrzysztof Grobelny 321e2362796SWludzik, Jozef class TestReportManagerStorage : public TestReportManager 322e2362796SWludzik, Jozef { 323e2362796SWludzik, Jozef public: 324e2362796SWludzik, Jozef using FilePath = interfaces::JsonStorage::FilePath; 325e2362796SWludzik, Jozef using DirectoryPath = interfaces::JsonStorage::DirectoryPath; 326e2362796SWludzik, Jozef 327e2362796SWludzik, Jozef void SetUp() override 328e2362796SWludzik, Jozef { 329dcc4e193SKrzysztof Grobelny EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _)).Times(0); 330dcc4e193SKrzysztof Grobelny 331e2362796SWludzik, Jozef ON_CALL(storageMock, list()) 332e2362796SWludzik, Jozef .WillByDefault(Return(std::vector<FilePath>{FilePath("report1")})); 333e2362796SWludzik, Jozef ON_CALL(storageMock, load(FilePath("report1"))) 3346ccfcbf5SKrzysztof Grobelny .WillByDefault(InvokeWithoutArgs([this] { return data; })); 335e2362796SWludzik, Jozef } 336e2362796SWludzik, Jozef 337e2362796SWludzik, Jozef void makeReportManager() 338e2362796SWludzik, Jozef { 339e2362796SWludzik, Jozef sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr), 340e2362796SWludzik, Jozef std::move(storageMockPtr), 341e2362796SWludzik, Jozef DbusEnvironment::getObjServer()); 342e2362796SWludzik, Jozef } 343e2362796SWludzik, Jozef 344e2362796SWludzik, Jozef nlohmann::json data = nlohmann::json{ 3457e098e93SLukasz Kazmierczak {"Enabled", reportParams.enabled()}, 346e2362796SWludzik, Jozef {"Version", Report::reportVersion}, 347e2362796SWludzik, Jozef {"Name", reportParams.reportName()}, 348*51497a0cSKrzysztof Grobelny {"ReportingType", utils::toUnderlying(reportParams.reportingType())}, 349*51497a0cSKrzysztof Grobelny {"ReportActions", reportParams.reportActions()}, 350e2362796SWludzik, Jozef {"Interval", reportParams.interval().count()}, 351*51497a0cSKrzysztof Grobelny {"ReportUpdates", utils::toUnderlying(reportParams.reportUpdates())}, 3523eb56865SSzymon Dompke {"AppendLimit", reportParams.appendLimit()}, 353dcc4e193SKrzysztof Grobelny {"ReadingParameters", reportParams.metricParameters()}}; 354e2362796SWludzik, Jozef }; 355e2362796SWludzik, Jozef 356e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage, reportManagerCtorAddReportFromStorage) 357e2362796SWludzik, Jozef { 358dcc4e193SKrzysztof Grobelny reportFactoryMock.expectMake(reportParams, _, Ref(storageMock)); 359e2362796SWludzik, Jozef 360e2362796SWludzik, Jozef makeReportManager(); 361e2362796SWludzik, Jozef } 362e2362796SWludzik, Jozef 363e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage, 364e2362796SWludzik, Jozef reportManagerCtorRemoveFileIfVersionDoesNotMatch) 365e2362796SWludzik, Jozef { 366e2362796SWludzik, Jozef data["Version"] = Report::reportVersion - 1; 367e2362796SWludzik, Jozef 368e2362796SWludzik, Jozef EXPECT_CALL(storageMock, remove(FilePath("report1"))); 369e2362796SWludzik, Jozef 370e2362796SWludzik, Jozef makeReportManager(); 371e2362796SWludzik, Jozef } 372e2362796SWludzik, Jozef 373e2362796SWludzik, Jozef TEST_F(TestReportManagerStorage, 374e2362796SWludzik, Jozef reportManagerCtorRemoveFileIfIntervalHasWrongType) 375e2362796SWludzik, Jozef { 376e2362796SWludzik, Jozef data["Interval"] = "1000"; 377e2362796SWludzik, Jozef 378e2362796SWludzik, Jozef EXPECT_CALL(storageMock, remove(FilePath("report1"))); 379e2362796SWludzik, Jozef 380e2362796SWludzik, Jozef makeReportManager(); 381e2362796SWludzik, Jozef } 382