176833cb5SWludzik, Jozef #include "dbus_environment.hpp" 276833cb5SWludzik, Jozef #include "helpers.hpp" 3a4e67616SCezary Zwolak #include "mocks/json_storage_mock.hpp" 4*94f71c51SSzymon Dompke #include "mocks/sensor_mock.hpp" 5*94f71c51SSzymon Dompke #include "mocks/threshold_mock.hpp" 6*94f71c51SSzymon Dompke #include "mocks/trigger_factory_mock.hpp" 776833cb5SWludzik, Jozef #include "mocks/trigger_manager_mock.hpp" 876833cb5SWludzik, Jozef #include "params/trigger_params.hpp" 976833cb5SWludzik, Jozef #include "trigger.hpp" 10e28aa53dSSzymon Dompke #include "trigger_manager.hpp" 114416fce6SCezary Zwolak #include "utils/conversion_trigger.hpp" 124416fce6SCezary Zwolak #include "utils/transform.hpp" 134416fce6SCezary Zwolak #include "utils/tstring.hpp" 144416fce6SCezary Zwolak 154416fce6SCezary Zwolak #include <boost/range/combine.hpp> 1676833cb5SWludzik, Jozef 1776833cb5SWludzik, Jozef using namespace testing; 1876833cb5SWludzik, Jozef using namespace std::literals::string_literals; 1976833cb5SWludzik, Jozef 20*94f71c51SSzymon Dompke static constexpr size_t expectedTriggerVersion = 1; 21a4e67616SCezary Zwolak 2276833cb5SWludzik, Jozef class TestTrigger : public Test 2376833cb5SWludzik, Jozef { 2476833cb5SWludzik, Jozef public: 2576833cb5SWludzik, Jozef TriggerParams triggerParams; 264416fce6SCezary Zwolak TriggerParams triggerDiscreteParams = 274416fce6SCezary Zwolak TriggerParams() 28e28aa53dSSzymon Dompke .id("DiscreteTrigger") 29e28aa53dSSzymon Dompke .name("My Discrete Trigger") 304416fce6SCezary Zwolak .thresholdParams(std::vector<discrete::LabeledThresholdParam>{ 314416fce6SCezary Zwolak discrete::LabeledThresholdParam{ 324416fce6SCezary Zwolak "userId", discrete::Severity::warning, 33dcc4e193SKrzysztof Grobelny Milliseconds(10).count(), "15.2"}, 344416fce6SCezary Zwolak discrete::LabeledThresholdParam{ 354416fce6SCezary Zwolak "userId_2", discrete::Severity::critical, 36dcc4e193SKrzysztof Grobelny Milliseconds(5).count(), "32.7"}, 374416fce6SCezary Zwolak }); 3876833cb5SWludzik, Jozef 3976833cb5SWludzik, Jozef std::unique_ptr<TriggerManagerMock> triggerManagerMockPtr = 4076833cb5SWludzik, Jozef std::make_unique<NiceMock<TriggerManagerMock>>(); 41*94f71c51SSzymon Dompke std::unique_ptr<TriggerFactoryMock> triggerFactoryMockPtr = 42*94f71c51SSzymon Dompke std::make_unique<NiceMock<TriggerFactoryMock>>(); 43a4e67616SCezary Zwolak testing::NiceMock<StorageMock> storageMock; 44*94f71c51SSzymon Dompke std::vector<std::shared_ptr<interfaces::Threshold>> thresholdMocks; 4576833cb5SWludzik, Jozef std::unique_ptr<Trigger> sut; 4676833cb5SWludzik, Jozef 4776833cb5SWludzik, Jozef void SetUp() override 4876833cb5SWludzik, Jozef { 49a4e67616SCezary Zwolak sut = makeTrigger(triggerParams); 50a4e67616SCezary Zwolak } 51a4e67616SCezary Zwolak 524416fce6SCezary Zwolak static std::vector<LabeledSensorInfo> 534416fce6SCezary Zwolak convertToLabeledSensor(const SensorsInfo& sensorsInfo) 544416fce6SCezary Zwolak { 554416fce6SCezary Zwolak return utils::transform(sensorsInfo, [](const auto& sensorInfo) { 564416fce6SCezary Zwolak const auto& [sensorPath, sensorMetadata] = sensorInfo; 574416fce6SCezary Zwolak return LabeledSensorInfo("service1", sensorPath, sensorMetadata); 584416fce6SCezary Zwolak }); 594416fce6SCezary Zwolak } 604416fce6SCezary Zwolak 61a4e67616SCezary Zwolak std::unique_ptr<Trigger> makeTrigger(const TriggerParams& params) 62a4e67616SCezary Zwolak { 63*94f71c51SSzymon Dompke thresholdMocks = 64*94f71c51SSzymon Dompke ThresholdMock::makeThresholds(params.thresholdParams()); 65*94f71c51SSzymon Dompke 66a4e67616SCezary Zwolak return std::make_unique<Trigger>( 6776833cb5SWludzik, Jozef DbusEnvironment::getIoc(), DbusEnvironment::getObjServer(), 68e28aa53dSSzymon Dompke params.id(), params.name(), params.triggerActions(), 69*94f71c51SSzymon Dompke std::make_shared<std::vector<std::string>>( 70*94f71c51SSzymon Dompke params.reportIds().begin(), params.reportIds().end()), 71*94f71c51SSzymon Dompke std::vector<std::shared_ptr<interfaces::Threshold>>(thresholdMocks), 72*94f71c51SSzymon Dompke *triggerManagerMockPtr, storageMock, *triggerFactoryMockPtr, 73*94f71c51SSzymon Dompke SensorMock::makeSensorMocks(params.sensors())); 74a4e67616SCezary Zwolak } 75a4e67616SCezary Zwolak 76a4e67616SCezary Zwolak static interfaces::JsonStorage::FilePath to_file_path(std::string name) 77a4e67616SCezary Zwolak { 78a4e67616SCezary Zwolak return interfaces::JsonStorage::FilePath( 79a4e67616SCezary Zwolak std::to_string(std::hash<std::string>{}(name))); 8076833cb5SWludzik, Jozef } 8176833cb5SWludzik, Jozef 8276833cb5SWludzik, Jozef template <class T> 8376833cb5SWludzik, Jozef static T getProperty(const std::string& path, const std::string& property) 8476833cb5SWludzik, Jozef { 85e28aa53dSSzymon Dompke return DbusEnvironment::getProperty<T>(path, Trigger::triggerIfaceName, 86e28aa53dSSzymon Dompke property); 8776833cb5SWludzik, Jozef } 8876833cb5SWludzik, Jozef 89a4e67616SCezary Zwolak template <class T> 90a4e67616SCezary Zwolak static boost::system::error_code setProperty(const std::string& path, 91a4e67616SCezary Zwolak const std::string& property, 92a4e67616SCezary Zwolak const T& newValue) 93a4e67616SCezary Zwolak { 94e28aa53dSSzymon Dompke return DbusEnvironment::setProperty<T>(path, Trigger::triggerIfaceName, 95e28aa53dSSzymon Dompke property, newValue); 96a4e67616SCezary Zwolak } 97a4e67616SCezary Zwolak 9876833cb5SWludzik, Jozef boost::system::error_code deleteTrigger(const std::string& path) 9976833cb5SWludzik, Jozef { 10076833cb5SWludzik, Jozef std::promise<boost::system::error_code> methodPromise; 10176833cb5SWludzik, Jozef DbusEnvironment::getBus()->async_method_call( 10276833cb5SWludzik, Jozef [&methodPromise](boost::system::error_code ec) { 10376833cb5SWludzik, Jozef methodPromise.set_value(ec); 10476833cb5SWludzik, Jozef }, 10576833cb5SWludzik, Jozef DbusEnvironment::serviceName(), path, Trigger::deleteIfaceName, 10676833cb5SWludzik, Jozef "Delete"); 10776833cb5SWludzik, Jozef return DbusEnvironment::waitForFuture(methodPromise.get_future()); 10876833cb5SWludzik, Jozef } 10976833cb5SWludzik, Jozef }; 11076833cb5SWludzik, Jozef 11176833cb5SWludzik, Jozef TEST_F(TestTrigger, checkIfPropertiesAreSet) 11276833cb5SWludzik, Jozef { 113e28aa53dSSzymon Dompke EXPECT_THAT(getProperty<std::string>(sut->getPath(), "Name"), 114e28aa53dSSzymon Dompke Eq(triggerParams.name())); 115a4e67616SCezary Zwolak EXPECT_THAT(getProperty<bool>(sut->getPath(), "Persistent"), Eq(true)); 1162001301aSSzymon Dompke EXPECT_THAT( 1172001301aSSzymon Dompke getProperty<std::vector<std::string>>(sut->getPath(), "TriggerActions"), 118*94f71c51SSzymon Dompke Eq(utils::transform( 119*94f71c51SSzymon Dompke triggerParams.triggerActions(), 120*94f71c51SSzymon Dompke [](const auto& action) { return actionToString(action); }))); 1214416fce6SCezary Zwolak EXPECT_THAT((getProperty<SensorsInfo>(sut->getPath(), "Sensors")), 1224416fce6SCezary Zwolak Eq(utils::fromLabeledSensorsInfo(triggerParams.sensors()))); 12376833cb5SWludzik, Jozef EXPECT_THAT( 12476833cb5SWludzik, Jozef getProperty<std::vector<std::string>>(sut->getPath(), "ReportNames"), 125b8cc78ddSKrzysztof Grobelny Eq(triggerParams.reportIds())); 12676833cb5SWludzik, Jozef EXPECT_THAT( 127*94f71c51SSzymon Dompke getProperty<bool>(sut->getPath(), "Discrete"), 128*94f71c51SSzymon Dompke Eq(isTriggerThresholdDiscrete(triggerParams.thresholdParams()))); 129*94f71c51SSzymon Dompke EXPECT_THAT( 13076833cb5SWludzik, Jozef getProperty<TriggerThresholdParams>(sut->getPath(), "Thresholds"), 1314416fce6SCezary Zwolak Eq(std::visit(utils::FromLabeledThresholdParamConversion(), 1324416fce6SCezary Zwolak triggerParams.thresholdParams()))); 1334416fce6SCezary Zwolak } 1344416fce6SCezary Zwolak 135e28aa53dSSzymon Dompke TEST_F(TestTrigger, setPropertyNameToCorrectValue) 136e28aa53dSSzymon Dompke { 137e28aa53dSSzymon Dompke std::string name = "custom name 1234 %^#5"; 138e28aa53dSSzymon Dompke EXPECT_THAT(setProperty(sut->getPath(), "Name", name), 139e28aa53dSSzymon Dompke Eq(boost::system::errc::success)); 140e28aa53dSSzymon Dompke EXPECT_THAT(getProperty<std::string>(sut->getPath(), "Name"), Eq(name)); 141e28aa53dSSzymon Dompke } 142e28aa53dSSzymon Dompke 143*94f71c51SSzymon Dompke TEST_F(TestTrigger, setPropertyReportNames) 144*94f71c51SSzymon Dompke { 145*94f71c51SSzymon Dompke std::vector<std::string> newNames = {"abc", "one", "two"}; 146*94f71c51SSzymon Dompke EXPECT_THAT(setProperty(sut->getPath(), "ReportNames", newNames), 147*94f71c51SSzymon Dompke Eq(boost::system::errc::success)); 148*94f71c51SSzymon Dompke EXPECT_THAT( 149*94f71c51SSzymon Dompke getProperty<std::vector<std::string>>(sut->getPath(), "ReportNames"), 150*94f71c51SSzymon Dompke Eq(newNames)); 151*94f71c51SSzymon Dompke } 152*94f71c51SSzymon Dompke 153*94f71c51SSzymon Dompke TEST_F(TestTrigger, setPropertySensors) 154*94f71c51SSzymon Dompke { 155*94f71c51SSzymon Dompke EXPECT_CALL(*triggerFactoryMockPtr, updateSensors(_, _)); 156*94f71c51SSzymon Dompke for (const auto& threshold : thresholdMocks) 157*94f71c51SSzymon Dompke { 158*94f71c51SSzymon Dompke auto thresholdMockPtr = 159*94f71c51SSzymon Dompke std::dynamic_pointer_cast<NiceMock<ThresholdMock>>(threshold); 160*94f71c51SSzymon Dompke EXPECT_CALL(*thresholdMockPtr, updateSensors(_)); 161*94f71c51SSzymon Dompke } 162*94f71c51SSzymon Dompke SensorsInfo newSensors({std::make_pair( 163*94f71c51SSzymon Dompke sdbusplus::message::object_path("/abc/def"), "metadata")}); 164*94f71c51SSzymon Dompke EXPECT_THAT(setProperty(sut->getPath(), "Sensors", newSensors), 165*94f71c51SSzymon Dompke Eq(boost::system::errc::success)); 166*94f71c51SSzymon Dompke } 167*94f71c51SSzymon Dompke 168*94f71c51SSzymon Dompke TEST_F(TestTrigger, setPropertyThresholds) 169*94f71c51SSzymon Dompke { 170*94f71c51SSzymon Dompke EXPECT_CALL(*triggerFactoryMockPtr, updateThresholds(_, _, _, _, _)); 171*94f71c51SSzymon Dompke TriggerThresholdParams newThresholds = 172*94f71c51SSzymon Dompke std::vector<discrete::ThresholdParam>( 173*94f71c51SSzymon Dompke {std::make_tuple("discrete threshold", "OK", 10, "12.3")}); 174*94f71c51SSzymon Dompke EXPECT_THAT(setProperty(sut->getPath(), "Thresholds", newThresholds), 175*94f71c51SSzymon Dompke Eq(boost::system::errc::success)); 176*94f71c51SSzymon Dompke } 177*94f71c51SSzymon Dompke 1784416fce6SCezary Zwolak TEST_F(TestTrigger, checkIfNumericCoversionsAreGood) 1794416fce6SCezary Zwolak { 1804416fce6SCezary Zwolak const auto& labeledParamsBase = 1814416fce6SCezary Zwolak std::get<std::vector<numeric::LabeledThresholdParam>>( 1824416fce6SCezary Zwolak triggerParams.thresholdParams()); 1834416fce6SCezary Zwolak const auto paramsToCheck = 1844416fce6SCezary Zwolak std::visit(utils::FromLabeledThresholdParamConversion(), 1854416fce6SCezary Zwolak triggerParams.thresholdParams()); 1864416fce6SCezary Zwolak const auto labeledParamsToCheck = 1874416fce6SCezary Zwolak std::get<std::vector<numeric::LabeledThresholdParam>>(std::visit( 1884416fce6SCezary Zwolak utils::ToLabeledThresholdParamConversion(), paramsToCheck)); 1894416fce6SCezary Zwolak 1904416fce6SCezary Zwolak for (const auto& [tocheck, base] : 1914416fce6SCezary Zwolak boost::combine(labeledParamsToCheck, labeledParamsBase)) 1924416fce6SCezary Zwolak { 1934416fce6SCezary Zwolak EXPECT_THAT(tocheck.at_label<utils::tstring::Type>(), 1944416fce6SCezary Zwolak Eq(base.at_label<utils::tstring::Type>())); 1954416fce6SCezary Zwolak EXPECT_THAT(tocheck.at_label<utils::tstring::Direction>(), 1964416fce6SCezary Zwolak Eq(base.at_label<utils::tstring::Direction>())); 1974416fce6SCezary Zwolak EXPECT_THAT(tocheck.at_label<utils::tstring::DwellTime>(), 1984416fce6SCezary Zwolak Eq(base.at_label<utils::tstring::DwellTime>())); 1994416fce6SCezary Zwolak EXPECT_THAT(tocheck.at_label<utils::tstring::ThresholdValue>(), 2004416fce6SCezary Zwolak Eq(base.at_label<utils::tstring::ThresholdValue>())); 2014416fce6SCezary Zwolak } 2024416fce6SCezary Zwolak } 2034416fce6SCezary Zwolak 2044416fce6SCezary Zwolak TEST_F(TestTrigger, checkIfDiscreteCoversionsAreGood) 2054416fce6SCezary Zwolak { 2064416fce6SCezary Zwolak const auto& labeledParamsBase = 2074416fce6SCezary Zwolak std::get<std::vector<discrete::LabeledThresholdParam>>( 2084416fce6SCezary Zwolak triggerDiscreteParams.thresholdParams()); 2094416fce6SCezary Zwolak const auto paramsToCheck = 2104416fce6SCezary Zwolak std::visit(utils::FromLabeledThresholdParamConversion(), 2114416fce6SCezary Zwolak triggerDiscreteParams.thresholdParams()); 2124416fce6SCezary Zwolak const auto labeledParamsToCheck = 2134416fce6SCezary Zwolak std::get<std::vector<discrete::LabeledThresholdParam>>(std::visit( 2144416fce6SCezary Zwolak utils::ToLabeledThresholdParamConversion(), paramsToCheck)); 2154416fce6SCezary Zwolak 2164416fce6SCezary Zwolak for (const auto& [tocheck, base] : 2174416fce6SCezary Zwolak boost::combine(labeledParamsToCheck, labeledParamsBase)) 2184416fce6SCezary Zwolak { 2194416fce6SCezary Zwolak EXPECT_THAT(tocheck.at_label<utils::tstring::UserId>(), 2204416fce6SCezary Zwolak Eq(base.at_label<utils::tstring::UserId>())); 2214416fce6SCezary Zwolak EXPECT_THAT(tocheck.at_label<utils::tstring::Severity>(), 2224416fce6SCezary Zwolak Eq(base.at_label<utils::tstring::Severity>())); 2234416fce6SCezary Zwolak EXPECT_THAT(tocheck.at_label<utils::tstring::DwellTime>(), 2244416fce6SCezary Zwolak Eq(base.at_label<utils::tstring::DwellTime>())); 2254416fce6SCezary Zwolak EXPECT_THAT(tocheck.at_label<utils::tstring::ThresholdValue>(), 2264416fce6SCezary Zwolak Eq(base.at_label<utils::tstring::ThresholdValue>())); 2274416fce6SCezary Zwolak } 22876833cb5SWludzik, Jozef } 22976833cb5SWludzik, Jozef 23076833cb5SWludzik, Jozef TEST_F(TestTrigger, deleteTrigger) 23176833cb5SWludzik, Jozef { 232e28aa53dSSzymon Dompke EXPECT_CALL(storageMock, remove(to_file_path(sut->getId()))); 23376833cb5SWludzik, Jozef EXPECT_CALL(*triggerManagerMockPtr, removeTrigger(sut.get())); 23476833cb5SWludzik, Jozef auto ec = deleteTrigger(sut->getPath()); 23576833cb5SWludzik, Jozef EXPECT_THAT(ec, Eq(boost::system::errc::success)); 23676833cb5SWludzik, Jozef } 23776833cb5SWludzik, Jozef 23876833cb5SWludzik, Jozef TEST_F(TestTrigger, deletingNonExistingTriggerReturnInvalidRequestDescriptor) 23976833cb5SWludzik, Jozef { 24076833cb5SWludzik, Jozef auto ec = deleteTrigger(Trigger::triggerDir + "NonExisting"s); 24176833cb5SWludzik, Jozef EXPECT_THAT(ec.value(), Eq(EBADR)); 24276833cb5SWludzik, Jozef } 243a4e67616SCezary Zwolak 2444416fce6SCezary Zwolak TEST_F(TestTrigger, settingPersistencyToFalseRemovesTriggerFromStorage) 245a4e67616SCezary Zwolak { 246e28aa53dSSzymon Dompke EXPECT_CALL(storageMock, remove(to_file_path(sut->getId()))); 247a4e67616SCezary Zwolak 248a4e67616SCezary Zwolak bool persistent = false; 2494416fce6SCezary Zwolak EXPECT_THAT(setProperty(sut->getPath(), "Persistent", persistent), 250a4e67616SCezary Zwolak Eq(boost::system::errc::success)); 251a4e67616SCezary Zwolak EXPECT_THAT(getProperty<bool>(sut->getPath(), "Persistent"), 252a4e67616SCezary Zwolak Eq(persistent)); 253a4e67616SCezary Zwolak } 254a4e67616SCezary Zwolak 255a4e67616SCezary Zwolak class TestTriggerErrors : public TestTrigger 256a4e67616SCezary Zwolak { 257a4e67616SCezary Zwolak public: 258a4e67616SCezary Zwolak void SetUp() override 259a4e67616SCezary Zwolak {} 260a4e67616SCezary Zwolak 261a4e67616SCezary Zwolak nlohmann::json storedConfiguration; 262a4e67616SCezary Zwolak }; 263a4e67616SCezary Zwolak 2644416fce6SCezary Zwolak TEST_F(TestTriggerErrors, exceptionDuringTriggerStoreDisablesPersistency) 265a4e67616SCezary Zwolak { 266a4e67616SCezary Zwolak EXPECT_CALL(storageMock, store(_, _)) 267a4e67616SCezary Zwolak .WillOnce(Throw(std::runtime_error("Generic error!"))); 268a4e67616SCezary Zwolak 269a4e67616SCezary Zwolak sut = makeTrigger(triggerParams); 270a4e67616SCezary Zwolak 271a4e67616SCezary Zwolak EXPECT_THAT(getProperty<bool>(sut->getPath(), "Persistent"), Eq(false)); 272a4e67616SCezary Zwolak } 273a4e67616SCezary Zwolak 274e28aa53dSSzymon Dompke TEST_F(TestTriggerErrors, creatingTriggerThrowsExceptionWhenIdIsInvalid) 275a4e67616SCezary Zwolak { 276a4e67616SCezary Zwolak EXPECT_CALL(storageMock, store(_, _)).Times(0); 277a4e67616SCezary Zwolak 278e28aa53dSSzymon Dompke EXPECT_THROW(makeTrigger(triggerParams.id("inv?lidId")), 279a4e67616SCezary Zwolak sdbusplus::exception::SdBusError); 280a4e67616SCezary Zwolak } 281a4e67616SCezary Zwolak 282a4e67616SCezary Zwolak class TestTriggerStore : public TestTrigger 283a4e67616SCezary Zwolak { 284a4e67616SCezary Zwolak public: 2854416fce6SCezary Zwolak nlohmann::json storedConfiguration; 2864416fce6SCezary Zwolak nlohmann::json storedDiscreteConfiguration; 2874416fce6SCezary Zwolak std::unique_ptr<Trigger> sutDiscrete; 2884416fce6SCezary Zwolak 289a4e67616SCezary Zwolak void SetUp() override 290a4e67616SCezary Zwolak { 291a4e67616SCezary Zwolak ON_CALL(storageMock, store(_, _)) 292a4e67616SCezary Zwolak .WillByDefault(SaveArg<1>(&storedConfiguration)); 293a4e67616SCezary Zwolak sut = makeTrigger(triggerParams); 294a4e67616SCezary Zwolak 2954416fce6SCezary Zwolak ON_CALL(storageMock, store(_, _)) 2964416fce6SCezary Zwolak .WillByDefault(SaveArg<1>(&storedDiscreteConfiguration)); 2974416fce6SCezary Zwolak sutDiscrete = makeTrigger(triggerDiscreteParams); 2984416fce6SCezary Zwolak } 299a4e67616SCezary Zwolak }; 300a4e67616SCezary Zwolak 301a4e67616SCezary Zwolak TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerVersion) 302a4e67616SCezary Zwolak { 303a4e67616SCezary Zwolak ASSERT_THAT(storedConfiguration.at("Version"), Eq(expectedTriggerVersion)); 304a4e67616SCezary Zwolak } 305a4e67616SCezary Zwolak 306e28aa53dSSzymon Dompke TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerId) 307e28aa53dSSzymon Dompke { 308e28aa53dSSzymon Dompke ASSERT_THAT(storedConfiguration.at("Id"), Eq(triggerParams.id())); 309e28aa53dSSzymon Dompke } 310e28aa53dSSzymon Dompke 311a4e67616SCezary Zwolak TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerName) 312a4e67616SCezary Zwolak { 313a4e67616SCezary Zwolak ASSERT_THAT(storedConfiguration.at("Name"), Eq(triggerParams.name())); 314a4e67616SCezary Zwolak } 315a4e67616SCezary Zwolak 3162001301aSSzymon Dompke TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerTriggerActions) 317a4e67616SCezary Zwolak { 3182001301aSSzymon Dompke ASSERT_THAT(storedConfiguration.at("TriggerActions"), 319*94f71c51SSzymon Dompke Eq(utils::transform(triggerParams.triggerActions(), 320*94f71c51SSzymon Dompke [](const auto& action) { 321*94f71c51SSzymon Dompke return actionToString(action); 322*94f71c51SSzymon Dompke }))); 323a4e67616SCezary Zwolak } 324a4e67616SCezary Zwolak 325b8cc78ddSKrzysztof Grobelny TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerReportIds) 326a4e67616SCezary Zwolak { 327b8cc78ddSKrzysztof Grobelny ASSERT_THAT(storedConfiguration.at("ReportIds"), 328b8cc78ddSKrzysztof Grobelny Eq(triggerParams.reportIds())); 329a4e67616SCezary Zwolak } 330a4e67616SCezary Zwolak 331a4e67616SCezary Zwolak TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerSensors) 332a4e67616SCezary Zwolak { 333a4e67616SCezary Zwolak nlohmann::json expectedItem; 3344416fce6SCezary Zwolak expectedItem["service"] = "service1"; 335*94f71c51SSzymon Dompke expectedItem["path"] = "/xyz/openbmc_project/sensors/temperature/BMC_Temp"; 336b8cc78ddSKrzysztof Grobelny expectedItem["metadata"] = "metadata1"; 337a4e67616SCezary Zwolak 338a4e67616SCezary Zwolak ASSERT_THAT(storedConfiguration.at("Sensors"), ElementsAre(expectedItem)); 339a4e67616SCezary Zwolak } 340a4e67616SCezary Zwolak 341a4e67616SCezary Zwolak TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerThresholdParams) 342a4e67616SCezary Zwolak { 343a4e67616SCezary Zwolak nlohmann::json expectedItem0; 344a4e67616SCezary Zwolak expectedItem0["type"] = 0; 345a4e67616SCezary Zwolak expectedItem0["dwellTime"] = 10; 346a4e67616SCezary Zwolak expectedItem0["direction"] = 1; 3474416fce6SCezary Zwolak expectedItem0["thresholdValue"] = 0.5; 348a4e67616SCezary Zwolak 349a4e67616SCezary Zwolak nlohmann::json expectedItem1; 350a4e67616SCezary Zwolak expectedItem1["type"] = 3; 351a4e67616SCezary Zwolak expectedItem1["dwellTime"] = 10; 352a4e67616SCezary Zwolak expectedItem1["direction"] = 2; 3534416fce6SCezary Zwolak expectedItem1["thresholdValue"] = 90.2; 354a4e67616SCezary Zwolak 3554416fce6SCezary Zwolak ASSERT_THAT(storedConfiguration.at("ThresholdParamsDiscriminator"), Eq(0)); 356a4e67616SCezary Zwolak ASSERT_THAT(storedConfiguration.at("ThresholdParams"), 357a4e67616SCezary Zwolak ElementsAre(expectedItem0, expectedItem1)); 358a4e67616SCezary Zwolak } 3594416fce6SCezary Zwolak 3604416fce6SCezary Zwolak TEST_F(TestTriggerStore, 3614416fce6SCezary Zwolak settingPersistencyToTrueStoresDiscreteTriggerThresholdParams) 3624416fce6SCezary Zwolak { 3634416fce6SCezary Zwolak nlohmann::json expectedItem0; 3644416fce6SCezary Zwolak expectedItem0["userId"] = "userId"; 3654416fce6SCezary Zwolak expectedItem0["severity"] = discrete::Severity::warning; 3664416fce6SCezary Zwolak expectedItem0["dwellTime"] = 10; 3679f346790SSzymon Dompke expectedItem0["thresholdValue"] = "15.2"; 3684416fce6SCezary Zwolak 3694416fce6SCezary Zwolak nlohmann::json expectedItem1; 3704416fce6SCezary Zwolak expectedItem1["userId"] = "userId_2"; 3714416fce6SCezary Zwolak expectedItem1["severity"] = discrete::Severity::critical; 3724416fce6SCezary Zwolak expectedItem1["dwellTime"] = 5; 3739f346790SSzymon Dompke expectedItem1["thresholdValue"] = "32.7"; 3744416fce6SCezary Zwolak 3754416fce6SCezary Zwolak ASSERT_THAT(storedDiscreteConfiguration.at("ThresholdParamsDiscriminator"), 3764416fce6SCezary Zwolak Eq(1)); 3774416fce6SCezary Zwolak ASSERT_THAT(storedDiscreteConfiguration.at("ThresholdParams"), 3784416fce6SCezary Zwolak ElementsAre(expectedItem0, expectedItem1)); 3794416fce6SCezary Zwolak } 380