Merge "Refactor snapshot code"
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / utils / MockClusterWrapper.java
index 7749eaa837ec3a4985d01ae983c89d99787f2f74..810b270cfcee82aab53ca55f96a777e87bdc3141 100644 (file)
@@ -9,15 +9,82 @@
 package org.opendaylight.controller.cluster.datastore.utils;
 
 import akka.actor.ActorRef;
+import akka.actor.Address;
+import akka.actor.AddressFromURIString;
+import akka.cluster.ClusterEvent;
+import akka.cluster.MemberStatus;
+import akka.cluster.UniqueAddress;
+import java.util.HashSet;
+import java.util.Set;
 import org.opendaylight.controller.cluster.datastore.ClusterWrapper;
+import scala.collection.JavaConversions;
 
 public class MockClusterWrapper implements ClusterWrapper{
 
-    @Override public void subscribeToMemberEvents(ActorRef actorRef) {
-        throw new UnsupportedOperationException("subscribeToMemberEvents");
+    private Address selfAddress = new Address("akka.tcp", "test", "127.0.0.1", 2550);
+    private String currentMemberName = "member-1";
+
+    public MockClusterWrapper() {
+    }
+
+    public MockClusterWrapper(String currentMemberName) {
+        this.currentMemberName = currentMemberName;
+    }
+
+    @Override
+    public void subscribeToMemberEvents(ActorRef actorRef) {
+    }
+
+    @Override
+    public String getCurrentMemberName() {
+        return currentMemberName;
     }
 
-    @Override public String getCurrentMemberName() {
-        return "member-1";
+    @Override
+    public Address getSelfAddress() {
+        return selfAddress;
+    }
+
+    public void setSelfAddress(Address selfAddress) {
+        this.selfAddress = selfAddress;
+    }
+
+    public static void sendMemberUp(ActorRef to, String memberName, String address){
+        to.tell(createMemberUp(memberName, address), null);
+    }
+
+    public static void sendMemberRemoved(ActorRef to, String memberName, String address){
+        to.tell(createMemberRemoved(memberName, address), null);
+    }
+
+    private static ClusterEvent.MemberRemoved createMemberRemoved(String memberName, String address) {
+        akka.cluster.UniqueAddress uniqueAddress = new UniqueAddress(
+            AddressFromURIString.parse(address), 55);
+
+        Set<String> roles = new HashSet<>();
+
+        roles.add(memberName);
+
+        akka.cluster.Member member = new akka.cluster.Member(uniqueAddress, 1, MemberStatus
+            .removed(),
+            JavaConversions.asScalaSet(roles).<String>toSet());
+
+        return new ClusterEvent.MemberRemoved(member, MemberStatus.up());
+
+    }
+
+
+    private static ClusterEvent.MemberUp createMemberUp(String memberName, String address) {
+        akka.cluster.UniqueAddress uniqueAddress = new UniqueAddress(
+            AddressFromURIString.parse(address), 55);
+
+        Set<String> roles = new HashSet<>();
+
+        roles.add(memberName);
+
+        akka.cluster.Member member = new akka.cluster.Member(uniqueAddress, 1, MemberStatus.up(),
+            JavaConversions.asScalaSet(roles).<String>toSet());
+
+        return new ClusterEvent.MemberUp(member);
     }
 }