Verify reading parameters on update
Adds verification of ReadingParameter's metric count when property is
being updated. This brings consistency with behavior upon adding a new
report, where that same check is being made. Also adds a unit test for
that check.
Tested:
On platform, by updating report's ReadingParameter with object
containing metric count exceeding one specified by
`max-reading-parameters` project option. With this change applied, that
operation failed, as expected.
Change-Id: I06c8e21178d6bd554b62886e0e4f8cd0589f0d09
Signed-off-by: Michal Orzel <michalx.orzel@intel.com>
diff --git a/tests/src/test_report.cpp b/tests/src/test_report.cpp
index 10ba120..e4e5510 100644
--- a/tests/src/test_report.cpp
+++ b/tests/src/test_report.cpp
@@ -290,6 +290,31 @@
Eq(newParams));
}
+TEST_F(TestReport, setReadingParametersFailsWhenMetricCountExceedsAllowedValue)
+{
+ std::vector<LabeledMetricParameters> readingParams{{LabeledMetricParameters{
+ {LabeledSensorInfo{"Service", "/xyz/openbmc_project/sensors/power/psu",
+ "NewMetadata123"}},
+ OperationType::avg,
+ CollectionTimeScope::startup,
+ CollectionDuration(250ms)}}};
+
+ auto& metricParamsVec =
+ readingParams[0].at_label<utils::tstring::SensorPath>();
+ for (size_t i = 0; i < ReportManager::maxNumberMetrics; i++)
+ {
+ metricParamsVec.emplace_back(LabeledSensorInfo{
+ "Service", "/xyz/openbmc_project/sensors/power/psu",
+ "NewMetadata123"});
+ }
+
+ ReadingParameters newParams = toReadingParameters(readingParams);
+
+ EXPECT_THAT(
+ setProperty(sut->getPath(), "ReadingParameters", newParams).value(),
+ Eq(boost::system::errc::invalid_argument));
+}
+
TEST_F(TestReport, setReportActionsWithValidNewActions)
{
std::vector<std::string> newActions = {