You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flume.apache.org by es...@apache.org on 2011/08/12 02:48:55 UTC

svn commit: r1156919 - in /incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume: node/TestDefaultLogicalNodeManager.java source/ source/FlakeySequenceGeneratorSource.java

Author: esammer
Date: Fri Aug 12 00:48:55 2011
New Revision: 1156919

URL: http://svn.apache.org/viewvc?rev=1156919&view=rev
Log:
- Added a FlakeySequenceGeneratorSource (randomly explodes with interrupted exception). - Added a node manager test that has 30 instances of FlakeySequenceGeneratorSource to test error handling.

Added:
    incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/source/
    incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/source/FlakeySequenceGeneratorSource.java
Modified:
    incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/node/TestDefaultLogicalNodeManager.java

Modified: incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/node/TestDefaultLogicalNodeManager.java
URL: http://svn.apache.org/viewvc/incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/node/TestDefaultLogicalNodeManager.java?rev=1156919&r1=1156918&r2=1156919&view=diff
==============================================================================
--- incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/node/TestDefaultLogicalNodeManager.java (original)
+++ incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/node/TestDefaultLogicalNodeManager.java Fri Aug 12 00:48:55 2011
@@ -10,6 +10,7 @@ import org.apache.flume.lifecycle.Lifecy
 import org.apache.flume.lifecycle.LifecycleState;
 import org.apache.flume.node.nodemanager.DefaultLogicalNodeManager;
 import org.apache.flume.sink.NullSink;
+import org.apache.flume.source.FlakeySequenceGeneratorSource;
 import org.apache.flume.source.SequenceGeneratorSource;
 import org.junit.Assert;
 import org.junit.Before;
@@ -103,4 +104,38 @@ public class TestDefaultLogicalNodeManag
             LifecycleState.STOP_OR_ERROR, 5000));
   }
 
+  @Test
+  public void testErrorNode() throws LifecycleException, InterruptedException {
+
+    Set<LogicalNode> testNodes = new HashSet<LogicalNode>();
+
+    for (int i = 0; i < 30; i++) {
+      LogicalNode node = new LogicalNode();
+
+      node.setName("test-node-" + i);
+      node.setSource(new FlakeySequenceGeneratorSource());
+      node.setSink(new NullSink());
+
+      testNodes.add(node);
+    }
+
+    Context context = new Context();
+
+    nodeManager.start(context);
+    Assert.assertTrue("Node manager didn't reach START or ERROR",
+        LifecycleController.waitForOneOf(nodeManager,
+            LifecycleState.START_OR_ERROR, 5000));
+
+    for (LogicalNode node : testNodes) {
+      nodeManager.add(node);
+    }
+
+    Thread.sleep(5000);
+
+    nodeManager.stop(context);
+    Assert.assertTrue("Node manager didn't reach STOP or ERROR",
+        LifecycleController.waitForOneOf(nodeManager,
+            LifecycleState.STOP_OR_ERROR, 5000));
+  }
+
 }

Added: incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/source/FlakeySequenceGeneratorSource.java
URL: http://svn.apache.org/viewvc/incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/source/FlakeySequenceGeneratorSource.java?rev=1156919&view=auto
==============================================================================
--- incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/source/FlakeySequenceGeneratorSource.java (added)
+++ incubator/flume/branches/flume-728/flume-ng-node/src/test/java/org/apache/flume/source/FlakeySequenceGeneratorSource.java Fri Aug 12 00:48:55 2011
@@ -0,0 +1,26 @@
+package org.apache.flume.source;
+
+import org.apache.flume.Context;
+import org.apache.flume.Event;
+import org.apache.flume.EventDeliveryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class FlakeySequenceGeneratorSource extends SequenceGeneratorSource {
+
+  private static final Logger logger = LoggerFactory
+      .getLogger(FlakeySequenceGeneratorSource.class);
+
+  @Override
+  public Event<?> next(Context context) throws InterruptedException,
+      EventDeliveryException {
+
+    if (Math.round(Math.random()) == 1) {
+      Thread.sleep(1000);
+      throw new InterruptedException("I'm broken!");
+    }
+
+    return super.next(context);
+  }
+
+}