This is an automated email from the ASF dual-hosted git repository. wangxin pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-ops.git
The following commit(s) were added to refs/heads/develop by this push: new dfa00dc unit test for ConfigCenter (#257) dfa00dc is described below commit dfa00dc44c76a48d8a4d55b905a022238bd420ee Author: 孙不服 <sunyoub...@qq.com> AuthorDate: Sun Jan 20 15:20:53 2019 +0800 unit test for ConfigCenter (#257) * unit test for ConfigCenter --- .../apache/dubbo/admin/config/ConfigCenter.java | 2 +- .../dubbo/admin/config/ConfigCenterTest.java | 140 +++++++++++++++++++++ 2 files changed, 141 insertions(+), 1 deletion(-) diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java index 491b35e..382e2b2 100644 --- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java +++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java @@ -60,8 +60,8 @@ public class ConfigCenter { @Value("${admin.config-center.username:}") private String username; @Value("${admin.config-center.password:}") - private String password; + private static String globalConfigPath = "config/dubbo/dubbo.properties"; private static final Logger logger = LoggerFactory.getLogger(ConfigCenter.class); diff --git a/dubbo-admin-backend/src/test/java/org/apache/dubbo/admin/config/ConfigCenterTest.java b/dubbo-admin-backend/src/test/java/org/apache/dubbo/admin/config/ConfigCenterTest.java new file mode 100644 index 0000000..1be2ba9 --- /dev/null +++ b/dubbo-admin-backend/src/test/java/org/apache/dubbo/admin/config/ConfigCenterTest.java @@ -0,0 +1,140 @@ +package org.apache.dubbo.admin.config; + +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.retry.ExponentialBackoffRetry; +import org.apache.curator.test.TestingServer; +import org.apache.dubbo.admin.common.exception.ConfigurationException; +import org.apache.dubbo.common.URL; +import org.apache.dubbo.common.utils.NetUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.util.ReflectionTestUtils; + +import java.io.IOException; + +import static org.junit.Assert.*; + + +@RunWith(SpringJUnit4ClassRunner.class) +public class ConfigCenterTest { + + private String zkAddress; + private TestingServer zkServer; + private CuratorFramework zkClient; + + @Before + public void setup() throws Exception { + int zkServerPort = NetUtils.getAvailablePort(); + zkAddress = "zookeeper://127.0.0.1:" + zkServerPort; + zkServer = new TestingServer(zkServerPort, true); + zkClient = CuratorFrameworkFactory.builder().connectString(zkServer.getConnectString()).retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); + zkClient.start(); + } + + @After + public void tearDown() throws IOException { + zkServer.close(); + zkServer.stop(); + } + + @InjectMocks + private ConfigCenter configCenter; + + @Test + public void testGetDynamicConfiguration() throws Exception { + // mock @value inject + ReflectionTestUtils.setField(configCenter, "configCenter", zkAddress); + ReflectionTestUtils.setField(configCenter, "group", "dubbo"); + ReflectionTestUtils.setField(configCenter, "username", "username"); + ReflectionTestUtils.setField(configCenter, "password", "password"); + + // config is null + configCenter.getDynamicConfiguration(); + + // config is registry address + zkClient.createContainers("/dubbo/config/dubbo/dubbo.properties"); + zkClient.setData().forPath("/dubbo/config/dubbo/dubbo.properties", "dubbo.registry.address=zookeeper://test-registry.com:2181".getBytes()); + configCenter.getDynamicConfiguration(); + Object registryUrl = ReflectionTestUtils.getField(configCenter, "registryUrl"); + assertNotNull(registryUrl); + assertEquals("test-registry.com", ((URL) registryUrl).getHost()); + + // config is meta date address + zkClient.setData().forPath("/dubbo/config/dubbo/dubbo.properties", "dubbo.metadata-report.address=zookeeper://test-metadata.com:2181".getBytes()); + configCenter.getDynamicConfiguration(); + Object metadataUrl = ReflectionTestUtils.getField(configCenter, "metadataUrl"); + assertNotNull(metadataUrl); + assertEquals("test-metadata.com", ((URL) metadataUrl).getHost()); + + // config is empty + zkClient.setData().forPath("/dubbo/config/dubbo/dubbo.properties", "".getBytes()); + ReflectionTestUtils.setField(configCenter, "registryUrl", null); + ReflectionTestUtils.setField(configCenter, "metadataUrl", null); + configCenter.getDynamicConfiguration(); + assertNull(ReflectionTestUtils.getField(configCenter, "registryUrl")); + assertNull(ReflectionTestUtils.getField(configCenter, "metadataUrl")); + + // configCenter is null + ReflectionTestUtils.setField(configCenter, "configCenter", null); + // registryAddress is not null + ReflectionTestUtils.setField(configCenter, "registryAddress", zkAddress); + configCenter.getDynamicConfiguration(); + registryUrl = ReflectionTestUtils.getField(configCenter, "registryUrl"); + assertNotNull(registryUrl); + assertEquals("127.0.0.1", ((URL) registryUrl).getHost()); + + // configCenter & registryAddress are null + try { + ReflectionTestUtils.setField(configCenter, "configCenter", null); + ReflectionTestUtils.setField(configCenter, "registryAddress", null); + configCenter.getDynamicConfiguration(); + fail("should throw exception when configCenter, registryAddress are all null"); + } catch (ConfigurationException e) { + } + } + + @Test + public void testGetRegistry() throws Exception { + try { + configCenter.getRegistry(); + fail("should throw exception when registryAddress is blank"); + } catch (ConfigurationException e) { + } + assertNull(ReflectionTestUtils.getField(configCenter, "registryUrl")); + + // mock @value inject + ReflectionTestUtils.setField(configCenter, "registryAddress", zkAddress); + ReflectionTestUtils.setField(configCenter, "group", "dubbo"); + ReflectionTestUtils.setField(configCenter, "username", "username"); + ReflectionTestUtils.setField(configCenter, "password", "password"); + + configCenter.getRegistry(); + Object registryUrl = ReflectionTestUtils.getField(configCenter, "registryUrl"); + assertNotNull(registryUrl); + assertEquals("127.0.0.1", ((URL) registryUrl).getHost()); + } + + @Test + public void testGetMetadataCollector() throws Exception { + // when metadataAddress is empty + ReflectionTestUtils.setField(configCenter, "metadataAddress", ""); + configCenter.getMetadataCollector(); + assertNull(ReflectionTestUtils.getField(configCenter, "metadataUrl")); + + // mock @value inject + ReflectionTestUtils.setField(configCenter, "metadataAddress", zkAddress); + ReflectionTestUtils.setField(configCenter, "group", "dubbo"); + ReflectionTestUtils.setField(configCenter, "username", "username"); + ReflectionTestUtils.setField(configCenter, "password", "password"); + + configCenter.getMetadataCollector(); + Object metadataUrl = ReflectionTestUtils.getField(configCenter, "metadataUrl"); + assertNotNull(metadataUrl); + assertEquals("127.0.0.1", ((URL) metadataUrl).getHost()); + } +}