Repository: incubator-rocketmq Updated Branches: refs/heads/ROCKETMQ-54 03acdb70e -> 87623460e
[ROCKETMQ-54] Polish unit tests for rocketmq-namesrv Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/e4101dd0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/e4101dd0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/e4101dd0 Branch: refs/heads/ROCKETMQ-54 Commit: e4101dd0690844db7713ca44508342cd5c9f6160 Parents: 0f9f55f Author: stevenschew <[email protected]> Authored: Thu Jan 19 11:50:01 2017 +0800 Committer: stevenschew <[email protected]> Committed: Thu Jan 19 11:50:01 2017 +0800 ---------------------------------------------------------------------- .../rocketmq/namesrv/NameServerInstance.java | 31 +++++++ .../rocketmq/namesrv/NamesrvControllerTest.java | 41 +++++++++ .../namesrv/kvconfig/KVConfigManagerTest.java | 44 +++++++++ .../kvconfig/KVConfigSerializeWrapperTest.java | 43 +++++++++ .../namesrv/routeinfo/RouteInfoManagerTest.java | 96 ++++++++++++++++++++ 5 files changed, 255 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/e4101dd0/namesrv/src/test/java/org/apache/rocketmq/namesrv/NameServerInstance.java ---------------------------------------------------------------------- diff --git a/namesrv/src/test/java/org/apache/rocketmq/namesrv/NameServerInstance.java b/namesrv/src/test/java/org/apache/rocketmq/namesrv/NameServerInstance.java new file mode 100644 index 0000000..35d89da --- /dev/null +++ b/namesrv/src/test/java/org/apache/rocketmq/namesrv/NameServerInstance.java @@ -0,0 +1,31 @@ +package org.apache.rocketmq.namesrv; + +import org.apache.rocketmq.common.namesrv.NamesrvConfig; +import org.apache.rocketmq.remoting.netty.NettyServerConfig; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import static org.assertj.core.api.Assertions.assertThat; + +public class NameServerInstance { + protected static NamesrvController nameSrvController = null; + protected static NettyServerConfig nettyServerConfig = new NettyServerConfig(); + protected static NamesrvConfig namesrvConfig = new NamesrvConfig(); + + @BeforeClass + public static void startup() throws Exception { + nettyServerConfig.setListenPort(9876); + nameSrvController = new NamesrvController(namesrvConfig, nettyServerConfig); + boolean initResult = nameSrvController.initialize(); + assertThat(initResult).isTrue(); + nameSrvController.start(); + } + + @AfterClass + public static void shutdown() throws Exception { + if (nameSrvController != null) { + nameSrvController.shutdown(); + } + //maybe need to clean the file store. But we do not suggest deleting anything. + } +} http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/e4101dd0/namesrv/src/test/java/org/apache/rocketmq/namesrv/NamesrvControllerTest.java ---------------------------------------------------------------------- diff --git a/namesrv/src/test/java/org/apache/rocketmq/namesrv/NamesrvControllerTest.java b/namesrv/src/test/java/org/apache/rocketmq/namesrv/NamesrvControllerTest.java new file mode 100644 index 0000000..96a4fca --- /dev/null +++ b/namesrv/src/test/java/org/apache/rocketmq/namesrv/NamesrvControllerTest.java @@ -0,0 +1,41 @@ +package org.apache.rocketmq.namesrv; + +import org.apache.rocketmq.common.namesrv.NamesrvConfig; +import org.apache.rocketmq.remoting.netty.NettyServerConfig; +import org.junit.Assert; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.assertj.core.api.Assertions.assertThat; + +public class NamesrvControllerTest { + private static final int RESTART_NUM = 3; + protected Logger logger = LoggerFactory.getLogger(NamesrvController.class); + + /** + * Tests if the controller can be properly stopped and started. + * + * @throws Exception If fails. + */ + @Test + public void testRestart() throws Exception { + + for (int i = 0; i < RESTART_NUM; i++) { + NamesrvController namesrvController = new NamesrvController( + new NamesrvConfig(), + new NettyServerConfig() + ); + boolean initResult = namesrvController.initialize(); + assertThat(initResult).isEqualTo(true); + logger.info("nameserver is initialized " + initResult); + namesrvController.start(); + logger.info("nameserver is started"); + + namesrvController.shutdown(); + logger.info("nameserver is stopped"); + } + } + + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/e4101dd0/namesrv/src/test/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigManagerTest.java ---------------------------------------------------------------------- diff --git a/namesrv/src/test/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigManagerTest.java b/namesrv/src/test/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigManagerTest.java new file mode 100644 index 0000000..5c5e016 --- /dev/null +++ b/namesrv/src/test/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigManagerTest.java @@ -0,0 +1,44 @@ +package org.apache.rocketmq.namesrv.kvconfig; + +import org.apache.rocketmq.common.namesrv.NamesrvUtil; +import org.apache.rocketmq.namesrv.NameServerInstance; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class KVConfigManagerTest extends NameServerInstance { + private static KVConfigManager kvConfigManager; + + @BeforeClass + public static void setup() throws Exception { + kvConfigManager = new KVConfigManager(nameSrvController); + } + + @AfterClass + public static void tearDown() throws Exception { + } + + @Test + public void testPutKVConfig() { + kvConfigManager.load(); + kvConfigManager.putKVConfig(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG, "UnitTest", "test"); + byte[] kvConfig = kvConfigManager.getKVListByNamespace(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG); + assertThat(kvConfig).isNotNull(); + String value = kvConfigManager.getKVConfig(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG, "UnitTest"); + assertThat(value).isEqualTo("test"); + } + + @Test + public void testDeleteKVConfig() { + kvConfigManager.deleteKVConfig(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG, "UnitTest"); + byte[] kvConfig = kvConfigManager.getKVListByNamespace(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG); + assertThat(kvConfig).isNull(); + Assert.assertTrue(kvConfig == null); + String value = kvConfigManager.getKVConfig(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG, "UnitTest"); + assertThat(value).isNull(); + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/e4101dd0/namesrv/src/test/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigSerializeWrapperTest.java ---------------------------------------------------------------------- diff --git a/namesrv/src/test/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigSerializeWrapperTest.java b/namesrv/src/test/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigSerializeWrapperTest.java new file mode 100644 index 0000000..753e5b3 --- /dev/null +++ b/namesrv/src/test/java/org/apache/rocketmq/namesrv/kvconfig/KVConfigSerializeWrapperTest.java @@ -0,0 +1,43 @@ +package org.apache.rocketmq.namesrv.kvconfig; + +import org.apache.rocketmq.common.namesrv.NamesrvUtil; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.HashMap; + +import static org.assertj.core.api.Assertions.assertThat; + +public class KVConfigSerializeWrapperTest { + private static KVConfigSerializeWrapper kvConfigSerializeWrapper; + + @BeforeClass + public static void setup() throws Exception { + kvConfigSerializeWrapper = new KVConfigSerializeWrapper(); + } + + @AfterClass + public static void tearDown() throws Exception { + } + + @Test + public void testEncodeAndDecode() { + HashMap<String, HashMap<String, String>> result = new HashMap<>(); + HashMap<String, String> kvs = new HashMap<>(); + kvs.put("broker-name", "default-broker"); + kvs.put("topic-name", "default-topic"); + kvs.put("cid", "default-consumer-name"); + result.put(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG, kvs); + kvConfigSerializeWrapper.setConfigTable(result); + byte[] serializeByte = KVConfigSerializeWrapper.encode(kvConfigSerializeWrapper); + assertThat(serializeByte).isNotNull(); + + KVConfigSerializeWrapper deserializeObject = KVConfigSerializeWrapper.decode(serializeByte, KVConfigSerializeWrapper.class); + assertThat(deserializeObject.getConfigTable()).containsKey(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG); + assertThat(deserializeObject.getConfigTable().get(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG).get("broker-name")).isEqualTo("default-broker"); + assertThat(deserializeObject.getConfigTable().get(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG).get("topic-name")).isEqualTo("default-topic"); + assertThat(deserializeObject.getConfigTable().get(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG).get("cid")).isEqualTo("default-consumer-name"); + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/e4101dd0/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManagerTest.java ---------------------------------------------------------------------- diff --git a/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManagerTest.java b/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManagerTest.java new file mode 100644 index 0000000..680caab --- /dev/null +++ b/namesrv/src/test/java/org/apache/rocketmq/namesrv/routeinfo/RouteInfoManagerTest.java @@ -0,0 +1,96 @@ +package org.apache.rocketmq.namesrv.routeinfo; + +import io.netty.channel.Channel; +import org.apache.rocketmq.common.namesrv.RegisterBrokerResult; +import org.apache.rocketmq.common.protocol.body.TopicConfigSerializeWrapper; +import org.apache.rocketmq.common.protocol.route.TopicRouteData; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.ArrayList; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +public class RouteInfoManagerTest { + + private static RouteInfoManager routeInfoManager; + + @BeforeClass + public static void setup() { + routeInfoManager = new RouteInfoManager(); + + } + + @AfterClass + public static void teardown() { + + } + + @Test + public void testGetAllClusterInfo() { + byte[] clusterInfo = routeInfoManager.getAllClusterInfo(); + assertThat(clusterInfo).isNotNull(); + } + + @Test + public void testGetAllTopicList() { + byte[] topicInfo = routeInfoManager.getAllTopicList(); + Assert.assertTrue(topicInfo != null); + assertThat(topicInfo).isNotNull(); + + } + + @Test + public void testRegisterBroker() { + TopicConfigSerializeWrapper topicConfigSerializeWrapper = mock(TopicConfigSerializeWrapper.class); + Channel channel = mock(Channel.class); + RegisterBrokerResult registerBrokerResult = routeInfoManager.registerBroker("default-cluster", "127.0.0.1:10911", "default-broker", 1234, "127.0.0.1:1001", + topicConfigSerializeWrapper, new ArrayList<String>(), channel); + assertThat(registerBrokerResult).isNotNull(); + } + + @Test + public void testWipeWritePermOfBrokerByLock() { + int result = routeInfoManager.wipeWritePermOfBrokerByLock("default-broker-name"); + assertThat(result).isEqualTo(0); + } + + @Test + public void testPickupTopicRouteData() { + TopicRouteData result = routeInfoManager.pickupTopicRouteData("unit_test"); + assertThat(result).isNull(); + } + + @Test + public void testGetSystemTopicList() { + byte[] topicList = routeInfoManager.getSystemTopicList(); + assertThat(topicList).isNotNull(); + } + + @Test + public void testGetTopicsByCluster() { + byte[] topicList = routeInfoManager.getTopicsByCluster("default-cluster"); + assertThat(topicList).isNotNull(); + } + + @Test + public void testGetUnitTopics() { + byte[] topicList = routeInfoManager.getUnitTopics(); + assertThat(topicList).isNotNull(); + } + + @Test + public void testGetHasUnitSubTopicList() { + byte[] topicList = routeInfoManager.getHasUnitSubTopicList(); + assertThat(topicList).isNotNull(); + } + + @Test + public void testGetHasUnitSubUnUnitTopicList() { + byte[] topicList = routeInfoManager.getHasUnitSubUnUnitTopicList(); + assertThat(topicList).isNotNull(); + } +} \ No newline at end of file
