use of org.apache.servicecomb.serviceregistry.refresh.ClassificationAddress in project java-chassis by ServiceComb.
the class TestIpPortManager method testGetAvailableAddress.
@Test
public void testGetAvailableAddress(@Injectable ServiceRegistryConfig config, @Injectable InstanceCacheManager cacheManager, @Injectable InstanceCache cache, @Injectable ClassificationAddress classificationAddress) {
ArrayList<IpPort> ipPortList = new ArrayList<>();
ipPortList.add(new IpPort("127.0.0.1", 9980));
ipPortList.add(new IpPort("127.0.0.1", 9981));
new Expectations() {
{
config.getIpPort();
result = ipPortList;
config.getTransport();
result = "rest";
config.isRegistryAutoDiscovery();
result = true;
}
};
IpPortManager manager = new IpPortManager(config);
manager.instanceCacheManager = cacheManager;
IpPort address1 = manager.getAvailableAddress();
// test initial
Assert.assertEquals("127.0.0.1", address1.getHostOrIp());
Assert.assertTrue(address1.getPort() == 9980 || address1.getPort() == 9981);
// test getAvailableAddress()
IpPort address2 = manager.getAvailableAddress();
Assert.assertEquals("127.0.0.1", address2.getHostOrIp());
if (address1.getPort() == 9980) {
Assert.assertEquals(9981, address2.getPort());
} else {
Assert.assertEquals(9980, address2.getPort());
}
// test getAvailableAddress() when reaching the end
IpPort address3 = manager.getAvailableAddress();
Assert.assertEquals("127.0.0.1", address3.getHostOrIp());
Assert.assertEquals(address1.getPort(), address3.getPort());
// mock endpoint list
Map<String, List<CacheEndpoint>> addresses = new HashMap<>();
List<CacheEndpoint> instances = new ArrayList<>();
instances.add(new CacheEndpoint("http://127.0.0.1:9982", null));
addresses.put("rest", instances);
ClassificationAddress classificationAddres = new ClassificationAddress(config, cacheManager);
manager.classificationAddress = classificationAddres;
new Expectations() {
{
cacheManager.getOrCreate("default", "SERVICECENTER", "latest");
result = cache;
cache.getOrCreateTransportMap();
result = addresses;
}
};
// test getAvailableAddress() when auto discovery is disabled
IpPort address4 = manager.getAvailableAddress();
Assert.assertEquals("127.0.0.1", address4.getHostOrIp());
if (address1.getPort() == 9980) {
address4 = manager.getAvailableAddress();
}
Assert.assertEquals(9980, address4.getPort());
IpPort address5 = manager.getAvailableAddress();
Assert.assertEquals("127.0.0.1", address5.getHostOrIp());
Assert.assertEquals(9981, address5.getPort());
// mock RegistrationManager.INSTANCE
String instanceId = "e8a04b54cf2711e7b701286ed488fc20";
MicroserviceInstance microserviceInstance = new MicroserviceInstance();
microserviceInstance.setInstanceId(instanceId);
Map<String, String> properties = new HashMap<>();
microserviceInstance.setProperties(properties);
new Expectations(RegistrationManager.INSTANCE) {
{
RegistrationManager.INSTANCE.getMicroserviceInstance();
result = microserviceInstance;
}
};
// test getAvailable address when auto discovery is enabled
manager.initAutoDiscovery();
manager.setAutoDiscoveryInited(true);
IpPort address6 = manager.getAvailableAddress();
Assert.assertEquals("127.0.0.1", address6.getHostOrIp());
Assert.assertEquals(9982, address6.getPort());
}
Aggregations