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 = {