From f169b5d12aa581a7a0539fb14e31b00cec0ab9aa Mon Sep 17 00:00:00 2001 From: dan Date: Tue, 14 Nov 2023 17:04:57 +0000 Subject: [PATCH] updade code coverage --- .../src/RSUHealthMonitorPlugin.cpp | 12 +++------ .../src/RSUHealthMonitorWorker.cpp | 26 +++++++++++++++++++ .../src/RSUHealthMonitorWorker.h | 7 +++++ .../test/test_RSUHealthMonitorWorker.cpp | 2 ++ 4 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.cpp b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.cpp index 8d61a24d0..ae85189c2 100755 --- a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.cpp +++ b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorPlugin.cpp @@ -68,17 +68,13 @@ namespace RSUHealthMonitor void RSUHealthMonitorPlugin::BroadcastRSUStatus(const Json::Value &rsuStatusJson) { // Broadcast the RSU status info when there are RSU responses. - if (!rsuStatusJson.empty()) + if (!rsuStatusJson.empty() && _rsuWorker) { - vector rsuStatusFields; - for (auto const &field : rsuStatusJson.getMemberNames()) - { - rsuStatusFields.push_back(field); - } + auto rsuStatusFields = _rsuWorker->getJsonKeys(rsuStatusJson); auto configTbl = _rsuWorker->GetRSUStatusConfig(_rsuMibVersion); - + // Only broadcast RSU status when all required fields are present. - if (_rsuWorker && _rsuWorker->validateAllRequiredFieldsPresent(configTbl, rsuStatusFields)) + if (_rsuWorker->validateAllRequiredFieldsPresent(configTbl, rsuStatusFields)) { auto sendRsuStatusMsg = _rsuWorker->convertJsonToTMXMsg(rsuStatusJson); BroadcastMessage(sendRsuStatusMsg, RSUHealthMonitorPlugin::GetName()); diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.cpp b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.cpp index 985d72e5f..6de25d57e 100644 --- a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.cpp +++ b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.cpp @@ -188,4 +188,30 @@ namespace RSUHealthMonitor rsuStatusMsg.set_contents(json_str); return rsuStatusMsg; } + + vector RSUHealthMonitorWorker::getJsonKeys(const Json::Value &json) const + { + vector keys; + if (json.isArray()) + { + for (auto itr = json.begin(); itr != json.end(); itr++) + { + if (itr->isObject()) + { + for (auto const &field : itr->getMemberNames()) + { + keys.push_back(field); + } + } + } + } + else if (json.isObject()) + { + for (auto const &field : json.getMemberNames()) + { + keys.push_back(field); + } + } + return keys; + } } \ No newline at end of file diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.h b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.h index 9fa36c892..ef7a429c5 100644 --- a/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.h +++ b/src/v2i-hub/RSUHealthMonitorPlugin/src/RSUHealthMonitorWorker.h @@ -104,6 +104,13 @@ namespace RSUHealthMonitor */ Json::Value populateJson(const string &field, const snmp_response_obj &response) const; + /** + * @brief List the keys from the input Json values + * @param Json Input JSON values + * @return vector of key strings + */ + vector getJsonKeys(const Json::Value &json) const; + // Delete move constructor RSUHealthMonitorWorker(RSUHealthMonitorWorker &&worker) = delete; diff --git a/src/v2i-hub/RSUHealthMonitorPlugin/test/test_RSUHealthMonitorWorker.cpp b/src/v2i-hub/RSUHealthMonitorPlugin/test/test_RSUHealthMonitorWorker.cpp index fb8de1599..9d749f0df 100644 --- a/src/v2i-hub/RSUHealthMonitorPlugin/test/test_RSUHealthMonitorWorker.cpp +++ b/src/v2i-hub/RSUHealthMonitorPlugin/test/test_RSUHealthMonitorWorker.cpp @@ -101,6 +101,8 @@ namespace RSUHealthMonitor string json_str = fasterWirter.write(rsuStatusJson); string expectedStr = "[{\"rsuGpsOutputString\":\"$GPGGA,142440.00,3857.3065,N,07708.9734,W,2,18,0.65,86.18,M,-34.722,M,,*62\",\"rsuGpsOutputStringLatitude\":38.955108330000002,\"rsuGpsOutputStringLongitude\":-77.149556669999996},{\"rsuMode\":4}]\n"; ASSERT_EQ(expectedStr, json_str); + ASSERT_EQ(4, _rsuWorker->getJsonKeys(rsuStatusJson).size()); + ASSERT_EQ(1, _rsuWorker->getJsonKeys(json).size()); } } \ No newline at end of file