use of com.alibaba.nacos.api.naming.pojo.Instance in project dubbo by alibaba.
the class NacosRegistryTest method testRegister.
@Test
public void testRegister() {
NamingService namingService = mock(NacosNamingService.class);
try {
String serviceName = "providers:org.apache.dubbo.registry.nacos.NacosService:1.0.0:default";
String category = this.serviceUrl.getParameter(CATEGORY_KEY, DEFAULT_CATEGORY);
URL newUrl = this.serviceUrl.addParameter(CATEGORY_KEY, category);
newUrl = newUrl.addParameter(PROTOCOL_KEY, this.serviceUrl.getProtocol());
newUrl = newUrl.addParameter(PATH_KEY, this.serviceUrl.getPath());
newUrl = newUrl.addParameters(NacosNamingServiceUtils.getNacosPreservedParam(this.serviceUrl));
String ip = newUrl.getHost();
int port = newUrl.getPort();
Instance instance = new Instance();
instance.setIp(ip);
instance.setPort(port);
instance.setMetadata(new HashMap<>(newUrl.getParameters()));
doNothing().when(namingService).registerInstance(serviceName, Constants.DEFAULT_GROUP, instance);
} catch (NacosException e) {
// ignore
}
NacosNamingServiceWrapper nacosNamingServiceWrapper = new NacosNamingServiceWrapper(namingService);
nacosRegistry = new NacosRegistry(this.registryUrl, nacosNamingServiceWrapper);
Set<URL> registered;
for (int i = 0; i < 2; i++) {
nacosRegistry.register(serviceUrl);
registered = nacosRegistry.getRegistered();
assertThat(registered.contains(serviceUrl), is(true));
}
registered = nacosRegistry.getRegistered();
assertThat(registered.size(), is(1));
}
use of com.alibaba.nacos.api.naming.pojo.Instance in project dubbo by alibaba.
the class NacosRegistryTest method testSubscribe.
@Test
public void testSubscribe() {
NamingService namingService = mock(NacosNamingService.class);
try {
String serviceName = "providers:org.apache.dubbo.registry.nacos.NacosService:1.0.0:default";
String category = this.serviceUrl.getParameter(CATEGORY_KEY, DEFAULT_CATEGORY);
URL newUrl = this.serviceUrl.addParameter(CATEGORY_KEY, category);
newUrl = newUrl.addParameter(PROTOCOL_KEY, this.serviceUrl.getProtocol());
newUrl = newUrl.addParameter(PATH_KEY, this.serviceUrl.getPath());
newUrl = newUrl.addParameters(NacosNamingServiceUtils.getNacosPreservedParam(this.serviceUrl));
String ip = newUrl.getHost();
int port = newUrl.getPort();
Instance instance = new Instance();
instance.setIp(ip);
instance.setPort(port);
instance.setMetadata(new HashMap<>(newUrl.getParameters()));
List<Instance> instances = new ArrayList<>();
instances.add(instance);
when(namingService.getAllInstances(serviceName, this.registryUrl.getParameter(GROUP_KEY, Constants.DEFAULT_GROUP))).thenReturn(instances);
} catch (NacosException e) {
// ignore
}
NacosNamingServiceWrapper nacosNamingServiceWrapper = new NacosNamingServiceWrapper(namingService);
nacosRegistry = new NacosRegistry(this.registryUrl, nacosNamingServiceWrapper);
NotifyListener listener = mock(NotifyListener.class);
nacosRegistry.subscribe(serviceUrl, listener);
Map<URL, Set<NotifyListener>> subscribed = nacosRegistry.getSubscribed();
assertThat(subscribed.size(), is(1));
assertThat(subscribed.get(serviceUrl).size(), is(1));
}
use of com.alibaba.nacos.api.naming.pojo.Instance in project dubbo by alibaba.
the class NacosRegistryTest method testUnSubscribe.
@Test
public void testUnSubscribe() {
NamingService namingService = mock(NacosNamingService.class);
try {
String serviceName = "providers:org.apache.dubbo.registry.nacos.NacosService:1.0.0:default";
String category = this.serviceUrl.getParameter(CATEGORY_KEY, DEFAULT_CATEGORY);
URL newUrl = this.serviceUrl.addParameter(CATEGORY_KEY, category);
newUrl = newUrl.addParameter(PROTOCOL_KEY, this.serviceUrl.getProtocol());
newUrl = newUrl.addParameter(PATH_KEY, this.serviceUrl.getPath());
newUrl = newUrl.addParameters(NacosNamingServiceUtils.getNacosPreservedParam(this.serviceUrl));
String ip = newUrl.getHost();
int port = newUrl.getPort();
Instance instance = new Instance();
instance.setIp(ip);
instance.setPort(port);
instance.setMetadata(new HashMap<>(newUrl.getParameters()));
List<Instance> instances = new ArrayList<>();
instances.add(instance);
when(namingService.getAllInstances(serviceName, this.registryUrl.getParameter(GROUP_KEY, Constants.DEFAULT_GROUP))).thenReturn(instances);
} catch (NacosException e) {
// ignore
}
NacosNamingServiceWrapper nacosNamingServiceWrapper = new NacosNamingServiceWrapper(namingService);
nacosRegistry = new NacosRegistry(this.registryUrl, nacosNamingServiceWrapper);
NotifyListener listener = mock(NotifyListener.class);
nacosRegistry.subscribe(serviceUrl, listener);
Map<URL, Set<NotifyListener>> subscribed = nacosRegistry.getSubscribed();
assertThat(subscribed.size(), is(1));
assertThat(subscribed.get(serviceUrl).size(), is(1));
nacosRegistry.unsubscribe(serviceUrl, listener);
subscribed = nacosRegistry.getSubscribed();
assertThat(subscribed.size(), is(1));
assertThat(subscribed.get(serviceUrl).size(), is(0));
}
use of com.alibaba.nacos.api.naming.pojo.Instance in project dubbo by alibaba.
the class NacosRegistry method doRegister.
@Override
public void doRegister(URL url) {
final String serviceName = getServiceName(url);
final Instance instance = createInstance(url);
/**
* namingService.registerInstance with {@link org.apache.dubbo.registry.support.AbstractRegistry#registryUrl}
* default {@link DEFAULT_GROUP}
*
* in https://github.com/apache/dubbo/issues/5978
*/
execute(namingService -> namingService.registerInstance(serviceName, getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP), instance));
}
use of com.alibaba.nacos.api.naming.pojo.Instance in project dubbo by alibaba.
the class NacosRegistry method createInstance.
private Instance createInstance(URL url) {
// Append default category if absent
String category = url.getParameter(CATEGORY_KEY, DEFAULT_CATEGORY);
URL newURL = url.addParameter(CATEGORY_KEY, category);
newURL = newURL.addParameter(PROTOCOL_KEY, url.getProtocol());
newURL = newURL.addParameter(PATH_KEY, url.getPath());
newURL = newURL.addParameters(NacosNamingServiceUtils.getNacosPreservedParam(getUrl()));
String ip = url.getHost();
int port = url.getPort();
Instance instance = new Instance();
instance.setIp(ip);
instance.setPort(port);
instance.setMetadata(new HashMap<>(newURL.getParameters()));
return instance;
}
Aggregations