Repository: nifi
Updated Branches:
  refs/heads/master 502aebc66 -> 1c73d9090


NIFI-1501 : Test Monitor Activity has spurious failures.

Added Timeout for the test. So, in case something goes South, threshold will 
never be more that that Timeout period.

Reviewed with amendments for whitespace by Tony Kurc ([email protected]). This 
closes #225


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/1c73d909
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/1c73d909
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/1c73d909

Branch: refs/heads/master
Commit: 1c73d9090ac556900c78b43fefb7935183caf137
Parents: 502aebc
Author: [email protected] <[email protected]>
Authored: Tue Feb 16 02:00:08 2016 -0600
Committer: Tony Kurc <[email protected]>
Committed: Wed Feb 17 21:55:10 2016 -0500

----------------------------------------------------------------------
 .../standard/TestMonitorActivity.java           | 34 ++++++++++++++------
 1 file changed, 25 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/1c73d909/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMonitorActivity.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMonitorActivity.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMonitorActivity.java
index f02e6da..16eaa4d 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMonitorActivity.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMonitorActivity.java
@@ -18,8 +18,10 @@ package org.apache.nifi.processors.standard;
 
 import java.io.IOException;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.regex.Pattern;
+
 import org.apache.nifi.flowfile.attributes.CoreAttributes;
 import org.apache.nifi.util.MockFlowFile;
 import org.apache.nifi.util.TestRunner;
@@ -189,21 +191,35 @@ public class TestMonitorActivity {
                         originalFlowFile.getLineageStartDate(), 
restoredFlowFile.getLineageStartDate()), restoredFlowFile.getLineageStartDate() 
!= originalFlowFile.getLineageStartDate());
     }
 
-    @Test
+    @Test(timeout=5000)
     public void testFirstRunNoMessages() throws InterruptedException, 
IOException {
         // don't use the TestableProcessor, we want the real timestamp from 
@OnScheduled
         final TestRunner runner = TestRunners.newTestRunner(new 
MonitorActivity());
         runner.setProperty(MonitorActivity.CONTINUALLY_SEND_MESSAGES, "false");
-        runner.setProperty(MonitorActivity.THRESHOLD, "100 millis");
+        int threshold = 100;
+        boolean rerun = false;
+        do {
+            rerun = false;
+            runner.setProperty(MonitorActivity.THRESHOLD, threshold + " 
millis");
 
-        Thread.sleep(1000L);
+            Thread.sleep(1000L);
 
-        // shouldn't generate inactivity b/c run() will reset the 
lastSuccessfulTransfer
-        runner.run();
-        runner.assertTransferCount(MonitorActivity.REL_SUCCESS, 0);
-        runner.assertTransferCount(MonitorActivity.REL_INACTIVE, 0);
-        runner.assertTransferCount(MonitorActivity.REL_ACTIVITY_RESTORED, 0);
-        runner.clearTransferState();
+            // shouldn't generate inactivity b/c run() will reset the 
lastSuccessfulTransfer if @OnSchedule & onTrigger
+            // does not  get called more than MonitorActivity.THRESHOLD apart
+            runner.run();
+            runner.assertTransferCount(MonitorActivity.REL_SUCCESS, 0);
+            List<MockFlowFile> inactiveFlowFiles = 
runner.getFlowFilesForRelationship(MonitorActivity.REL_INACTIVE);
+            if (inactiveFlowFiles.size() == 1) {
+                // Seems Threshold was not sufficient, which has caused One 
inactive message.
+                // Step-up and rerun the test until successful or jUnit 
Timesout
+                threshold += threshold;
+                rerun = true;
+            } else {
+                runner.assertTransferCount(MonitorActivity.REL_INACTIVE, 0);
+            }
+            runner.assertTransferCount(MonitorActivity.REL_ACTIVITY_RESTORED, 
0);
+            runner.clearTransferState();
+        } while(rerun);
     }
 
     /**

Reply via email to