szaszm commented on code in PR #1909:
URL: https://github.com/apache/nifi-minifi-cpp/pull/1909#discussion_r1918452835


##########
libminifi/test/integration/C2MetricsTest.cpp:
##########
@@ -126,28 +130,60 @@ class MetricsHandler: public HeartbeatHandler {
     }
   }
 
+  static bool processorMetricsAreValid(const auto& processor) {
+    return processor["bytesRead"].GetInt() >= 0 &&
+      processor["bytesWritten"].GetInt() >= 0 &&
+      processor["flowFilesIn"].GetInt() >= 0 &&
+      processor["flowFilesOut"].GetInt() >= 0 &&
+      processor["bytesIn"].GetInt() >= 0 &&
+      processor["bytesOut"].GetInt() >= 0 &&
+      processor["invocations"].GetInt() >= 0 &&
+      processor["processingNanos"].GetInt() >= 0 &&
+      processor["activeThreadCount"].GetInt() == -1 &&
+      processor["terminatedThreadCount"].GetInt() == -1 &&
+      processor["running"].GetBool();
+  }
+
   static bool verifyRuntimeMetrics(const rapidjson::Value& runtime_metrics) {
     return runtime_metrics.HasMember("deviceInfo") &&
       runtime_metrics.HasMember("flowInfo") &&
       runtime_metrics["flowInfo"].HasMember("versionedFlowSnapshotURI") &&
       runtime_metrics["flowInfo"].HasMember("queues") &&
-      runtime_metrics["flowInfo"].HasMember("components") &&
       
runtime_metrics["flowInfo"]["queues"].HasMember("2438e3c8-015a-1000-79ca-83af40ec1997")
 &&
-      runtime_metrics["flowInfo"]["components"].HasMember("FlowController") &&
-      runtime_metrics["flowInfo"]["components"].HasMember("GetTCP") &&
-      runtime_metrics["flowInfo"]["components"].HasMember("LogAttribute");
+      runtime_metrics["flowInfo"].HasMember("processorStatuses") &&
+      [&]() {
+        if (runtime_metrics["flowInfo"]["processorStatuses"].GetArray().Size() 
!= 2) {
+          return false;
+        }
+        const auto processor_statuses = 
runtime_metrics["flowInfo"]["processorStatuses"].GetArray();

Review Comment:
   ```suggestion
           const auto processor_statuses = 
runtime_metrics["flowInfo"]["processorStatuses"].GetArray();
           if (processor_statuses.Size() != 2) {
             return false;
           }
   ```



##########
libminifi/test/integration/C2MetricsTest.cpp:
##########
@@ -126,28 +130,60 @@ class MetricsHandler: public HeartbeatHandler {
     }
   }
 
+  static bool processorMetricsAreValid(const auto& processor) {
+    return processor["bytesRead"].GetInt() >= 0 &&
+      processor["bytesWritten"].GetInt() >= 0 &&
+      processor["flowFilesIn"].GetInt() >= 0 &&
+      processor["flowFilesOut"].GetInt() >= 0 &&
+      processor["bytesIn"].GetInt() >= 0 &&
+      processor["bytesOut"].GetInt() >= 0 &&
+      processor["invocations"].GetInt() >= 0 &&
+      processor["processingNanos"].GetInt() >= 0 &&
+      processor["activeThreadCount"].GetInt() == -1 &&
+      processor["terminatedThreadCount"].GetInt() == -1 &&
+      processor["running"].GetBool();
+  }
+
   static bool verifyRuntimeMetrics(const rapidjson::Value& runtime_metrics) {
     return runtime_metrics.HasMember("deviceInfo") &&
       runtime_metrics.HasMember("flowInfo") &&
       runtime_metrics["flowInfo"].HasMember("versionedFlowSnapshotURI") &&
       runtime_metrics["flowInfo"].HasMember("queues") &&
-      runtime_metrics["flowInfo"].HasMember("components") &&
       
runtime_metrics["flowInfo"]["queues"].HasMember("2438e3c8-015a-1000-79ca-83af40ec1997")
 &&
-      runtime_metrics["flowInfo"]["components"].HasMember("FlowController") &&
-      runtime_metrics["flowInfo"]["components"].HasMember("GetTCP") &&
-      runtime_metrics["flowInfo"]["components"].HasMember("LogAttribute");
+      runtime_metrics["flowInfo"].HasMember("processorStatuses") &&
+      [&]() {
+        if (runtime_metrics["flowInfo"]["processorStatuses"].GetArray().Size() 
!= 2) {
+          return false;
+        }
+        const auto processor_statuses = 
runtime_metrics["flowInfo"]["processorStatuses"].GetArray();
+        return std::all_of(processor_statuses.begin(), 
processor_statuses.end(), [&](const auto& processor) {
+          if (processor["id"].GetString() != std::string(GETTCP_UUID) && 
processor["id"].GetString() != std::string(LOGATTRIBUTE1_UUID)) {
+            throw std::runtime_error(std::string("Unexpected processor id in 
processorStatuses: ") + processor["id"].GetString());
+          }
+          return processorMetricsAreValid(processor);
+        });
+      }();
   }
 
   static bool verifyUpdatedRuntimeMetrics(const rapidjson::Value& 
runtime_metrics) {
     return runtime_metrics.HasMember("deviceInfo") &&
       runtime_metrics.HasMember("flowInfo") &&
       runtime_metrics["flowInfo"].HasMember("versionedFlowSnapshotURI") &&
       runtime_metrics["flowInfo"].HasMember("queues") &&
-      runtime_metrics["flowInfo"].HasMember("components") &&
       
runtime_metrics["flowInfo"]["queues"].HasMember("8368e3c8-015a-1003-52ca-83af40ec1332")
 &&
-      runtime_metrics["flowInfo"]["components"].HasMember("FlowController") &&
-      runtime_metrics["flowInfo"]["components"].HasMember("GenerateFlowFile") 
&&
-      runtime_metrics["flowInfo"]["components"].HasMember("LogAttribute");
+      runtime_metrics["flowInfo"].HasMember("processorStatuses") &&
+      [&]() {
+        if (runtime_metrics["flowInfo"]["processorStatuses"].GetArray().Size() 
!= 2) {
+          return false;
+        }
+        const auto processor_statuses = 
runtime_metrics["flowInfo"]["processorStatuses"].GetArray();

Review Comment:
   ```suggestion
           const auto processor_statuses = 
runtime_metrics["flowInfo"]["processorStatuses"].GetArray();
           if (processor_statuses.Size() != 2) {
             return false;
           }
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to