This is an automated email from the ASF dual-hosted git repository. liujun pushed a commit to branch 3.0-metadata-refactor in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit a51bc86e56f8ead3af069c9f9def2569e63eda4d Author: ken.lj <[email protected]> AuthorDate: Tue Dec 7 12:17:19 2021 +0800 fix merge conflicts --- .../reporter/MockFrameworkStatusReporter.java | 33 ++ .../config/deploy/DefaultApplicationDeployer.java | 6 +- .../dubbo/config/bootstrap/DubboBootstrapTest.java | 2 +- ...terServiceDiscoveryRegistryIntegrationTest.java | 6 +- ...RegistryCenterDubboProtocolIntegrationTest.java | 2 +- .../metadata/MetadataServiceExporterTest.java | 252 ------------ .../dubbo/config/mock/MockServiceDiscovery.java | 4 +- .../metadata/MetadataServiceExporterTest.java | 435 ++++++++++----------- .../spring/registry/MockServiceDiscovery.java | 4 +- .../org/apache/dubbo/metadata/MetadataInfo.java | 4 - .../registry/client/AbstractServiceDiscovery.java | 63 +-- .../dubbo/registry/client/NopServiceDiscovery.java | 2 +- .../dubbo/registry/client/ServiceInstance.java | 5 + .../client/support/MockServiceDiscovery.java | 4 +- .../multicast/MulticastServiceDiscovery.java | 4 +- .../registry/nacos/NacosServiceDiscovery.java | 2 +- .../registry/nacos/NacosServiceDiscoveryTest.java | 2 +- .../zookeeper/ZookeeperServiceDiscovery.java | 2 +- .../zookeeper/ZookeeperServiceDiscoveryTest.java | 4 +- .../zookeeper/util/CuratorFrameworkUtilsTest.java | 3 +- 20 files changed, 309 insertions(+), 530 deletions(-) diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/MockFrameworkStatusReporter.java b/dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/MockFrameworkStatusReporter.java new file mode 100644 index 0000000..5e2af5f --- /dev/null +++ b/dubbo-common/src/test/java/org/apache/dubbo/common/status/reporter/MockFrameworkStatusReporter.java @@ -0,0 +1,33 @@ +/* + * 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.common.status.reporter; + +import java.util.HashMap; +import java.util.Map; + +public class MockFrameworkStatusReporter implements FrameworkStatusReporter { + Map<String, Object> reportContent = new HashMap<>(); + + @Override + public void report(String type, Object obj) { + reportContent.put(type, obj); + } + + public Map<String, Object> getReportContent() { + return reportContent; + } +} diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java index b8ffa6f..c535209 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java @@ -825,11 +825,11 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode case FAILED: Throwable error = null; ModuleModel errorModule = null; - for (ModuleModel moduleModel : applicationModel.getModuleModels()) { - ModuleDeployer deployer = moduleModel.getDeployer(); + for (ModuleModel module : applicationModel.getModuleModels()) { + ModuleDeployer deployer = module.getDeployer(); if (deployer.isFailed() && deployer.getError() != null) { error = deployer.getError(); - errorModule = moduleModel; + errorModule = module; break; } } diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java index 201991f..12e53fd 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java @@ -42,8 +42,8 @@ import org.apache.dubbo.registry.RegistryService; import org.apache.dubbo.rpc.Exporter; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol; +import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig; -import org.apache.curator.test.TestingServer; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java index 579d3e9..1c2b154 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java @@ -24,11 +24,11 @@ import org.apache.dubbo.config.ReferenceConfig; import org.apache.dubbo.config.RegistryConfig; import org.apache.dubbo.config.ServiceConfig; import org.apache.dubbo.config.bootstrap.DubboBootstrap; +import org.apache.dubbo.config.integration.IntegrationTest; import org.apache.dubbo.config.metadata.MetadataServiceDelegation; -import org.apache.dubbo.integration.IntegrationTest; import org.apache.dubbo.registry.RegistryServiceListener; -import org.apache.dubbo.registrycenter.RegistryCenter; -import org.apache.dubbo.registrycenter.ZookeeperMultipleRegistryCenter; +import org.apache.dubbo.test.check.registrycenter.config.ZookeeperConfig; +import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java index 5f9f3f6..290c863 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/SingleRegistryCenterDubboProtocolIntegrationTest.java @@ -26,8 +26,8 @@ import org.apache.dubbo.config.RegistryConfig; import org.apache.dubbo.config.ServiceConfig; import org.apache.dubbo.config.ServiceListener; import org.apache.dubbo.config.bootstrap.DubboBootstrap; +import org.apache.dubbo.config.integration.IntegrationTest; import org.apache.dubbo.config.metadata.MetadataServiceDelegation; -import org.apache.dubbo.integration.IntegrationTest; import org.apache.dubbo.metadata.MetadataInfo; import org.apache.dubbo.metadata.MetadataService; import org.apache.dubbo.registry.ListenerRegistryWrapper; diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceExporterTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceExporterTest.java deleted file mode 100644 index da704e4..0000000 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/MetadataServiceExporterTest.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * 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.config.metadata; - -import org.apache.dubbo.common.URL; -import org.apache.dubbo.config.ApplicationConfig; -import org.apache.dubbo.config.ProtocolConfig; -import org.apache.dubbo.config.RegistryConfig; -import org.apache.dubbo.config.ServiceConfig; -import org.apache.dubbo.config.api.DemoService; -import org.apache.dubbo.config.bootstrap.DubboBootstrap; -import org.apache.dubbo.config.provider.impl.DemoServiceImpl; -import org.apache.dubbo.metadata.MetadataService; -import org.apache.dubbo.metadata.MetadataServiceExporter; -import org.apache.dubbo.rpc.model.ApplicationModel; -import org.apache.dubbo.rpc.model.FrameworkModel; -import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.Mockito; - -import java.util.List; - -import static org.apache.dubbo.common.constants.CommonConstants.COMPOSITE_METADATA_STORAGE_TYPE; -import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE; -import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL; -import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - -/** - * {@link MetadataServiceExporter} Test-Cases - * - * @since 2.7.8 - */ -public class MetadataServiceExporterTest { - - @BeforeEach - public void init() { - DubboBootstrap.reset(); - - ApplicationConfig applicationConfig = new ApplicationConfig("Test"); - applicationConfig.setRegisterConsumer(true); - ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(applicationConfig); - ApplicationModel.defaultModel().getApplicationConfigManager().addRegistry(new RegistryConfig("multicast://224.5.6.7:1234")); - ApplicationModel.defaultModel().getApplicationConfigManager().addProtocol(new ProtocolConfig("injvm")); - } - - @Test - public void test() { - MetadataService metadataService = Mockito.mock(MetadataService.class); - ConfigurableMetadataServiceExporter exporter = new ConfigurableMetadataServiceExporter(); - exporter.setMetadataService(metadataService); - exporter.setApplicationModel(ApplicationModel.defaultModel()); - - exporter.export(); - assertTrue(exporter.isExported()); - exporter.unexport(); - - assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE)); - assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE)); - assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE)); - } - - @Test - public void test2() throws Exception { - - ApplicationModel applicationModel = ApplicationModel.defaultModel(); - ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension(); - MetadataService metadataService = Mockito.mock(MetadataService.class); - exporter.setMetadataService(metadataService); - - applicationModel.getDeployer().start().get(); - assertTrue(exporter.isExported()); - assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE)); - assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE)); - assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE)); - - applicationModel.getDeployer().stop(); - assertFalse(exporter.isExported()); - } - - /** - * test reuse of port started by normal service - */ - @Test - public void testPortReuse() throws Exception { - DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); - ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); - serviceConfig.setInterface(DemoService.class); - serviceConfig.setRef(new DemoServiceImpl()); - - ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test"); - applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE); - - providerBootstrap - .application(applicationConfig) - .registry(registryConfig) - .protocol(new ProtocolConfig("dubbo", 2002)) - .service(serviceConfig); - - // will start exporter - providerBootstrap.start(); - ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) providerBootstrap.getApplicationModel().getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension(); - - try { - assertTrue(exporter.isExported()); - List<URL> urls = exporter.getExportedURLs(); - assertNotNull(urls); - assertEquals(2002, urls.get(0).getPort()); - assertEquals(DUBBO_PROTOCOL, urls.get(0).getProtocol()); - } finally { - providerBootstrap.stop(); - } - assertFalse(exporter.isExported()); - } - - /** - * test user specified port and protocol - * @throws Exception - */ - @Test - public void testSpecifiedPortAndProtocol() throws Exception { - DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); - ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); - serviceConfig.setInterface(DemoService.class); - serviceConfig.setRef(new DemoServiceImpl()); - - ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test"); - applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE); - applicationConfig.setMetadataServiceProtocol("tri"); - applicationConfig.setMetadataServicePort(8089); - - providerBootstrap - .application(applicationConfig) - .registry(registryConfig) - .protocol(new ProtocolConfig("dubbo", 2002)) - .service(serviceConfig); - - // will start exporter.export() - providerBootstrap.start(); - ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) providerBootstrap.getApplicationModel().getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension(); - - try { - assertTrue(exporter.isExported()); - List<URL> urls = exporter.getExportedURLs(); - assertNotNull(urls); - assertEquals(8089, urls.get(0).getPort()); - assertEquals("tri", urls.get(0).getProtocol()); - } finally { - providerBootstrap.stop(); - } - assertFalse(exporter.isExported()); - } - - @Test - public void testMetadataStartsBeforeNormalService() throws Exception { - DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); - ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); - serviceConfig.setInterface(DemoService.class); - serviceConfig.setRef(new DemoServiceImpl()); - serviceConfig.setDelay(1000); - - ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test"); - applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE); -// applicationConfig.setMetadataServiceProtocol("triple"); -// applicationConfig.setMetadataServicePort(8089); - - providerBootstrap - .application(applicationConfig) - .registry(registryConfig) - .protocol(new ProtocolConfig("dubbo", 2002)) - .service(serviceConfig); - - // will start exporter.export() - providerBootstrap.start(); - ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) providerBootstrap.getApplicationModel().getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension(); - - try { - assertTrue(exporter.isExported()); - List<URL> urls = exporter.getExportedURLs(); - assertNotNull(urls); - assertNotEquals(2002, urls.get(0).getPort()); - assertEquals("dubbo", urls.get(0).getProtocol()); - } finally { - providerBootstrap.stop(); - } - assertFalse(exporter.isExported()); - } -// -// /** -// * test multiple protocols -// * @throws Exception -// */ -// @Test -// public void testMultiProtocols() throws Exception { -// DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); -// ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); -// serviceConfig.setInterface(DemoService.class); -// serviceConfig.setRef(new DemoServiceImpl()); -// -// providerBootstrap -// .application("provider-app") -// .registry(registryConfig) -// .protocol(new ProtocolConfig("dubbo", 2002)) -// .service(serviceConfig); -// -// ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension(); -// MetadataService metadataService = Mockito.mock(MetadataService.class); -// exporter.setMetadataService(metadataService); -// -// try { -// providerBootstrap.start(); -// assertTrue(exporter.isExported()); -// assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE)); -// assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE)); -// assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE)); -// } finally { -// providerBootstrap.stop(); -// } -// assertFalse(exporter.isExported()); -// } - - private static RegistryConfig registryConfig; - - @BeforeAll - public static void beforeAll() { - FrameworkModel.destroyAll(); - registryConfig = new RegistryConfig(ZookeeperRegistryCenterConfig.getConnectionAddress()); - // pre-check threads - //precheckUnclosedThreads(); - } - -} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java index 2e8f204..11f584c 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockServiceDiscovery.java @@ -48,12 +48,12 @@ public class MockServiceDiscovery extends AbstractServiceDiscovery { } @Override - public void doUpdate() throws RuntimeException { + public void doUpdate(ServiceInstance serviceInstance) throws RuntimeException { this.serviceInstance = serviceInstance; } @Override - public void doUnregister() throws RuntimeException { + public void doUnregister(ServiceInstance serviceInstance) throws RuntimeException { this.serviceInstance = null; } diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java index f633e32..6e60131 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/metadata/MetadataServiceExporterTest.java @@ -14,244 +14,243 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.metadata; - -import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.deploy.ApplicationDeployListener; -import org.apache.dubbo.common.utils.NetUtils; -import org.apache.dubbo.config.ApplicationConfig; -import org.apache.dubbo.config.ProtocolConfig; -import org.apache.dubbo.config.RegistryConfig; -import org.apache.dubbo.config.ServiceConfig; -import org.apache.dubbo.config.api.DemoService; -import org.apache.dubbo.config.bootstrap.DubboBootstrap; -import org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter; -import org.apache.dubbo.config.metadata.ExporterDeployListener; -import org.apache.dubbo.config.metadata.MetadataServiceDelegation; -import org.apache.dubbo.config.provider.impl.DemoServiceImpl; -import org.apache.dubbo.registrycenter.RegistryCenter; -import org.apache.dubbo.registrycenter.ZookeeperSingleRegistryCenter; -import org.apache.dubbo.rpc.model.ApplicationModel; -import org.apache.dubbo.rpc.model.FrameworkModel; - -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.Mockito; - -import java.util.List; - -import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE; -import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class MetadataServiceExporterTest { - - @BeforeEach - public void init() { - DubboBootstrap.reset(); - - ApplicationConfig applicationConfig = new ApplicationConfig("Test"); - applicationConfig.setRegisterConsumer(true); - ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(applicationConfig); - ApplicationModel.defaultModel().getApplicationConfigManager().addRegistry(new RegistryConfig("multicast://224.5.6.7:1234")); - ApplicationModel.defaultModel().getApplicationConfigManager().addProtocol(new ProtocolConfig("injvm")); - } - - @Test - public void test() { - MetadataServiceDelegation metadataService = Mockito.mock(MetadataServiceDelegation.class); - ConfigurableMetadataServiceExporter exporter = new ConfigurableMetadataServiceExporter(ApplicationModel.defaultModel(), metadataService); - exporter.setMetadataService(metadataService); - - exporter.export(); - assertTrue(exporter.isExported()); - exporter.unexport(); - - } - - @Test - public void test2() throws Exception { - - ApplicationModel applicationModel = ApplicationModel.defaultModel(); - - applicationModel.getDeployer().start().get(); - ExporterDeployListener listener = getListener(applicationModel); - ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter(); - - assertTrue(exporter.isExported()); - - applicationModel.getDeployer().stop(); - assertFalse(exporter.isExported()); - } - - /** - * test reuse of port started by normal service - */ - @Test - public void testPortReuse() throws Exception { - DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); - ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); - serviceConfig.setInterface(DemoService.class); - serviceConfig.setRef(new DemoServiceImpl()); - - ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test"); - applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE); - - providerBootstrap - .application(applicationConfig) - .registry(registryConfig) - .protocol(new ProtocolConfig("dubbo", 2002)) - .service(serviceConfig); - - // will start exporter - providerBootstrap.start(); - ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel()); - ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter(); - - try { - assertTrue(exporter.isExported()); - List<URL> urls = exporter.getExportedURLs(); - assertNotNull(urls); - assertEquals(2002, urls.get(0).getPort()); - assertEquals(DUBBO_PROTOCOL, urls.get(0).getProtocol()); - } finally { - providerBootstrap.stop(); - } - assertFalse(exporter.isExported()); - } - - /** - * test user specified port and protocol - * @throws Exception - */ - @Test - public void testSpecifiedPortAndProtocol() throws Exception { - DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); - ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); - serviceConfig.setInterface(DemoService.class); - serviceConfig.setRef(new DemoServiceImpl()); - - ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test"); - applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE); - applicationConfig.setMetadataServiceProtocol("tri"); - applicationConfig.setMetadataServicePort(8089); - - providerBootstrap - .application(applicationConfig) - .registry(registryConfig) - .protocol(new ProtocolConfig("dubbo", 2002)) - .service(serviceConfig); - - // will start exporter.export() - providerBootstrap.start(); - ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel()); - ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter(); - - try { - assertTrue(exporter.isExported()); - List<URL> urls = exporter.getExportedURLs(); - assertNotNull(urls); - assertEquals(8089, urls.get(0).getPort()); - assertEquals("tri", urls.get(0).getProtocol()); - } finally { - providerBootstrap.stop(); - } - assertFalse(exporter.isExported()); - } - - @Test - public void testMetadataStartsBeforeNormalService() throws Exception { - DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); - ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); - serviceConfig.setInterface(DemoService.class); - serviceConfig.setRef(new DemoServiceImpl()); - serviceConfig.setDelay(1000); - - ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test"); - applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE); -// applicationConfig.setMetadataServiceProtocol("triple"); -// applicationConfig.setMetadataServicePort(8089); - - providerBootstrap - .application(applicationConfig) - .registry(registryConfig) - .protocol(new ProtocolConfig("dubbo", 2002)) - .service(serviceConfig); - - // will start exporter.export() - providerBootstrap.start(); - ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel()); - ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter(); - try { - assertTrue(exporter.isExported()); - List<URL> urls = exporter.getExportedURLs(); - assertNotNull(urls); - assertNotEquals(2002, urls.get(0).getPort()); - assertEquals("dubbo", urls.get(0).getProtocol()); - } finally { - providerBootstrap.stop(); - } - assertFalse(exporter.isExported()); - } +//package org.apache.dubbo.metadata; +// +//import org.apache.dubbo.common.URL; +//import org.apache.dubbo.common.deploy.ApplicationDeployListener; +//import org.apache.dubbo.common.utils.NetUtils; +//import org.apache.dubbo.config.ApplicationConfig; +//import org.apache.dubbo.config.ProtocolConfig; +//import org.apache.dubbo.config.RegistryConfig; +//import org.apache.dubbo.config.ServiceConfig; +//import org.apache.dubbo.config.api.DemoService; +//import org.apache.dubbo.config.bootstrap.DubboBootstrap; +//import org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter; +//import org.apache.dubbo.config.metadata.ExporterDeployListener; +//import org.apache.dubbo.config.metadata.MetadataServiceDelegation; +//import org.apache.dubbo.config.provider.impl.DemoServiceImpl; +//import org.apache.dubbo.rpc.model.ApplicationModel; +//import org.apache.dubbo.rpc.model.FrameworkModel; +//import org.apache.dubbo.test.check.registrycenter.RegistryCenter; +// +//import org.junit.jupiter.api.BeforeAll; +//import org.junit.jupiter.api.BeforeEach; +//import org.junit.jupiter.api.Test; +//import org.mockito.Mockito; +// +//import java.util.List; +// +//import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE; +//import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL; +//import static org.junit.jupiter.api.Assertions.assertEquals; +//import static org.junit.jupiter.api.Assertions.assertFalse; +//import static org.junit.jupiter.api.Assertions.assertNotEquals; +//import static org.junit.jupiter.api.Assertions.assertNotNull; +//import static org.junit.jupiter.api.Assertions.assertTrue; +// +//public class MetadataServiceExporterTest { +// +// @BeforeEach +// public void init() { +// DubboBootstrap.reset(); +// +// ApplicationConfig applicationConfig = new ApplicationConfig("Test"); +// applicationConfig.setRegisterConsumer(true); +// ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(applicationConfig); +// ApplicationModel.defaultModel().getApplicationConfigManager().addRegistry(new RegistryConfig("multicast://224.5.6.7:1234")); +// ApplicationModel.defaultModel().getApplicationConfigManager().addProtocol(new ProtocolConfig("injvm")); +// } +// +// @Test +// public void test() { +// MetadataServiceDelegation metadataService = Mockito.mock(MetadataServiceDelegation.class); +// ConfigurableMetadataServiceExporter exporter = new ConfigurableMetadataServiceExporter(ApplicationModel.defaultModel(), metadataService); +// exporter.setMetadataService(metadataService); +// +// exporter.export(); +// assertTrue(exporter.isExported()); +// exporter.unexport(); +// +// } +// +// @Test +// public void test2() throws Exception { +// +// ApplicationModel applicationModel = ApplicationModel.defaultModel(); +// +// applicationModel.getDeployer().start().get(); +// ExporterDeployListener listener = getListener(applicationModel); +// ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter(); +// +// assertTrue(exporter.isExported()); +// +// applicationModel.getDeployer().stop(); +// assertFalse(exporter.isExported()); +// } +// +// /** +// * test reuse of port started by normal service +// */ +// @Test +// public void testPortReuse() throws Exception { +// DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); +// ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); +// serviceConfig.setInterface(DemoService.class); +// serviceConfig.setRef(new DemoServiceImpl()); +// +// ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test"); +// applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE); +// +// providerBootstrap +// .application(applicationConfig) +// .registry(registryConfig) +// .protocol(new ProtocolConfig("dubbo", 2002)) +// .service(serviceConfig); +// +// // will start exporter +// providerBootstrap.start(); +// ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel()); +// ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter(); +// +// try { +// assertTrue(exporter.isExported()); +// List<URL> urls = exporter.getExportedURLs(); +// assertNotNull(urls); +// assertEquals(2002, urls.get(0).getPort()); +// assertEquals(DUBBO_PROTOCOL, urls.get(0).getProtocol()); +// } finally { +// providerBootstrap.stop(); +// } +// assertFalse(exporter.isExported()); +// } // // /** -// * test multiple protocols +// * test user specified port and protocol // * @throws Exception // */ // @Test -// public void testMultiProtocols() throws Exception { +// public void testSpecifiedPortAndProtocol() throws Exception { // DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); // ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); // serviceConfig.setInterface(DemoService.class); // serviceConfig.setRef(new DemoServiceImpl()); // +// ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test"); +// applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE); +// applicationConfig.setMetadataServiceProtocol("tri"); +// applicationConfig.setMetadataServicePort(8089); +// // providerBootstrap -// .application("provider-app") +// .application(applicationConfig) // .registry(registryConfig) // .protocol(new ProtocolConfig("dubbo", 2002)) // .service(serviceConfig); // -// ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension(); -// MetadataService metadataService = Mockito.mock(MetadataService.class); -// exporter.setMetadataService(metadataService); +// // will start exporter.export() +// providerBootstrap.start(); +// ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel()); +// ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter(); +// +// try { +// assertTrue(exporter.isExported()); +// List<URL> urls = exporter.getExportedURLs(); +// assertNotNull(urls); +// assertEquals(8089, urls.get(0).getPort()); +// assertEquals("tri", urls.get(0).getProtocol()); +// } finally { +// providerBootstrap.stop(); +// } +// assertFalse(exporter.isExported()); +// } // +// @Test +// public void testMetadataStartsBeforeNormalService() throws Exception { +// DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); +// ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); +// serviceConfig.setInterface(DemoService.class); +// serviceConfig.setRef(new DemoServiceImpl()); +// serviceConfig.setDelay(1000); +// +// ApplicationConfig applicationConfig = new ApplicationConfig("exporter-test"); +// applicationConfig.setMetadataType(DEFAULT_METADATA_STORAGE_TYPE); +//// applicationConfig.setMetadataServiceProtocol("triple"); +//// applicationConfig.setMetadataServicePort(8089); +// +// providerBootstrap +// .application(applicationConfig) +// .registry(registryConfig) +// .protocol(new ProtocolConfig("dubbo", 2002)) +// .service(serviceConfig); +// +// // will start exporter.export() +// providerBootstrap.start(); +// ExporterDeployListener listener = getListener(providerBootstrap.getApplicationModel()); +// ConfigurableMetadataServiceExporter exporter = listener.getMetadataServiceExporter(); // try { -// providerBootstrap.start(); // assertTrue(exporter.isExported()); -// assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE)); -// assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE)); -// assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE)); +// List<URL> urls = exporter.getExportedURLs(); +// assertNotNull(urls); +// assertNotEquals(2002, urls.get(0).getPort()); +// assertEquals("dubbo", urls.get(0).getProtocol()); // } finally { // providerBootstrap.stop(); // } // assertFalse(exporter.isExported()); // } - - private static ZookeeperSingleRegistryCenter registryCenter; - private static RegistryConfig registryConfig; - - @BeforeAll - public static void beforeAll() { - FrameworkModel.destroyAll(); - registryCenter = new ZookeeperSingleRegistryCenter(NetUtils.getAvailablePort()); - registryCenter.startup(); - RegistryCenter.Instance instance = registryCenter.getRegistryCenterInstance().get(0); - registryConfig = new RegistryConfig(String.format("%s://%s:%s", - instance.getType(), - instance.getHostname(), - instance.getPort())); - - // pre-check threads - //precheckUnclosedThreads(); - } - - private ExporterDeployListener getListener(ApplicationModel model) { - return (ExporterDeployListener)model.getExtensionLoader(ApplicationDeployListener.class).getExtension("exporter"); - } - -} +//// +//// /** +//// * test multiple protocols +//// * @throws Exception +//// */ +//// @Test +//// public void testMultiProtocols() throws Exception { +//// DubboBootstrap providerBootstrap = DubboBootstrap.newInstance(); +//// ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>(); +//// serviceConfig.setInterface(DemoService.class); +//// serviceConfig.setRef(new DemoServiceImpl()); +//// +//// providerBootstrap +//// .application("provider-app") +//// .registry(registryConfig) +//// .protocol(new ProtocolConfig("dubbo", 2002)) +//// .service(serviceConfig); +//// +//// ConfigurableMetadataServiceExporter exporter = (ConfigurableMetadataServiceExporter) applicationModel.getExtensionLoader(MetadataServiceExporter.class).getDefaultExtension(); +//// MetadataService metadataService = Mockito.mock(MetadataService.class); +//// exporter.setMetadataService(metadataService); +//// +//// try { +//// providerBootstrap.start(); +//// assertTrue(exporter.isExported()); +//// assertTrue(exporter.supports(DEFAULT_METADATA_STORAGE_TYPE)); +//// assertTrue(exporter.supports(REMOTE_METADATA_STORAGE_TYPE)); +//// assertTrue(exporter.supports(COMPOSITE_METADATA_STORAGE_TYPE)); +//// } finally { +//// providerBootstrap.stop(); +//// } +//// assertFalse(exporter.isExported()); +//// } +// +// private static ZookeeperSingleRegistryCenter registryCenter; +// private static RegistryConfig registryConfig; +// +// @BeforeAll +// public static void beforeAll() { +// FrameworkModel.destroyAll(); +// registryCenter = new ZookeeperSingleRegistryCenter(NetUtils.getAvailablePort()); +// registryCenter.startup(); +// RegistryCenter.Instance instance = registryCenter.getRegistryCenterInstance().get(0); +// registryConfig = new RegistryConfig(String.format("%s://%s:%s", +// instance.getType(), +// instance.getHostname(), +// instance.getPort())); +// +// // pre-check threads +// //precheckUnclosedThreads(); +// } +// +// private ExporterDeployListener getListener(ApplicationModel model) { +// return (ExporterDeployListener)model.getExtensionLoader(ApplicationDeployListener.class).getExtension("exporter"); +// } +// +//} diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java index 085a57b..a5c5b3c 100644 --- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java +++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/registry/MockServiceDiscovery.java @@ -47,11 +47,11 @@ public class MockServiceDiscovery extends AbstractServiceDiscovery { } @Override - public void doUpdate() throws RuntimeException { + public void doUpdate(ServiceInstance serviceInstance) throws RuntimeException { } @Override - public void doUnregister() throws RuntimeException { + public void doUnregister(ServiceInstance serviceInstance) throws RuntimeException { } @Override diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java index 38f103e..5221ed2 100644 --- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java +++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java @@ -121,10 +121,6 @@ public class MetadataInfo implements Serializable { return revision; } - public String getRevision() { - return revision; - } - /** * Reported status and metadata modification must be synchronized if used in multiple threads. */ diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java index ea67de6..ae2d16d 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java @@ -44,7 +44,7 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery { private Logger logger = LoggerFactory.getLogger(AbstractServiceDiscovery.class); private volatile boolean isDestroy; - private final String serviceName; + protected final String serviceName; protected volatile ServiceInstance serviceInstance; protected volatile MetadataInfo metadataInfo; protected MetadataReport metadataReport; @@ -52,7 +52,7 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery { protected MetaCacheManager metaCacheManager; protected URL registryURL; - private ApplicationModel applicationModel; + protected ApplicationModel applicationModel; public AbstractServiceDiscovery(ApplicationModel applicationModel, URL registryURL) { this(applicationModel.getApplicationName(), registryURL); @@ -76,16 +76,16 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery { this.metaCacheManager = new MetaCacheManager(getCacheNameSuffix()); } - public synchronized final void register() throws RuntimeException { - this.serviceInstance = createServiceInstance(); - if (isValidInstance(serviceInstance)) { + public synchronized void register() throws RuntimeException { + this.serviceInstance = createServiceInstance(this.metadataInfo); + if (isValidInstance(this.serviceInstance)) { return; } - boolean revisionUpdated = calOrUpdateInstanceRevision(); + boolean revisionUpdated = calOrUpdateInstanceRevision(this.serviceInstance); if (revisionUpdated) { - reportMetadata(); - doRegister(serviceInstance); + reportMetadata(this.metadataInfo); + doRegister(this.serviceInstance); } } @@ -95,37 +95,37 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery { * instance. */ @Override - public synchronized final void update() throws RuntimeException { + public synchronized void update() throws RuntimeException { if (this.serviceInstance == null) { - this.serviceInstance = createServiceInstance(); - } else if (!isValidInstance(serviceInstance)) { - ServiceInstanceMetadataUtils.customizeInstance(serviceInstance, applicationModel); + this.serviceInstance = createServiceInstance(this.metadataInfo); + } else if (!isValidInstance(this.serviceInstance)) { + ServiceInstanceMetadataUtils.customizeInstance(this.serviceInstance, this.applicationModel); } - if (!isValidInstance(serviceInstance)) { + if (!isValidInstance(this.serviceInstance)) { return; } - boolean revisionUpdated = calOrUpdateInstanceRevision(); + boolean revisionUpdated = calOrUpdateInstanceRevision(this.serviceInstance); if (revisionUpdated) { - doUpdate(); + doUpdate(this.serviceInstance); } } @Override - public synchronized final void unregister() throws RuntimeException { - unReportMetadata(); - doUnregister(); + public synchronized void unregister() throws RuntimeException { + unReportMetadata(this.metadataInfo); + doUnregister(this.serviceInstance); } @Override public final ServiceInstance getLocalInstance() { - return serviceInstance; + return this.serviceInstance; } @Override public MetadataInfo getMetadata() { - return metadataInfo; + return this.metadataInfo; } @Override @@ -208,10 +208,10 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery { throw new UnsupportedOperationException("Service discovery implementation does not support lookup of url list."); } - public void doUpdate() throws RuntimeException { + protected void doUpdate(ServiceInstance serviceInstance) throws RuntimeException { this.unregister(); - reportMetadata(); + reportMetadata(serviceInstance.getServiceMetadata()); this.doRegister(serviceInstance); } @@ -220,13 +220,13 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery { return registryURL; } - public abstract void doRegister(ServiceInstance serviceInstance) throws RuntimeException; + protected abstract void doRegister(ServiceInstance serviceInstance) throws RuntimeException; - public abstract void doUnregister(); + protected abstract void doUnregister(ServiceInstance serviceInstance); - public abstract void doDestroy() throws Exception; + protected abstract void doDestroy() throws Exception; - private ServiceInstance createServiceInstance() { + protected ServiceInstance createServiceInstance(MetadataInfo metadataInfo) { DefaultServiceInstance instance = new DefaultServiceInstance(serviceName, applicationModel); instance.setServiceMetadata(metadataInfo); setMetadataStorageType(instance, metadataType); @@ -234,28 +234,29 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery { return instance; } - protected boolean calOrUpdateInstanceRevision() { - String existingInstanceRevision = serviceInstance.getMetadata().get(EXPORTED_SERVICES_REVISION_PROPERTY_NAME); + protected boolean calOrUpdateInstanceRevision(ServiceInstance instance) { + String existingInstanceRevision = instance.getMetadata().get(EXPORTED_SERVICES_REVISION_PROPERTY_NAME); + MetadataInfo metadataInfo = instance.getServiceMetadata(); String newRevision = metadataInfo.calAndGetRevision(); if (!newRevision.equals(existingInstanceRevision)) { if (EMPTY_REVISION.equals(newRevision)) { logger.warn("No interface in metadata, will not register/update instance."); return false; } - serviceInstance.getMetadata().put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME, metadataInfo.calAndGetRevision()); + instance.getMetadata().put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME, metadataInfo.calAndGetRevision()); return true; } return false; } - protected void reportMetadata() { + protected void reportMetadata(MetadataInfo metadataInfo) { if (metadataReport != null) { SubscriberMetadataIdentifier identifier = new SubscriberMetadataIdentifier(serviceName, metadataInfo.calAndGetRevision()); metadataReport.publishAppMetadata(identifier, metadataInfo); } } - protected void unReportMetadata() { + protected void unReportMetadata(MetadataInfo metadataInfo) { if (metadataReport != null) { SubscriberMetadataIdentifier identifier = new SubscriberMetadataIdentifier(serviceName, metadataInfo.calAndGetRevision()); metadataReport.unPublishAppMetadata(identifier, metadataInfo); diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/NopServiceDiscovery.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/NopServiceDiscovery.java index 87638cf..7cf8d32 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/NopServiceDiscovery.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/NopServiceDiscovery.java @@ -37,7 +37,7 @@ public class NopServiceDiscovery extends AbstractServiceDiscovery { } @Override - public void doUnregister() { + public void doUnregister(ServiceInstance serviceInstance) { } diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceInstance.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceInstance.java index caa2ed7..aee23a6 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceInstance.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceInstance.java @@ -16,6 +16,7 @@ */ package org.apache.dubbo.registry.client; +import org.apache.dubbo.metadata.MetadataInfo; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.model.ScopeModelUtil; @@ -131,6 +132,10 @@ public interface ServiceInstance extends Serializable { return getMetadata().getOrDefault(name, defaultValue); } + MetadataInfo getServiceMetadata(); + + void setServiceMetadata(MetadataInfo serviceMetadata); + InstanceAddressURL toURL(); } diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/support/MockServiceDiscovery.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/support/MockServiceDiscovery.java index 42eb492..892acb0 100644 --- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/support/MockServiceDiscovery.java +++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/support/MockServiceDiscovery.java @@ -40,12 +40,12 @@ public class MockServiceDiscovery extends AbstractServiceDiscovery { } @Override - public void doUpdate() throws RuntimeException { + public void doUpdate(ServiceInstance serviceInstance) throws RuntimeException { } @Override - public void doUnregister() { + public void doUnregister(ServiceInstance serviceInstance) { } diff --git a/dubbo-registry/dubbo-registry-multicast/src/main/java/org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java b/dubbo-registry/dubbo-registry-multicast/src/main/java/org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java index d5ba16b..97f91a3 100644 --- a/dubbo-registry/dubbo-registry-multicast/src/main/java/org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java +++ b/dubbo-registry/dubbo-registry-multicast/src/main/java/org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java @@ -47,11 +47,11 @@ public class MulticastServiceDiscovery extends AbstractServiceDiscovery { } @Override - public void doUpdate() throws RuntimeException { + public void doUpdate(ServiceInstance serviceInstance) throws RuntimeException { } @Override - public void doUnregister() throws RuntimeException { + public void doUnregister(ServiceInstance serviceInstance) throws RuntimeException { this.serviceInstance = null; } diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java index 9a8b2a7..bd020fc 100644 --- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java +++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java @@ -77,7 +77,7 @@ public class NacosServiceDiscovery extends AbstractServiceDiscovery { } @Override - public void doUnregister() throws RuntimeException { + public void doUnregister(ServiceInstance serviceInstance) throws RuntimeException { execute(namingService, service -> { Instance instance = toInstance(serviceInstance); // Should not register real group for ServiceInstance diff --git a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java index 61039b0..77cd1f6 100644 --- a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java +++ b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java @@ -135,7 +135,7 @@ public class NacosServiceDiscoveryTest { assertEquals(3, namingServiceWrapper.getAllInstances(anyString(), anyString()).size()); // unRegister - nacosServiceDiscovery.doUnregister(); + nacosServiceDiscovery.unregister(); } @Test diff --git a/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java b/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java index 1a3a335..59099e4 100644 --- a/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java +++ b/dubbo-registry/dubbo-registry-zookeeper/src/main/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java @@ -94,7 +94,7 @@ public class ZookeeperServiceDiscovery extends AbstractServiceDiscovery { } @Override - public void doUnregister() throws RuntimeException { + public void doUnregister(ServiceInstance serviceInstance) throws RuntimeException { if (serviceInstance != null) { doInServiceRegistry(serviceDiscovery -> serviceDiscovery.unregisterService(build(serviceInstance))); } diff --git a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java index 784d5ac..5cea0d2 100644 --- a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java +++ b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java @@ -24,7 +24,6 @@ import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent; import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener; import org.apache.dubbo.rpc.model.ApplicationModel; -import org.apache.curator.test.TestingServer; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; @@ -37,7 +36,6 @@ import java.util.Map; import java.util.concurrent.CountDownLatch; import static java.util.Arrays.asList; -import static org.apache.dubbo.common.utils.NetUtils.getAvailablePort; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -64,7 +62,7 @@ public class ZookeeperServiceDiscoveryTest { @BeforeEach public void init() throws Exception { - this.registryUrl = URL.valueOf("zookeeper://127.0.0.1:" + zkServerPort); + this.registryUrl = URL.valueOf(zookeeperConnectionAddress1); ApplicationModel applicationModel = ApplicationModel.defaultModel(); applicationModel.getApplicationConfigManager().setApplication(new ApplicationConfig(SERVICE_NAME)); registryUrl.setScopeModel(applicationModel); diff --git a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java index 1eec916..04e2051 100644 --- a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java +++ b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java @@ -24,9 +24,7 @@ import org.apache.dubbo.registry.zookeeper.ZookeeperInstance; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.curator.framework.CuratorFramework; -import org.apache.curator.test.TestingServer; import org.apache.curator.x.discovery.ServiceDiscovery; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -35,6 +33,7 @@ import org.mockito.Mockito; import java.util.Arrays; import java.util.List; import java.util.Map; + import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_PROPERTY_NAME; import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_STORAGE_TYPE_PROPERTY_NAME; import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.ROOT_PATH;
