This is an automated email from the ASF dual-hosted git repository. victory pushed a commit to branch dev-metadata in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/dev-metadata by this push: new c2b34c8 unit test new 2b01e0c Merge branch 'dev-metadata' of github.com:apache/incubator-dubbo into dev-metadata c2b34c8 is described below commit c2b34c81131a535a67c735fc890ba9a9764d36f6 Author: cvictory <shenglic...@gmail.com> AuthorDate: Mon Dec 3 18:32:06 2018 +0800 unit test --- .../identifier/ConsumerMetadataIdentifier.java | 7 ++++ .../metadata/identifier/MetadataIdentifier.java | 11 ++++- .../identifier/ProviderMetadataIdentifier.java | 6 +++ .../integration/MetadataReportServiceTest.java | 49 +++++++--------------- .../store/test/JTestMetadataReport4Test.java | 8 +++- 5 files changed, 44 insertions(+), 37 deletions(-) diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ConsumerMetadataIdentifier.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ConsumerMetadataIdentifier.java index ac1f48b..821f300 100644 --- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ConsumerMetadataIdentifier.java +++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ConsumerMetadataIdentifier.java @@ -1,6 +1,7 @@ package org.apache.dubbo.metadata.identifier; import org.apache.dubbo.common.Constants; +import org.apache.dubbo.common.URL; /** * 2018/10/25 @@ -15,6 +16,12 @@ public class ConsumerMetadataIdentifier extends MetadataIdentifier { this.application = application; } + public ConsumerMetadataIdentifier(URL url) { + super(url); + setSide(Constants.CONSUMER_SIDE); + setApplication(url.getParameter(Constants.APPLICATION_KEY)); + } + private String application; protected String getPathSegment() { diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/MetadataIdentifier.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/MetadataIdentifier.java index ee32a2c..67f66a4 100644 --- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/MetadataIdentifier.java +++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/MetadataIdentifier.java @@ -25,15 +25,22 @@ public class MetadataIdentifier { this.side = side; } + public MetadataIdentifier(URL url) { + this.serviceInterface = url.getServiceInterface(); + this.version = url.getParameter(Constants.VERSION_KEY); + this.group = url.getParameter(Constants.GROUP_KEY); + this.side = url.getParameter(Constants.SIDE_KEY); + } + public String getUniqueKey(KeyTypeEnum keyType) { - if (keyType == KeyTypeEnum.UNIQUE_KEY) { + if (keyType == KeyTypeEnum.PATH) { return getFilePathKey(); } return getIdentifierKey(); } public String getIdentifierKey() { - return serviceInterface + SEPARATOR + version + SEPARATOR + group + SEPARATOR + side; + return serviceInterface + SEPARATOR + (version == null ? "" : version + SEPARATOR) + (group == null ? "" : group + SEPARATOR) + side; } private String getFilePathKey() { diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ProviderMetadataIdentifier.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ProviderMetadataIdentifier.java index c2e03db..9a62fd1 100644 --- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ProviderMetadataIdentifier.java +++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/identifier/ProviderMetadataIdentifier.java @@ -1,6 +1,7 @@ package org.apache.dubbo.metadata.identifier; import org.apache.dubbo.common.Constants; +import org.apache.dubbo.common.URL; /** * 2018/10/25 @@ -14,4 +15,9 @@ public class ProviderMetadataIdentifier extends MetadataIdentifier { public ProviderMetadataIdentifier(String serviceInterface, String version, String group) { super(serviceInterface, version, group, Constants.PROVIDER_SIDE); } + + public ProviderMetadataIdentifier(URL url) { + super(url); + setSide(Constants.PROVIDER_SIDE); + } } diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/MetadataReportServiceTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/MetadataReportServiceTest.java index 94827d7..7cc8899 100644 --- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/MetadataReportServiceTest.java +++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/MetadataReportServiceTest.java @@ -1,10 +1,11 @@ package org.apache.dubbo.metadata.integration; +import com.google.gson.Gson; import org.apache.dubbo.common.Constants; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.utils.NetUtils; +import org.apache.dubbo.metadata.definition.model.FullServiceDefinition; import org.apache.dubbo.metadata.store.test.JTestMetadataReport4Test; - import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -55,12 +56,7 @@ public class MetadataReportServiceTest { Assert.assertTrue(metadataReportService1.metadataReport instanceof JTestMetadataReport4Test); JTestMetadataReport4Test jTestMetadataReport4Test = (JTestMetadataReport4Test) metadataReportService1.metadataReport; - Assert.assertTrue(jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getKey(publishUrl))); - - String value = jTestMetadataReport4Test.store.get(JTestMetadataReport4Test.getKey(publishUrl)); - Map<String, String> map = queryUrlToMap(value); - Assert.assertEquals(map.get("application"), "vicpubprovder"); - Assert.assertEquals(map.get("version"), "1.0.0"); + Assert.assertTrue(!jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getProviderKey(publishUrl))); } @@ -73,14 +69,8 @@ public class MetadataReportServiceTest { Assert.assertTrue(metadataReportService1.metadataReport instanceof JTestMetadataReport4Test); JTestMetadataReport4Test jTestMetadataReport4Test = (JTestMetadataReport4Test) metadataReportService1.metadataReport; - Assert.assertTrue(jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getKey(publishUrl))); - - String value = jTestMetadataReport4Test.store.get(JTestMetadataReport4Test.getKey(publishUrl)); - Map<String, String> map = queryUrlToMap(value); - Assert.assertEquals(map.get("application"), "vicpu"); - Assert.assertEquals(map.get("version"), "1.0.0"); - Assert.assertEquals(map.get("interface"), "ccc"); - Assert.assertNull(map.get(Constants.SERVICE_DESCIPTOR_KEY)); + Assert.assertTrue(!jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getProviderKey(publishUrl))); + } @Test @@ -92,14 +82,14 @@ public class MetadataReportServiceTest { Assert.assertTrue(metadataReportService1.metadataReport instanceof JTestMetadataReport4Test); JTestMetadataReport4Test jTestMetadataReport4Test = (JTestMetadataReport4Test) metadataReportService1.metadataReport; - Assert.assertTrue(jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getKey(publishUrl))); + Assert.assertTrue(jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getProviderKey(publishUrl))); - String value = jTestMetadataReport4Test.store.get(JTestMetadataReport4Test.getKey(publishUrl)); - Map<String, String> map = queryUrlToMap(value); + String value = jTestMetadataReport4Test.store.get(JTestMetadataReport4Test.getProviderKey(publishUrl)); + FullServiceDefinition fullServiceDefinition = toServiceDefinition(value); + Map<String,String> map = fullServiceDefinition.getParameters(); Assert.assertEquals(map.get("application"), "vicpubp"); Assert.assertEquals(map.get("version"), "1.0.3"); Assert.assertEquals(map.get("interface"), "org.apache.dubbo.metadata.integration.InterfaceNameTestService"); - Assert.assertNotNull(map.get(Constants.SERVICE_DESCIPTOR_KEY)); } @Test @@ -111,26 +101,19 @@ public class MetadataReportServiceTest { Assert.assertTrue(metadataReportService1.metadataReport instanceof JTestMetadataReport4Test); JTestMetadataReport4Test jTestMetadataReport4Test = (JTestMetadataReport4Test) metadataReportService1.metadataReport; - Assert.assertTrue(jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getKey(publishUrl))); + Assert.assertTrue(jTestMetadataReport4Test.store.containsKey(JTestMetadataReport4Test.getConsumerKey(publishUrl))); - String value = jTestMetadataReport4Test.store.get(JTestMetadataReport4Test.getKey(publishUrl)); - Map<String, String> map = queryUrlToMap(value); + String value = jTestMetadataReport4Test.store.get(JTestMetadataReport4Test.getConsumerKey(publishUrl)); + Gson gson = new Gson(); + Map<String, String> map = gson.fromJson(value, Map.class); Assert.assertEquals(map.get("application"), "vicpubconsumer"); Assert.assertEquals(map.get("version"), "1.0.x"); } - private Map<String, String> queryUrlToMap(String urlQuery) { - if (urlQuery == null) { - return Collections.emptyMap(); - } - String[] pairs = urlQuery.split("&"); - Map<String, String> map = new HashMap<>(); - for (String pairStr : pairs) { - String[] pair = pairStr.split("="); - map.put(pair[0], pair[1]); - } - return map; + private FullServiceDefinition toServiceDefinition(String urlQuery) { + Gson gson = new Gson(); + return gson.fromJson(urlQuery, FullServiceDefinition.class); } } diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java index 51793bb..066faef 100644 --- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java +++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java @@ -60,8 +60,12 @@ public class JTestMetadataReport4Test extends AbstractMetadataReport { store.put(consumerMetadataIdentifier.getIdentifierKey(), serviceParameterString); } - public static String getKey(URL url) { - return getProtocol(url) + url.getServiceKey(); + public static String getProviderKey(URL url) { + return new ProviderMetadataIdentifier(url).getUniqueKey(MetadataIdentifier.KeyTypeEnum.UNIQUE_KEY); + } + + public static String getConsumerKey(URL url) { + return new ConsumerMetadataIdentifier(url).getUniqueKey(MetadataIdentifier.KeyTypeEnum.UNIQUE_KEY); } }