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 0d036d3..7709735 100644 (file)
 
 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.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 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.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(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;
             }
-        }
+        });
     }
 }