Refactor MessageCollectorActor and DoNothingActor
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / test / java / org / opendaylight / controller / cluster / raft / utils / MessageCollectorActor.java
index 6ea7a20924d4480b0497c02e715eefddee81556c..7e3e344908aa83fe973a666beb84a5701b08a13c 100644 (file)
@@ -31,7 +31,7 @@ import scala.concurrent.duration.FiniteDuration;
 
 public class MessageCollectorActor extends UntypedActor {
     private static final String ARE_YOU_READY = "ARE_YOU_READY";
-    private static final String GET_ALL_MESSAGES = "get-all-messages";
+    public static final String GET_ALL_MESSAGES = "messages";
     private static final String CLEAR_MESSAGES = "clear-messages";
 
     private final List<Object> messages = new ArrayList<>();
@@ -45,7 +45,7 @@ public class MessageCollectorActor extends UntypedActor {
         if(GET_ALL_MESSAGES.equals(message)) {
             getSender().tell(new ArrayList<>(messages), getSelf());
         } else if(CLEAR_MESSAGES.equals(message)) {
-            messages.clear();
+            clear();
         } else if(message != null) {
             messages.add(SerializationUtils.fromSerializable(message));
         }
@@ -55,7 +55,7 @@ public class MessageCollectorActor extends UntypedActor {
         messages.clear();
     }
 
-    public static List<Object> getAllMessages(ActorRef actor) throws Exception {
+    private static List<Object> getAllMessages(ActorRef actor) throws Exception {
         FiniteDuration operationDuration = Duration.create(5, TimeUnit.SECONDS);
         Timeout operationTimeout = new Timeout(operationDuration);
         Future<Object> future = Patterns.ask(actor, GET_ALL_MESSAGES, operationTimeout);
@@ -78,7 +78,7 @@ public class MessageCollectorActor extends UntypedActor {
 
         for(Object message : allMessages){
             if(message.getClass().equals(clazz)){
-                return (T) message;
+                return clazz.cast(message);
             }
         }
 
@@ -108,6 +108,7 @@ public class MessageCollectorActor extends UntypedActor {
         return expectFirstMatching(actor, clazz, 5000);
     }
 
+
     public static <T> T expectFirstMatching(ActorRef actor, Class<T> clazz, long timeout) {
         int count = (int) (timeout / 50);
         for(int i = 0; i < count; i++) {
@@ -147,6 +148,28 @@ public class MessageCollectorActor extends UntypedActor {
         return null;
     }
 
+    public static <T> void assertNoneMatching(ActorRef actor, Class<T> clazz) {
+        assertNoneMatching(actor, clazz, 5000);
+    }
+
+    public static <T> void assertNoneMatching(ActorRef actor, Class<T> clazz, long timeout) {
+        int count = (int) (timeout / 50);
+        for(int i = 0; i < count; i++) {
+            try {
+                T message = getFirstMatching(actor, clazz);
+                if(message != null) {
+                    Assert.fail("Unexpected message received" +  message.toString());
+                    return;
+                }
+            } catch (Exception e) {}
+
+            Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS);
+        }
+
+        return;
+    }
+
+
     public static <T> List<T> getAllMatching(ActorRef actor, Class<T> clazz) throws Exception {
         List<Object> allMessages = getAllMessages(actor);
 
@@ -154,7 +177,7 @@ public class MessageCollectorActor extends UntypedActor {
 
         for(Object message : allMessages){
             if(message.getClass().equals(clazz)){
-                output.add((T) message);
+                output.add(clazz.cast(message));
             }
         }