use of org.apache.servicecomb.registry.api.registry.FindInstancesResponse in project java-chassis by ServiceComb.
the class RegistryUtils method convertCacheToMicroserviceInstances.
/**
* for compatibility
*/
public static MicroserviceInstances convertCacheToMicroserviceInstances(MicroserviceCache microserviceCache) {
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
switch(microserviceCache.getStatus()) {
case SERVICE_NOT_FOUND:
microserviceInstances.setMicroserviceNotExist(true);
microserviceInstances.setNeedRefresh(false);
microserviceInstances.setRevision("");
microserviceInstances.setInstancesResponse(null);
return microserviceInstances;
case NO_CHANGE:
microserviceInstances.setMicroserviceNotExist(false);
microserviceInstances.setNeedRefresh(false);
microserviceInstances.setRevision(microserviceCache.getRevisionId());
return microserviceInstances;
case REFRESHED:
microserviceInstances.setMicroserviceNotExist(false);
microserviceInstances.setNeedRefresh(true);
microserviceInstances.setRevision(microserviceCache.getRevisionId());
FindInstancesResponse findInstancesResponse = new FindInstancesResponse();
findInstancesResponse.setInstances(new ArrayList<>(microserviceCache.getInstances()));
microserviceInstances.setInstancesResponse(findInstancesResponse);
return microserviceInstances;
default:
return null;
}
}
use of org.apache.servicecomb.registry.api.registry.FindInstancesResponse in project incubator-servicecomb-java-chassis by apache.
the class RefreshableMicroserviceCacheTest method forceRefresh.
@Test
public void forceRefresh() {
MicroserviceInstance microserviceInstance = new MicroserviceInstance();
microserviceInstance.setInstanceId("instanceId00");
ArrayList<MicroserviceInstance> instances = new ArrayList<>();
instances.add(microserviceInstance);
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("rev2");
microserviceInstances.setMicroserviceNotExist(false);
FindInstancesResponse instancesResponse = new FindInstancesResponse();
instancesResponse.setInstances(instances);
microserviceInstances.setInstancesResponse(instancesResponse);
return microserviceInstances;
};
microserviceCache.revisionId = "rev";
microserviceCache.forceRefresh();
Assert.assertEquals(MicroserviceCacheStatus.REFRESHED, microserviceCache.getStatus());
List<MicroserviceInstance> cachedInstances = microserviceCache.getInstances();
Assert.assertEquals(1, cachedInstances.size());
MicroserviceInstance instance = cachedInstances.iterator().next();
Assert.assertEquals("instanceId00", instance.getInstanceId());
Assert.assertEquals("rev2", microserviceCache.getRevisionId());
}
use of org.apache.servicecomb.registry.api.registry.FindInstancesResponse in project incubator-servicecomb-java-chassis by apache.
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;
};
}
use of org.apache.servicecomb.registry.api.registry.FindInstancesResponse in project incubator-servicecomb-java-chassis by apache.
the class LocalServiceRegistryClientImpl method findServiceInstances.
@Override
public MicroserviceInstances findServiceInstances(String selfMicroserviceId, String appId, String serviceName, String strVersionRule, String revision) {
int currentRevision = this.revision.get();
List<MicroserviceInstance> allInstances = new ArrayList<>();
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
FindInstancesResponse response = new FindInstancesResponse();
if (revision != null && currentRevision == Integer.parseInt(revision)) {
microserviceInstances.setNeedRefresh(false);
return microserviceInstances;
}
microserviceInstances.setRevision(String.valueOf(currentRevision));
VersionRule versionRule = VersionRuleUtils.getOrCreate(strVersionRule);
Microservice latestMicroservice = findLatest(appId, serviceName, versionRule);
if (latestMicroservice == null) {
microserviceInstances.setMicroserviceNotExist(true);
return microserviceInstances;
}
Version latestVersion = VersionUtils.getOrCreate(latestMicroservice.getVersion());
for (Entry<String, Microservice> entry : microserviceIdMap.entrySet()) {
Microservice microservice = entry.getValue();
if (!isSameMicroservice(microservice, appId, serviceName)) {
continue;
}
Version version = VersionUtils.getOrCreate(entry.getValue().getVersion());
if (!versionRule.isMatch(version, latestVersion)) {
continue;
}
Map<String, MicroserviceInstance> instances = microserviceInstanceMap.get(entry.getValue().getServiceId());
allInstances.addAll(instances.values());
}
response.setInstances(allInstances);
microserviceInstances.setInstancesResponse(response);
return microserviceInstances;
}
use of org.apache.servicecomb.registry.api.registry.FindInstancesResponse in project incubator-servicecomb-java-chassis by apache.
the class TestMicroserviceInstances method setUp.
@Before
public void setUp() throws Exception {
microserviceInstances = new MicroserviceInstances();
findInstancesResponse = new FindInstancesResponse();
instances = new ArrayList<>();
instances.add(Mockito.mock(MicroserviceInstance.class));
}
Aggregations