You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2019/03/09 05:08:34 UTC

[nifi-minifi-cpp] 01/02: MINIFICPP-758: Fix tests and enforce protocol

This is an automated email from the ASF dual-hosted git repository.

aldrin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit e99615537becf0b3d7cc7d585dadbe4747f55786
Author: Marc Parisi <ph...@apache.org>
AuthorDate: Fri Mar 8 14:17:06 2019 -0500

    MINIFICPP-758: Fix tests and enforce protocol
    
    This closes #507.
    
    Signed-off-by: Aldrin Piri <al...@apache.org>
---
 conf/minifi.properties                                  |  2 ++
 extensions/http-curl/tests/C2FailedUpdateTest.cpp       |  9 +++++----
 extensions/http-curl/tests/C2NullConfiguration.cpp      |  3 +--
 extensions/http-curl/tests/C2UpdateAgentTest.cpp        | 11 ++++++-----
 extensions/http-curl/tests/C2UpdateTest.cpp             |  9 +++++----
 extensions/http-curl/tests/C2VerifyHeartbeatAndStop.cpp | 11 ++++++-----
 extensions/http-curl/tests/C2VerifyServeResults.cpp     | 13 +++++++------
 libminifi/src/c2/C2Agent.cpp                            |  7 ++++---
 8 files changed, 36 insertions(+), 29 deletions(-)

diff --git a/conf/minifi.properties b/conf/minifi.properties
index dcf773f..eedc221 100644
--- a/conf/minifi.properties
+++ b/conf/minifi.properties
@@ -41,6 +41,8 @@ nifi.database.content.repository.directory.default=${MINIFI_HOME}/content_reposi
 ## define those with missing options
 #nifi.c2.enable=true
 ## define protocol parameters
+## The default is CoAP, if that extension is built. 
+## Alternatively, you may use RESTSender if http-curl is built
 #nifi.c2.agent.protocol.class=CoapProtocol
 #nifi.c2.agent.coap.host=
 #nifi.c2.agent.coap.port=
diff --git a/extensions/http-curl/tests/C2FailedUpdateTest.cpp b/extensions/http-curl/tests/C2FailedUpdateTest.cpp
index 904d931..1df1219 100644
--- a/extensions/http-curl/tests/C2FailedUpdateTest.cpp
+++ b/extensions/http-curl/tests/C2FailedUpdateTest.cpp
@@ -142,10 +142,11 @@ int main(int argc, char **argv) {
 
   std::shared_ptr<minifi::Configure> configuration = std::make_shared<minifi::Configure>();
 
-  configuration->set("c2.enable", "true");
-  configuration->set("c2.agent.class", "test");
-  configuration->set("c2.rest.url", "http://localhost:7071/update");
-  configuration->set("c2.agent.heartbeat.period", "1000");
+  configuration->set("nifi.c2.agent.protocol.class", "RESTSender");
+  configuration->set("nifi.c2.enable", "true");
+  configuration->set("nifi.c2.agent.class", "test");
+  configuration->set("nifi.c2.rest.url", "http://localhost:7071/update");
+  configuration->set("nifi.c2.agent.heartbeat.period", "1000");
   mkdir("content_repository", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
 
   std::shared_ptr<core::Repository> test_repo = std::make_shared<TestRepository>();
diff --git a/extensions/http-curl/tests/C2NullConfiguration.cpp b/extensions/http-curl/tests/C2NullConfiguration.cpp
index 4850844..3b86c49 100644
--- a/extensions/http-curl/tests/C2NullConfiguration.cpp
+++ b/extensions/http-curl/tests/C2NullConfiguration.cpp
@@ -79,7 +79,6 @@ class VerifyC2Server : public CoapIntegrationBase {
   }
 
   void runAssertions() {
-    assert(LogTestController::getInstance().contains("C2Agent] [info] Class is null") == true);
     assert(LogTestController::getInstance().contains("C2Agent] [debug] Could not instantiate null") == true);
     assert(LogTestController::getInstance().contains("Class is RESTSender") == true);
   }
@@ -98,7 +97,7 @@ class VerifyC2Server : public CoapIntegrationBase {
     parse_http_components(url, port, scheme, path);
     configuration->set("c2.enable", "true");
     configuration->set("c2.agent.class", "test");
-    configuration->set("c2.agent.protocol.class", "null");
+    configuration->set("c2.agent.protocol.class", "RESTSender");
     configuration->set("c2.rest.url", "");
     configuration->set("c2.rest.url.ack", "");
     configuration->set("c2.agent.heartbeat.reporter.classes", "null");
diff --git a/extensions/http-curl/tests/C2UpdateAgentTest.cpp b/extensions/http-curl/tests/C2UpdateAgentTest.cpp
index 049f506..85d0d0e 100644
--- a/extensions/http-curl/tests/C2UpdateAgentTest.cpp
+++ b/extensions/http-curl/tests/C2UpdateAgentTest.cpp
@@ -140,11 +140,12 @@ int main(int argc, char **argv) {
 
   std::shared_ptr<minifi::Configure> configuration = std::make_shared<minifi::Configure>();
 
-  configuration->set("c2.enable", "true");
-  configuration->set("c2.agent.class", "test");
-  configuration->set("c2.agent.update.allow","true");
-  configuration->set("c2.rest.url", "http://localhost:7072/update");
-  configuration->set("c2.agent.heartbeat.period", "1000");
+  configuration->set("nifi.c2.agent.protocol.class", "RESTSender");
+  configuration->set("nifi.c2.enable", "true");
+  configuration->set("nifi.c2.agent.class", "test");
+  configuration->set("nifi.c2.agent.update.allow","true");
+  configuration->set("nifi.c2.rest.url", "http://localhost:7072/update");
+  configuration->set("nifi.c2.agent.heartbeat.period", "1000");
   mkdir("content_repository", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
 
   std::shared_ptr<core::Repository> test_repo = std::make_shared<TestRepository>();
diff --git a/extensions/http-curl/tests/C2UpdateTest.cpp b/extensions/http-curl/tests/C2UpdateTest.cpp
index a5166f3..64002c6 100644
--- a/extensions/http-curl/tests/C2UpdateTest.cpp
+++ b/extensions/http-curl/tests/C2UpdateTest.cpp
@@ -140,10 +140,11 @@ int main(int argc, char **argv) {
 
   std::shared_ptr<minifi::Configure> configuration = std::make_shared<minifi::Configure>();
 
-  configuration->set("c2.enable", "true");
-  configuration->set("c2.agent.class", "test");
-  configuration->set("c2.rest.url", "http://localhost:7070/update");
-  configuration->set("c2.agent.heartbeat.period", "1000");
+  configuration->set("nifi.c2.agent.protocol.class", "RESTSender");
+  configuration->set("nifi.c2.enable", "true");
+  configuration->set("nifi.c2.agent.class", "test");
+  configuration->set("nifi.c2.rest.url", "http://localhost:7070/update");
+  configuration->set("nifi.c2.agent.heartbeat.period", "1000");
   mkdir("content_repository", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
 
   std::shared_ptr<core::Repository> test_repo = std::make_shared<TestRepository>();
diff --git a/extensions/http-curl/tests/C2VerifyHeartbeatAndStop.cpp b/extensions/http-curl/tests/C2VerifyHeartbeatAndStop.cpp
index d299851..e849b26 100644
--- a/extensions/http-curl/tests/C2VerifyHeartbeatAndStop.cpp
+++ b/extensions/http-curl/tests/C2VerifyHeartbeatAndStop.cpp
@@ -162,11 +162,12 @@ class VerifyC2Heartbeat : public CoapIntegrationBase {
     std::string url = "";
     inv->getProperty(minifi::processors::InvokeHTTP::URL.getName(), url);
 
-    configuration->set("c2.enable", "true");
-    configuration->set("c2.agent.class", "test");
-    configuration->set("c2.rest.url", "http://localhost:8888/api/heartbeat");
-    configuration->set("c2.agent.heartbeat.period", "1000");
-    configuration->set("c2.rest.url.ack", "http://localhost:8888/api/heartbeat");
+    configuration->set("nifi.c2.agent.protocol.class", "RESTSender");
+    configuration->set("nifi.c2.enable", "true");
+    configuration->set("nifi.c2.agent.class", "test");
+    configuration->set("nifi.c2.rest.url", "http://localhost:8888/api/heartbeat");
+    configuration->set("nifi.c2.agent.heartbeat.period", "1000");
+    configuration->set("nifi.c2.rest.url.ack", "http://localhost:8888/api/heartbeat");
     configuration->set("nifi.c2.root.classes", "DeviceInfoNode,AgentInformation,FlowInformation");
   }
 
diff --git a/extensions/http-curl/tests/C2VerifyServeResults.cpp b/extensions/http-curl/tests/C2VerifyServeResults.cpp
index 601a5a2..ac4ee54 100644
--- a/extensions/http-curl/tests/C2VerifyServeResults.cpp
+++ b/extensions/http-curl/tests/C2VerifyServeResults.cpp
@@ -115,12 +115,13 @@ class VerifyC2Server : public CoapIntegrationBase {
 
     std::string port, scheme, path;
     parse_http_components(url, port, scheme, path);
-    configuration->set("c2.enable", "true");
-    configuration->set("c2.agent.class", "test");
-    configuration->set("c2.agent.heartbeat.reporter.classes", "RESTReceiver");
-    configuration->set("c2.rest.listener.port", port);
-    configuration->set("c2.agent.heartbeat.period", "10");
-    configuration->set("c2.rest.listener.heartbeat.rooturi", path);
+    configuration->set("nifi.c2.enable", "true");
+    configuration->set("nifi.c2.agent.class", "test");
+    configuration->set("nifi.c2.agent.heartbeat.reporter.classes", "RESTReceiver");
+    configuration->set("nifi.c2.agent.protocol.class", "RESTSender");
+    configuration->set("nifi.c2.rest.listener.port", port);
+    configuration->set("nifi.c2.agent.heartbeat.period", "10");
+    configuration->set("nifi.c2.rest.listener.heartbeat.rooturi", path);
   }
 
  protected:
diff --git a/libminifi/src/c2/C2Agent.cpp b/libminifi/src/c2/C2Agent.cpp
index b64e65e..f2f9999 100644
--- a/libminifi/src/c2/C2Agent.cpp
+++ b/libminifi/src/c2/C2Agent.cpp
@@ -158,12 +158,13 @@ void C2Agent::configure(const std::shared_ptr<Configure> &configure, bool reconf
 
     if (protocol == nullptr) {
       logger_->log_info("Class %s not found", clazz);
-      protocol = core::ClassLoader::getDefaultClassLoader().instantiateRaw("CoapProtocol", "RESTSender");
-
+      protocol = core::ClassLoader::getDefaultClassLoader().instantiateRaw("CoapProtocol", "CoapProtocol");
       if (!protocol) {
+        logger_->log_info("Attempted to load CoapProtocol. To enable C2, please specify an active protocol for this agent.");
         return;
+      } else {
+        logger_->log_info("Class is CoapProtocol");
       }
-      logger_->log_info("Class is CoapProtocol");
     }
     C2Protocol *old_protocol = protocol_.exchange(dynamic_cast<C2Protocol*>(protocol));