X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fconfig%2FConfigurationImplTest.java;h=f4ba78e7aabf1875a545c21e7d55c1554b0e9d84;hb=4f1f2ae598588f6aa5aac59b2206d97ad402a193;hp=443f017734cc9478ce3f6b1cf458756a00ff8939;hpb=ffc46de334c8a903844b9f4aff73dc68b2401659;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationImplTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationImplTest.java index 443f017734..f4ba78e7aa 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationImplTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationImplTest.java @@ -9,23 +9,32 @@ package org.opendaylight.controller.cluster.datastore.config; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.Sets; -import com.typesafe.config.ConfigFactory; -import java.io.File; -import java.util.List; +import java.net.URI; +import java.util.Collection; import java.util.Set; import org.junit.Assert; -import org.junit.BeforeClass; +import org.junit.Before; import org.junit.Test; +import org.opendaylight.controller.cluster.access.concepts.MemberName; +import org.opendaylight.controller.cluster.datastore.shardstrategy.ModuleShardStrategy; +import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy; public class ConfigurationImplTest { + private static final MemberName MEMBER_1 = MemberName.forName("member-1"); + private static final MemberName MEMBER_2 = MemberName.forName("member-2"); + private static final MemberName MEMBER_3 = MemberName.forName("member-3"); + private static final MemberName MEMBER_4 = MemberName.forName("member-4"); + private static final MemberName MEMBER_5 = MemberName.forName("member-5"); + private static final MemberName MEMBER_100 = MemberName.forName("member-100"); - private static ConfigurationImpl configuration; + private ConfigurationImpl configuration; - @BeforeClass - public static void staticSetup(){ + @Before + public void setup(){ configuration = new ConfigurationImpl("module-shards.conf", "modules.conf"); } @@ -36,76 +45,151 @@ public class ConfigurationImplTest { @Test public void testGetMemberShardNames(){ - List memberShardNames = - configuration.getMemberShardNames("member-1"); + Collection memberShardNames = configuration.getMemberShardNames(MEMBER_1); + assertEquals("getMemberShardNames", ImmutableSortedSet.of("people-1", "cars-1", "test-1", "default"), + ImmutableSortedSet.copyOf(memberShardNames)); - assertTrue(memberShardNames.contains("people-1")); - assertTrue(memberShardNames.contains("cars-1")); - - // Retrieve once again to hit cache - - memberShardNames = - configuration.getMemberShardNames("member-1"); - - assertTrue(memberShardNames.contains("people-1")); - assertTrue(memberShardNames.contains("cars-1")); + memberShardNames = configuration.getMemberShardNames(MEMBER_2); + assertEquals("getMemberShardNames", ImmutableSortedSet.of("default"), + ImmutableSortedSet.copyOf(memberShardNames)); + memberShardNames = configuration.getMemberShardNames(MEMBER_100); + assertEquals("getMemberShardNames size", 0, memberShardNames.size()); } @Test public void testGetMembersFromShardName(){ - List members = - configuration.getMembersFromShardName("default"); + Collection members = configuration.getMembersFromShardName("default"); + assertEquals("getMembersFromShardName", ImmutableSortedSet.of(MEMBER_1, MEMBER_2, MEMBER_3), + ImmutableSortedSet.copyOf(members)); - assertEquals(3, members.size()); + members = configuration.getMembersFromShardName("cars-1"); + assertEquals("getMembersFromShardName", ImmutableSortedSet.of(MEMBER_1), + ImmutableSortedSet.copyOf(members)); - assertTrue(members.contains("member-1")); - assertTrue(members.contains("member-2")); - assertTrue(members.contains("member-3")); + // Try to find a shard which is not present - assertFalse(members.contains("member-26")); + members = configuration.getMembersFromShardName("foobar"); + assertEquals("getMembersFromShardName size", 0, members.size()); + } - // Retrieve once again to hit cache - members = - configuration.getMembersFromShardName("default"); + @Test + public void testGetAllShardNames(){ + Set allShardNames = configuration.getAllShardNames(); + assertEquals("getAllShardNames", ImmutableSortedSet.of("people-1", "cars-1", "test-1", "default"), + ImmutableSortedSet.copyOf(allShardNames)); + } - assertEquals(3, members.size()); + @Test + public void testGetModuleNameFromNameSpace() { + String moduleName = configuration.getModuleNameFromNameSpace( + "urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test:cars"); + assertEquals("getModuleNameFromNameSpace", "cars", moduleName); - assertTrue(members.contains("member-1")); - assertTrue(members.contains("member-2")); - assertTrue(members.contains("member-3")); + moduleName = configuration.getModuleNameFromNameSpace( + "urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test"); + assertEquals("getModuleNameFromNameSpace", "test", moduleName); - assertFalse(members.contains("member-26")); + moduleName = configuration.getModuleNameFromNameSpace("non-existent"); + assertNull("getModuleNameFromNameSpace - expected null", moduleName); + } + @Test + public void testGetStrategyForModule() { + ShardStrategy strategy = configuration.getStrategyForModule("cars"); + assertNotNull("getStrategyForModule null", strategy); + assertEquals("getStrategyForModule type", ModuleShardStrategy.class, strategy.getClass()); - // Try to find a shard which is not present + strategy = configuration.getStrategyForModule("people"); + assertNotNull("getStrategyForModule null", strategy); + assertEquals("getStrategyForModule type", ModuleShardStrategy.class, strategy.getClass()); - members = - configuration.getMembersFromShardName("foobar"); + strategy = configuration.getStrategyForModule("default"); + assertNull("getStrategyForModule - expected null", strategy); - assertEquals(0, members.size()); + strategy = configuration.getStrategyForModule("non-existent"); + assertNull("getStrategyForModule - expected null", strategy); } @Test - public void testReadConfigurationFromFile(){ - File f = new File("./module-shards.conf"); - ConfigFactory.parseFile(f); + public void testGetShardNameForModule() { + String shardName = configuration.getShardNameForModule("cars"); + assertEquals("getShardNameForModule", "cars-1", shardName); + + shardName = configuration.getShardNameForModule("people"); + assertEquals("getShardNameForModule", "people-1", shardName); + + shardName = configuration.getShardNameForModule("non-existent"); + assertNull("getShardNameForModule - expected null", shardName); } @Test - public void testGetAllShardNames(){ - Set allShardNames = configuration.getAllShardNames(); - - assertEquals(4, allShardNames.size()); - assertTrue(allShardNames.contains("default")); - assertTrue(allShardNames.contains("people-1")); - assertTrue(allShardNames.contains("cars-1")); - assertTrue(allShardNames.contains("test-1")); + public void testAddModuleShardConfiguration() throws Exception { + URI namespace = new URI("urn:opendaylight:test:oven"); + String moduleName = "oven"; + String shardName = "oven-shard"; + String shardStrategyName = ModuleShardStrategy.NAME; + Collection shardMemberNames = ImmutableSortedSet.of(MEMBER_1, MEMBER_4, MEMBER_5); + + configuration.addModuleShardConfiguration(new ModuleShardConfiguration(namespace, moduleName, shardName, + shardStrategyName, shardMemberNames)); + + assertEquals("getMemberShardNames", ImmutableSortedSet.of("people-1", "cars-1", "test-1", "default", shardName), + ImmutableSortedSet.copyOf(configuration.getMemberShardNames(MEMBER_1))); + assertEquals("getMemberShardNames", ImmutableSortedSet.of(shardName), + ImmutableSortedSet.copyOf(configuration.getMemberShardNames(MEMBER_4))); + assertEquals("getMemberShardNames", ImmutableSortedSet.of(shardName), + ImmutableSortedSet.copyOf(configuration.getMemberShardNames(MEMBER_5))); + assertEquals("getMembersFromShardName", shardMemberNames, + ImmutableSortedSet.copyOf(configuration.getMembersFromShardName(shardName))); + assertEquals("getShardNameForModule", shardName, configuration.getShardNameForModule(moduleName)); + assertEquals("getModuleNameFromNameSpace", moduleName, + configuration.getModuleNameFromNameSpace(namespace.toASCIIString())); + assertEquals("getAllShardNames", ImmutableSortedSet.of("people-1", "cars-1", "test-1", "default", shardName), + ImmutableSortedSet.copyOf(configuration.getAllShardNames())); + + ShardStrategy strategy = configuration.getStrategyForModule("cars"); + assertNotNull("getStrategyForModule null", strategy); + assertEquals("getStrategyForModule type", ModuleShardStrategy.class, strategy.getClass()); } @Test public void testGetUniqueMemberNamesForAllShards() { - assertEquals("getUniqueMemberNamesForAllShards", Sets.newHashSet("member-1", "member-2", "member-3"), + assertEquals("getUniqueMemberNamesForAllShards", Sets.newHashSet(MEMBER_1, MEMBER_2, MEMBER_3), configuration.getUniqueMemberNamesForAllShards()); } + + @Test + public void testAddMemberReplicaForShard() { + configuration.addMemberReplicaForShard("people-1", MEMBER_2); + String shardName = configuration.getShardNameForModule("people"); + assertEquals("ModuleShardName", "people-1", shardName); + ShardStrategy shardStrategy = configuration.getStrategyForModule("people"); + assertEquals("ModuleStrategy", ModuleShardStrategy.class, shardStrategy.getClass()); + Collection members = configuration.getMembersFromShardName("people-1"); + assertEquals("Members", ImmutableSortedSet.of(MEMBER_1, MEMBER_2), + ImmutableSortedSet.copyOf(members)); + + configuration.addMemberReplicaForShard("non-existent", MEMBER_2); + Set shardNames = configuration.getAllShardNames(); + assertEquals("ShardNames", ImmutableSortedSet.of("people-1", "cars-1", "test-1", "default"), + ImmutableSortedSet.copyOf(shardNames)); + } + + @Test + public void testRemoveMemberReplicaForShard() { + configuration.removeMemberReplicaForShard("default", MEMBER_2); + String shardName = configuration.getShardNameForModule("default"); + assertEquals("ModuleShardName", "default", shardName); + ShardStrategy shardStrategy = configuration.getStrategyForModule("default"); + assertNull("ModuleStrategy", shardStrategy); + Collection members = configuration.getMembersFromShardName("default"); + assertEquals("Members", ImmutableSortedSet.of(MEMBER_1, MEMBER_3), + ImmutableSortedSet.copyOf(members)); + + configuration.removeMemberReplicaForShard("non-existent", MEMBER_2); + Set shardNames = configuration.getAllShardNames(); + assertEquals("ShardNames", ImmutableSortedSet.of("people-1", "cars-1", "test-1", "default"), + ImmutableSortedSet.copyOf(shardNames)); + } }