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());
+    }
+}

Reply via email to