1 package org.opendaylight.controller.cluster.datastore.config;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertNull;
6 import com.google.common.collect.ImmutableSortedSet;
7 import com.google.common.collect.Sets;
9 import java.util.Collection;
11 import org.junit.Assert;
12 import org.junit.BeforeClass;
13 import org.junit.Test;
14 import org.opendaylight.controller.cluster.datastore.shardstrategy.ModuleShardStrategy;
15 import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy;
17 public class ConfigurationImplTest {
19 private static ConfigurationImpl configuration;
22 public static void staticSetup(){
23 configuration = new ConfigurationImpl("module-shards.conf", "modules.conf");
27 public void testConstructor(){
28 Assert.assertNotNull(configuration);
32 public void testGetMemberShardNames(){
33 Collection<String> memberShardNames = configuration.getMemberShardNames("member-1");
34 assertEquals("getMemberShardNames", ImmutableSortedSet.of("people-1", "cars-1", "test-1", "default"),
35 ImmutableSortedSet.copyOf(memberShardNames));
37 memberShardNames = configuration.getMemberShardNames("member-2");
38 assertEquals("getMemberShardNames", ImmutableSortedSet.of("default"),
39 ImmutableSortedSet.copyOf(memberShardNames));
41 memberShardNames = configuration.getMemberShardNames("member-100");
42 assertEquals("getMemberShardNames size", 0, memberShardNames.size());
46 public void testGetMembersFromShardName(){
47 Collection<String> members = configuration.getMembersFromShardName("default");
48 assertEquals("getMembersFromShardName", ImmutableSortedSet.of("member-1", "member-2", "member-3"),
49 ImmutableSortedSet.copyOf(members));
51 members = configuration.getMembersFromShardName("cars-1");
52 assertEquals("getMembersFromShardName", ImmutableSortedSet.of("member-1"),
53 ImmutableSortedSet.copyOf(members));
55 // Try to find a shard which is not present
57 members = configuration.getMembersFromShardName("foobar");
58 assertEquals("getMembersFromShardName size", 0, members.size());
62 public void testGetAllShardNames(){
63 Set<String> allShardNames = configuration.getAllShardNames();
64 assertEquals("getAllShardNames", ImmutableSortedSet.of("people-1", "cars-1", "test-1", "default"),
65 ImmutableSortedSet.copyOf(allShardNames));
69 public void testGetModuleNameFromNameSpace() {
70 String moduleName = configuration.getModuleNameFromNameSpace(
71 "urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test:cars");
72 assertEquals("getModuleNameFromNameSpace", "cars", moduleName);
74 moduleName = configuration.getModuleNameFromNameSpace(
75 "urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test");
76 assertEquals("getModuleNameFromNameSpace", "test", moduleName);
78 moduleName = configuration.getModuleNameFromNameSpace("non-existent");
79 assertNull("getModuleNameFromNameSpace - expected null", moduleName);
83 public void testGetStrategyForModule() {
84 ShardStrategy strategy = configuration.getStrategyForModule("cars");
85 assertNotNull("getStrategyForModule null", strategy);
86 assertEquals("getStrategyForModule type", ModuleShardStrategy.class, strategy.getClass());
88 strategy = configuration.getStrategyForModule("people");
89 assertNotNull("getStrategyForModule null", strategy);
90 assertEquals("getStrategyForModule type", ModuleShardStrategy.class, strategy.getClass());
92 strategy = configuration.getStrategyForModule("default");
93 assertNull("getStrategyForModule - expected null", strategy);
95 strategy = configuration.getStrategyForModule("non-existent");
96 assertNull("getStrategyForModule - expected null", strategy);
100 public void testGetShardNameForModule() {
101 String shardName = configuration.getShardNameForModule("cars");
102 assertEquals("getShardNameForModule", "cars-1", shardName);
104 shardName = configuration.getShardNameForModule("people");
105 assertEquals("getShardNameForModule", "people-1", shardName);
107 shardName = configuration.getShardNameForModule("non-existent");
108 assertNull("getShardNameForModule - expected null", shardName);
112 public void testAddModuleShardConfiguration() throws Exception {
113 URI namespace = new URI("urn:opendaylight:test:oven");
114 String moduleName = "oven";
115 String shardName = "oven-shard";
116 String shardStrategyName = ModuleShardStrategy.NAME;
117 Collection<String> shardMemberNames = ImmutableSortedSet.of("member-1", "member-4", "member-5");
119 configuration.addModuleShardConfiguration(new ModuleShardConfiguration(namespace, moduleName, shardName,
120 shardStrategyName, shardMemberNames));
122 assertEquals("getMemberShardNames", ImmutableSortedSet.of("people-1", "cars-1", "test-1", "default", shardName),
123 ImmutableSortedSet.copyOf(configuration.getMemberShardNames("member-1")));
124 assertEquals("getMemberShardNames", ImmutableSortedSet.of(shardName),
125 ImmutableSortedSet.copyOf(configuration.getMemberShardNames("member-4")));
126 assertEquals("getMemberShardNames", ImmutableSortedSet.of(shardName),
127 ImmutableSortedSet.copyOf(configuration.getMemberShardNames("member-5")));
128 assertEquals("getMembersFromShardName", shardMemberNames,
129 ImmutableSortedSet.copyOf(configuration.getMembersFromShardName(shardName)));
130 assertEquals("getShardNameForModule", shardName, configuration.getShardNameForModule(moduleName));
131 assertEquals("getModuleNameFromNameSpace", moduleName,
132 configuration.getModuleNameFromNameSpace(namespace.toASCIIString()));
133 assertEquals("getAllShardNames", ImmutableSortedSet.of("people-1", "cars-1", "test-1", "default", shardName),
134 ImmutableSortedSet.copyOf(configuration.getAllShardNames()));
136 ShardStrategy strategy = configuration.getStrategyForModule("cars");
137 assertNotNull("getStrategyForModule null", strategy);
138 assertEquals("getStrategyForModule type", ModuleShardStrategy.class, strategy.getClass());
142 public void testGetUniqueMemberNamesForAllShards() {
143 assertEquals("getUniqueMemberNamesForAllShards", Sets.newHashSet("member-1", "member-2", "member-3"),
144 configuration.getUniqueMemberNamesForAllShards());