Bug 4105: Add dynamic module/shard config for entity-owners shard
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / config / ConfigurationImplTest.java
1 package org.opendaylight.controller.cluster.datastore.config;
2
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;
8 import java.net.URI;
9 import java.util.Collection;
10 import java.util.Set;
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;
16
17 public class ConfigurationImplTest {
18
19     private static ConfigurationImpl configuration;
20
21     @BeforeClass
22     public static void staticSetup(){
23         configuration = new ConfigurationImpl("module-shards.conf", "modules.conf");
24     }
25
26     @Test
27     public void testConstructor(){
28         Assert.assertNotNull(configuration);
29     }
30
31     @Test
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));
36
37         memberShardNames = configuration.getMemberShardNames("member-2");
38         assertEquals("getMemberShardNames", ImmutableSortedSet.of("default"),
39                 ImmutableSortedSet.copyOf(memberShardNames));
40
41         memberShardNames = configuration.getMemberShardNames("member-100");
42         assertEquals("getMemberShardNames size", 0, memberShardNames.size());
43     }
44
45     @Test
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));
50
51         members = configuration.getMembersFromShardName("cars-1");
52         assertEquals("getMembersFromShardName", ImmutableSortedSet.of("member-1"),
53                 ImmutableSortedSet.copyOf(members));
54
55         // Try to find a shard which is not present
56
57         members = configuration.getMembersFromShardName("foobar");
58         assertEquals("getMembersFromShardName size", 0, members.size());
59     }
60
61     @Test
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));
66     }
67
68     @Test
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);
73
74         moduleName = configuration.getModuleNameFromNameSpace(
75                 "urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test");
76         assertEquals("getModuleNameFromNameSpace", "test", moduleName);
77
78         moduleName = configuration.getModuleNameFromNameSpace("non-existent");
79         assertNull("getModuleNameFromNameSpace - expected null", moduleName);
80     }
81
82     @Test
83     public void testGetStrategyForModule() {
84         ShardStrategy strategy = configuration.getStrategyForModule("cars");
85         assertNotNull("getStrategyForModule null", strategy);
86         assertEquals("getStrategyForModule type", ModuleShardStrategy.class, strategy.getClass());
87
88         strategy = configuration.getStrategyForModule("people");
89         assertNotNull("getStrategyForModule null", strategy);
90         assertEquals("getStrategyForModule type", ModuleShardStrategy.class, strategy.getClass());
91
92         strategy = configuration.getStrategyForModule("default");
93         assertNull("getStrategyForModule - expected null", strategy);
94
95         strategy = configuration.getStrategyForModule("non-existent");
96         assertNull("getStrategyForModule - expected null", strategy);
97     }
98
99     @Test
100     public void testGetShardNameForModule() {
101         String shardName = configuration.getShardNameForModule("cars");
102         assertEquals("getShardNameForModule", "cars-1", shardName);
103
104         shardName = configuration.getShardNameForModule("people");
105         assertEquals("getShardNameForModule", "people-1", shardName);
106
107         shardName = configuration.getShardNameForModule("non-existent");
108         assertNull("getShardNameForModule - expected null", shardName);
109     }
110
111     @Test
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");
118
119         configuration.addModuleShardConfiguration(new ModuleShardConfiguration(namespace, moduleName, shardName,
120                 shardStrategyName, shardMemberNames));
121
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()));
135
136         ShardStrategy strategy = configuration.getStrategyForModule("cars");
137         assertNotNull("getStrategyForModule null", strategy);
138         assertEquals("getStrategyForModule type", ModuleShardStrategy.class, strategy.getClass());
139     }
140
141     @Test
142     public void testGetUniqueMemberNamesForAllShards() {
143         assertEquals("getUniqueMemberNamesForAllShards", Sets.newHashSet("member-1", "member-2", "member-3"),
144                 configuration.getUniqueMemberNamesForAllShards());
145     }
146 }