BUG 2187 - Persisting shard list in ShardManager
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / utils / MockConfiguration.java
index 554e67b1f17d60c1b842809455e09e90cbc6ba51..0d036d36992c776748d7af786ef89ac0119e55ab 100644 (file)
@@ -13,6 +13,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -35,7 +36,13 @@ public class MockConfiguration implements Configuration{
 
     @Override
     public Collection<String> getMemberShardNames(final String memberName) {
-        return new ArrayList<>(shardMembers.keySet());
+        ArrayList<String> shardNames = new ArrayList<String>();
+        for(Map.Entry<String, List<String>> shard : shardMembers.entrySet()) {
+            if (shard.getValue().contains(memberName)) {
+                shardNames.add(shard.getKey());
+            }
+        }
+        return shardNames;
     }
 
     @Override
@@ -82,4 +89,35 @@ public class MockConfiguration implements Configuration{
     @Override
     public void addModuleShardConfiguration(ModuleShardConfiguration config) {
     }
+
+    @Override
+    public boolean isShardConfigured(String shardName) {
+        return (shardMembers.containsKey(shardName));
+    }
+
+    @Override
+    public void addMemberReplicaForShard (String shardName, String newMemberName) {
+        Map<String, List<String>> newShardMembers = new HashMap<>(shardMembers);
+        for(Map.Entry<String, List<String>> shard : newShardMembers.entrySet()) {
+            if (shard.getKey().equals(shardName)) {
+                List<String> replicas = new ArrayList<>(shard.getValue());
+                replicas.add(newMemberName);
+                shard.setValue(replicas);
+                shardMembers = ImmutableMap.<String, List<String>>builder().putAll(newShardMembers).build();
+            }
+        }
+    }
+
+    @Override
+    public void removeMemberReplicaForShard (String shardName, String newMemberName) {
+        Map<String, List<String>> newShardMembers = new HashMap<>(shardMembers);
+        for(Map.Entry<String, List<String>> shard : newShardMembers.entrySet()) {
+            if (shard.getKey().equals(shardName)) {
+                List<String> replicas = new ArrayList<>(shard.getValue());
+                replicas.remove(newMemberName);
+                shard.setValue(replicas);
+                shardMembers = ImmutableMap.<String, List<String>>builder().putAll(newShardMembers).build();
+            }
+        }
+    }
 }