You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/09/27 11:43:12 UTC

[dubbo] branch 3.0 updated: Add unit test for StandardMetadataServiceURLBuilder (#8913)

This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new cd5cad2  Add unit test for StandardMetadataServiceURLBuilder (#8913)
cd5cad2 is described below

commit cd5cad2daec964a75b7572e994b9a39547401f95
Author: 灼华 <43...@users.noreply.github.com>
AuthorDate: Mon Sep 27 19:43:04 2021 +0800

    Add unit test for StandardMetadataServiceURLBuilder (#8913)
    
    * Add unit test for StandardMetadataServiceURLBuilder
    
    * FIX UT
    
    * ApplicationModel reset
---
 .../client/metadata/MetadataServiceURLBuilder.java |  2 +-
 .../metadata/MetadataServiceURLBuilderTest.java    | 10 +--
 .../StandardMetadataServiceURLBuilderTest.java     | 85 ++++++++++++++++++++++
 3 files changed, 88 insertions(+), 9 deletions(-)

diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilder.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilder.java
index 7f77bdc..8d1aa8a 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilder.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilder.java
@@ -34,7 +34,7 @@ public interface MetadataServiceURLBuilder {
      * Build the {@link URL URLs} from the specified {@link ServiceInstance}
      *
      * @param serviceInstance {@link ServiceInstance}
-     * @return TODO, usually, we generate one metadata url from one instance. There's no scenario to return a metadta url list.
+     * @return TODO, usually, we generate one metadata url from one instance. There's no scenario to return a metadata url list.
      */
     List<URL> build(ServiceInstance serviceInstance);
 }
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilderTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilderTest.java
index c8032b8..1dd2d98 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilderTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilderTest.java
@@ -27,17 +27,11 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
  */
 public class MetadataServiceURLBuilderTest {
 
-    static ServiceInstance serviceInstance = new DefaultServiceInstance("127.0.0.1", "test", 8080, ApplicationModel.defaultModel());
+    static ServiceInstance serviceInstance = new DefaultServiceInstance("test", "127.0.0.1", 8080, ApplicationModel.defaultModel());
 
     static {
         serviceInstance.getMetadata().put("dubbo.metadata-service.urls", "[ \"dubbo://192.168.0.102:20881/com.alibaba.cloud.dubbo.service.DubboMetadataService?anyhost=true&application=spring-cloud-alibaba-dubbo-provider&bind.ip=192.168.0.102&bind.port=20881&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&group=spring-cloud-alibaba-dubbo-provider&interface=com.alibaba.cloud.dubbo.service.DubboMetadataService&methods=getAllServiceKeys,getServiceRestMetadata,getExportedURLs,getAllEx [...]
-        serviceInstance.getMetadata().put("dubbo.metadata-service.url-params", "{\"dubbo\":{\"application\":\"dubbo-provider-demo\",\"deprecated\":\"false\",\"group\":\"dubbo-provider-demo\",\"version\":\"1.0.0\",\"timestamp\":\"1564845042651\",\"dubbo\":\"2.0.2\",\"provider.host\":\"192.168.0.102\",\"provider.port\":\"20880\"}}");
+        serviceInstance.getMetadata().put("dubbo.metadata-service.url-params", "{\"application\":\"dubbo-provider-demo\",\"protocol\":\"rest\",\"group\":\"dubbo-provider-demo\",\"version\":\"1.0.0\",\"timestamp\":\"1564845042651\",\"dubbo\":\"2.0.2\",\"host\":\"192.168.0.102\",\"port\":\"20880\"}");
     }
 
-//    @Test
-//    public void testBuild() {
-//        assertTrue(composite().build(null).isEmpty());
-//        assertTrue(composite().build(new DefaultServiceInstance("127.0.0.1", "test", 8080)).isEmpty());
-//        assertEquals(2, composite().build(serviceInstance).size());
-//    }
 }
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilderTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilderTest.java
new file mode 100644
index 0000000..22e5832
--- /dev/null
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilderTest.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.registry.client.metadata;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.metadata.MetadataService;
+import org.apache.dubbo.registry.client.DefaultServiceInstance;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import java.util.List;
+
+import static org.apache.dubbo.registry.client.metadata.MetadataServiceURLBuilderTest.serviceInstance;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.spy;
+
+/**
+ * {@link StandardMetadataServiceURLBuilder} Test
+ */
+public class StandardMetadataServiceURLBuilderTest {
+
+    private StandardMetadataServiceURLBuilder builder = new StandardMetadataServiceURLBuilder();
+
+
+    @BeforeAll
+    public static void setUp() {
+        ApplicationConfig applicationConfig = new ApplicationConfig("demo");
+        applicationConfig.setMetadataServicePort(7001);
+        ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(applicationConfig);
+    }
+
+    @AfterAll
+    public static void clearUp() {
+        ApplicationModel.reset();
+    }
+
+    @Test
+    public void testBuild() {
+        // test generateUrlWithoutMetadata
+        List<URL> urls = builder.build(new DefaultServiceInstance("test", "127.0.0.1", 8080, ApplicationModel.defaultModel()));
+        assertEquals(1, urls.size());
+        URL url = urls.get(0);
+        assertEquals(url.getProtocol(), "dubbo");
+        assertEquals(url.getHost(), "127.0.0.1");
+        assertEquals(url.getPort(), 7001);
+        assertEquals(url.getServiceInterface(), MetadataService.class.getName());
+        assertEquals(url.getGroup(), "test");
+        assertEquals(url.getSide(), "consumer");
+        assertEquals(url.getVersion(), "1.0.0");
+        assertEquals(url.getParameters().get("getAndListenInstanceMetadata.1.callback"), "true");
+        assertEquals(url.getParameters().get("reconnect"), "false");
+        assertEquals(url.getParameters().get("timeout"), "5000");
+
+        // test generateWithMetadata
+        urls = builder.build(serviceInstance);
+        assertEquals(1, urls.size());
+        url = urls.get(0);
+        assertEquals(url.getProtocol(), "rest");
+        assertEquals(url.getHost(), "127.0.0.1");
+        assertEquals(url.getPort(), 20880);
+        assertEquals(url.getServiceInterface(), MetadataService.class.getName());
+        assertEquals(url.getGroup(), "test");
+        assertEquals(url.getSide(), "consumer");
+        assertEquals(url.getVersion(), "1.0.0");
+        assertEquals(url.getApplication(), "dubbo-provider-demo");
+        assertEquals(url.getParameters().get("timeout"), "5000");
+    }
+
+}