Refactor MockConfiguration to extend ConfigurationImpl 60/29760/4
authorTom Pantelis <tpanteli@brocade.com>
Mon, 16 Nov 2015 07:47:21 +0000 (02:47 -0500)
committerGerrit Code Review <gerrit@opendaylight.org>
Wed, 18 Nov 2015 23:00:40 +0000 (23:00 +0000)
MockConfiguration is now essentially a wrapper for
ModuleShardConfigProvider whose source is a shard name -> members map.
This will make it easier when adding new methods to Configuration
plus unit tests will now use the producton ConfigurationImpl as this
class is simple enough where we don't really need the functionality mocked.

Change-Id: I88e520b275a658a6d718442ad31c1f1e3603c70c
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockConfiguration.java

index 0d036d36992c776748d7af786ef89ac0119e55ab..77097352489fa97a153761bb16817fcdd9fd6521 100644 (file)
 
 package org.opendaylight.controller.cluster.datastore.utils;
 
 
 package org.opendaylight.controller.cluster.datastore.utils;
 
-import com.google.common.collect.ImmutableMap;
-import java.util.ArrayList;
+import com.google.common.collect.Sets;
 import java.util.Arrays;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import org.opendaylight.controller.cluster.datastore.config.Configuration;
 import org.opendaylight.controller.cluster.datastore.config.Configuration;
-import org.opendaylight.controller.cluster.datastore.config.ModuleShardConfiguration;
-import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy;
-
-public class MockConfiguration implements Configuration{
-    private Map<String, List<String>> shardMembers = ImmutableMap.<String, List<String>>builder().
-            put("default", Arrays.asList("member-1", "member-2")).
-            /*put("astronauts", Arrays.asList("member-2", "member-3")).*/build();
+import org.opendaylight.controller.cluster.datastore.config.ConfigurationImpl;
+import org.opendaylight.controller.cluster.datastore.config.ModuleConfig;
+import org.opendaylight.controller.cluster.datastore.config.ModuleShardConfigProvider;
 
 
+public class MockConfiguration extends ConfigurationImpl {
     public MockConfiguration() {
     public MockConfiguration() {
-    }
-
-    public MockConfiguration(Map<String, List<String>> shardMembers) {
-        this.shardMembers = shardMembers;
-    }
-
-    @Override
-    public Collection<String> getMemberShardNames(final String memberName) {
-        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
-    public String getModuleNameFromNameSpace(final String nameSpace) {
-        return null;
-    }
-
-    @Override
-    public String getShardNameForModule(final String moduleName) {
-        return null;
-    }
-
-    @Override
-    public Collection<String> getMembersFromShardName(final String shardName) {
-        if("default".equals(shardName)) {
-            return Arrays.asList("member-1", "member-2");
-        } else if("astronauts".equals(shardName)){
-            return Arrays.asList("member-2", "member-3");
-        }
-
-        List<String> members = shardMembers.get(shardName);
-        return members != null ? members : Collections.<String>emptyList();
-    }
-
-    @Override public Set<String> getAllShardNames() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Collection<String> getUniqueMemberNamesForAllShards() {
-        Set<String> allNames = new HashSet<>();
-        for(List<String> l: shardMembers.values()) {
-            allNames.addAll(l);
-        }
-
-        return allNames;
-    }
-
-    @Override
-    public ShardStrategy getStrategyForModule(String moduleName) {
-        return null;
-    }
-
-    @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();
+        this(Collections.singletonMap("default", Arrays.asList("member-1", "member-2")));
+    }
+
+    public MockConfiguration(final Map<String, List<String>> shardMembers) {
+        super(new ModuleShardConfigProvider() {
+            @Override
+            public Map<String, ModuleConfig> retrieveModuleConfigs(Configuration configuration) {
+                Map<String, ModuleConfig> retMap = new HashMap<String, ModuleConfig>();
+                for(Map.Entry<String, List<String>> e : shardMembers.entrySet()) {
+                    String shardName = e.getKey();
+                    ModuleConfig mc = new ModuleConfig(shardName);
+                    mc.addShardConfig(shardName, Sets.newHashSet(e.getValue()));
+                    retMap.put(mc.getName(), mc);
+                }
+
+                return retMap;
             }
             }
-        }
+        });
     }
 }
     }
 }