Fix trigger type for OnChange triggers
Triggers with no threshold parameters should be treated as ones that
activate on change of monitored metric values', with `Discrete` property
value set to true. Otherwise they will be wrongly treated as numeric
triggers on Redfish side. This patch corrects this behavior.
Tested:
1. Created simple discrete trigger: `TestTriggerDiscreteOnChange`, with
`DiscreteTriggerCondition` set to `Changed`.
2. busctl introspect xyz.openbmc_project.Telemetry
/xyz/openbmc_project/Telemetry/Triggers/TelemetryService/
TestTriggerDiscreteOnChange
3. Verified that `Discrete` property is true
All unit tests have passed.
Change-Id: I06762c94b38a9da42a64c9a014d3f6dd47577176
Signed-off-by: Michal Orzel <michalx.orzel@intel.com>
diff --git a/tests/src/test_trigger.cpp b/tests/src/test_trigger.cpp
index c2f7774..7764c8d 100644
--- a/tests/src/test_trigger.cpp
+++ b/tests/src/test_trigger.cpp
@@ -443,6 +443,26 @@
Eq(persistent));
}
+class TestOnChangeTrigger : public TestTrigger
+{
+ public:
+ TriggerParams onChangeTriggerParams =
+ TriggerParams()
+ .id("DiscreteOnChangeTrigger")
+ .name("My Discrete On Change Trigger")
+ .thresholdParams(std::vector<numeric::LabeledThresholdParam>{});
+
+ void SetUp() override
+ {
+ sut = makeTrigger(onChangeTriggerParams);
+ }
+};
+
+TEST_F(TestOnChangeTrigger, isDiscrete)
+{
+ EXPECT_THAT(getProperty<bool>(sut->getPath(), "Discrete"), Eq(true));
+}
+
class TestTriggerInitialization : public TestTrigger
{
public: