use of org.apache.servicecomb.registry.api.registry.FindInstancesResponse in project java-chassis by ServiceComb.
the class LocalRegistryStore method findServiceInstances.
// local registry do not care about version and revision
public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule, String revision) {
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
FindInstancesResponse findInstancesResponse = new FindInstancesResponse();
List<MicroserviceInstance> instances = new ArrayList<>();
Collectors.toList();
microserviceInstanceMap.values().forEach(allInstances -> allInstances.values().stream().filter(aInstance -> {
Microservice service = microserviceMap.get(aInstance.getServiceId());
return service.getAppId().equals(appId) && service.getServiceName().equals(serviceName);
}).forEach(item -> instances.add(item)));
if (instances.isEmpty()) {
microserviceInstances.setMicroserviceNotExist(true);
} else {
findInstancesResponse.setInstances(instances);
microserviceInstances.setMicroserviceNotExist(false);
microserviceInstances.setInstancesResponse(findInstancesResponse);
}
return microserviceInstances;
}
use of org.apache.servicecomb.registry.api.registry.FindInstancesResponse in project java-chassis by ServiceComb.
the class MicroserviceStore method findServiceInstances.
public MicroserviceInstances findServiceInstances(String revision) {
if (instancesRevision.equals(revision)) {
return new MicroserviceInstances().setRevision(instancesRevision).setNeedRefresh(false);
}
List<MicroserviceInstance> instances = instancesById.values().stream().map(InstanceStore::getInstance).collect(Collectors.toList());
FindInstancesResponse response = new FindInstancesResponse().setInstances(instances);
return new MicroserviceInstances().setRevision(instancesRevision).setInstancesResponse(response);
}
use of org.apache.servicecomb.registry.api.registry.FindInstancesResponse in project java-chassis by ServiceComb.
the class TestInstanceCacheCheckerMock method createFindServiceInstancesResult.
private Holder<MicroserviceInstances> createFindServiceInstancesResult() {
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
microserviceInstances.setNeedRefresh(true);
microserviceInstances.setRevision("first");
FindInstancesResponse findInstancesResponse = new FindInstancesResponse();
findInstancesResponse.setInstances(new ArrayList<>());
microserviceInstances.setInstancesResponse(findInstancesResponse);
Holder<MicroserviceInstances> findHolder = new Holder<>();
findHolder.value = microserviceInstances;
return findHolder;
}
use of org.apache.servicecomb.registry.api.registry.FindInstancesResponse in project java-chassis by ServiceComb.
the class RefreshableMicroserviceCacheTest method refresh.
@Test
public void refresh() {
ArrayList<MicroserviceInstance> instances = new ArrayList<>();
findServiceInstancesOprHolder.value = params -> {
Assert.assertEquals("consumerId", params[0]);
Assert.assertEquals("app", params[1]);
Assert.assertEquals("svc", params[2]);
Assert.assertEquals("0.0.0.0+", params[3]);
Assert.assertNull(params[4]);
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
microserviceInstances.setNeedRefresh(true);
microserviceInstances.setRevision("rev0");
microserviceInstances.setMicroserviceNotExist(false);
FindInstancesResponse instancesResponse = new FindInstancesResponse();
instancesResponse.setInstances(instances);
microserviceInstances.setInstancesResponse(instancesResponse);
return microserviceInstances;
};
// at the beginning, no instances in cache
List<MicroserviceInstance> cachedInstances = microserviceCache.getInstances();
Assert.assertEquals(0, cachedInstances.size());
Assert.assertNull(microserviceCache.getRevisionId());
// find 1 instance from sc
MicroserviceInstance microserviceInstance = new MicroserviceInstance();
instances.add(microserviceInstance);
microserviceInstance.setInstanceId("instanceId00");
microserviceCache.refresh();
Assert.assertEquals(MicroserviceCacheStatus.REFRESHED, microserviceCache.getStatus());
cachedInstances = microserviceCache.getInstances();
Assert.assertEquals(1, cachedInstances.size());
MicroserviceInstance instance = cachedInstances.iterator().next();
Assert.assertEquals("instanceId00", instance.getInstanceId());
Assert.assertEquals("rev0", microserviceCache.getRevisionId());
// 2nd time, find 2 instances, one of them is the old instance
MicroserviceInstance microserviceInstance1 = new MicroserviceInstance();
instances.add(microserviceInstance1);
microserviceInstance1.setInstanceId("instanceId01");
findServiceInstancesOprHolder.value = params -> {
Assert.assertEquals("consumerId", params[0]);
Assert.assertEquals("app", params[1]);
Assert.assertEquals("svc", params[2]);
Assert.assertEquals("0.0.0.0+", params[3]);
Assert.assertEquals("rev0", params[4]);
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
microserviceInstances.setNeedRefresh(true);
microserviceInstances.setRevision("rev1");
microserviceInstances.setMicroserviceNotExist(false);
FindInstancesResponse instancesResponse = new FindInstancesResponse();
instancesResponse.setInstances(instances);
microserviceInstances.setInstancesResponse(instancesResponse);
return microserviceInstances;
};
microserviceCache.refresh();
Assert.assertEquals(MicroserviceCacheStatus.REFRESHED, microserviceCache.getStatus());
cachedInstances = microserviceCache.getInstances();
Assert.assertEquals(2, cachedInstances.size());
Assert.assertEquals("instanceId00", cachedInstances.get(0).getInstanceId());
Assert.assertEquals("instanceId01", cachedInstances.get(1).getInstanceId());
}
use of org.apache.servicecomb.registry.api.registry.FindInstancesResponse in project java-chassis by ServiceComb.
the class RefreshableMicroserviceCacheTest method setUp.
@Before
public void setUp() throws Exception {
srClient = new MockUp<ServiceRegistryClient>() {
@Mock
MicroserviceInstances findServiceInstances(String consumerId, String appId, String serviceName, String versionRule, String revision) {
return findServiceInstancesOprHolder.value.apply(new Object[] { consumerId, appId, serviceName, versionRule, revision });
}
}.getMockInstance();
consumerService = new Microservice();
consumerService.setServiceId("consumerId");
microserviceCache = new RefreshableMicroserviceCache(consumerService, MicroserviceCacheKey.builder().env("env").appId("app").serviceName("svc").build(), srClient, false);
findServiceInstancesOprHolder.value = params -> {
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
microserviceInstances.setNeedRefresh(true);
microserviceInstances.setRevision("rev0");
microserviceInstances.setMicroserviceNotExist(false);
FindInstancesResponse instancesResponse = new FindInstancesResponse();
instancesResponse.setInstances(pulledInstances);
microserviceInstances.setInstancesResponse(instancesResponse);
return microserviceInstances;
};
}
Aggregations