use of org.apache.servicecomb.registry.api.registry.Microservice in project java-chassis by ServiceComb.
the class TestLocalServiceRegistry method testSchema.
@Test
public void testSchema() {
ServiceRegistry serviceRegistry = LocalServiceRegistryFactory.createLocal();
Microservice microservice = serviceRegistry.getMicroservice();
microservice.addSchema("s1", "s1-content");
serviceRegistry.init();
serviceRegistry.run();
try {
serviceRegistry.getServiceRegistryClient().isSchemaExist("notExist", "s1");
Assert.fail("must throw exception");
} catch (IllegalArgumentException e) {
Assert.assertEquals("Invalid serviceId, serviceId=notExist", e.getMessage());
}
try {
serviceRegistry.getServiceRegistryClient().getSchema("notExist", "s1");
Assert.fail("must throw exception");
} catch (IllegalArgumentException e) {
Assert.assertEquals("Invalid serviceId, serviceId=notExist", e.getMessage());
}
Assert.assertEquals(true, serviceRegistry.getServiceRegistryClient().isSchemaExist(microservice.getServiceId(), "s1"));
String content = serviceRegistry.getServiceRegistryClient().getSchema(microservice.getServiceId(), "s1");
Assert.assertEquals("s1-content", content);
}
use of org.apache.servicecomb.registry.api.registry.Microservice in project java-chassis by ServiceComb.
the class TestLocalServiceRegistry method testUpdateProperties.
@Test
public void testUpdateProperties() {
ServiceRegistry serviceRegistry = LocalServiceRegistryFactory.createLocal();
serviceRegistry.init();
serviceRegistry.run();
Microservice microservice = serviceRegistry.getMicroservice();
Map<String, String> properties = new HashMap<>();
properties.put("k", "v");
try {
serviceRegistry.getServiceRegistryClient().updateInstanceProperties(microservice.getServiceId(), "notExist", properties);
Assert.fail("must throw exception");
} catch (IllegalArgumentException e) {
Assert.assertEquals("Invalid argument. microserviceId=" + microservice.getServiceId() + ", microserviceInstanceId=notExist.", e.getMessage());
}
serviceRegistry.updateMicroserviceProperties(properties);
Assert.assertEquals(properties, microservice.getProperties());
serviceRegistry.updateInstanceProperties(properties);
Assert.assertEquals(properties, microservice.getInstance().getProperties());
properties.put("k1", "v1");
serviceRegistry.updateMicroserviceProperties(properties);
Assert.assertEquals(properties, microservice.getProperties());
serviceRegistry.updateInstanceProperties(properties);
Assert.assertEquals(properties, microservice.getInstance().getProperties());
}
use of org.apache.servicecomb.registry.api.registry.Microservice in project java-chassis by ServiceComb.
the class RefreshableServiceRegistryCacheTest method setUp.
@Before
public void setUp() throws Exception {
serviceRegistryCache = new RefreshableServiceRegistryCache(consumerService, null) {
@Override
RefreshableMicroserviceCache createMicroserviceCache(MicroserviceCacheKey microserviceCacheKey) {
return new RefreshableMicroserviceCache(consumerService, microserviceCacheKey, null, false) {
@Override
MicroserviceInstances pullInstanceFromServiceCenter(String revisionId) {
return pullInstanceFromServiceCenterLogic.value.apply(revisionId);
}
};
}
};
consumerService = new Microservice();
consumerService.setServiceId("testConsumer");
}
use of org.apache.servicecomb.registry.api.registry.Microservice in project java-chassis by ServiceComb.
the class LocalServiceRegistryClientImpl method initFromData.
private void initFromData(Map<String, Object> data) {
for (Entry<String, Object> entry : data.entrySet()) {
String name = entry.getKey();
@SuppressWarnings("unchecked") List<Map<String, Object>> serviceConfigs = (List<Map<String, Object>>) entry.getValue();
for (Map<String, Object> serviceConfig : serviceConfigs) {
@SuppressWarnings("unchecked") List<Map<String, Object>> instancesConfig = (List<Map<String, Object>>) serviceConfig.get("instances");
String appId = (String) serviceConfig.get("appid");
String version = (String) serviceConfig.get("version");
String serviceId = (String) serviceConfig.get("id");
@SuppressWarnings("unchecked") List<String> schemas = (List<String>) serviceConfig.get("schemaIds");
Microservice microservice = new Microservice();
microservice.setAppId(appId == null ? BootStrapProperties.DEFAULT_APPLICATION : appId);
microservice.setServiceName(name);
microservice.setVersion(version);
microservice.setServiceId(serviceId == null ? UUID.randomUUID().toString() : serviceId);
microserviceIdMap.put(microservice.getServiceId(), microservice);
if (schemas != null) {
microservice.setSchemas(schemas);
}
Map<String, MicroserviceInstance> instanceMap = new ConcurrentHashMap<>();
for (Map<String, Object> instanceConfig : instancesConfig) {
@SuppressWarnings("unchecked") List<String> endpoints = (List<String>) instanceConfig.get("endpoints");
MicroserviceInstance instance = new MicroserviceInstance();
instance.setInstanceId(UUID.randomUUID().toString());
instance.setEndpoints(endpoints);
instance.setServiceId(microservice.getServiceId());
instanceMap.put(instance.getInstanceId(), instance);
}
microserviceInstanceMap.put(microservice.getServiceId(), instanceMap);
}
}
if (!data.isEmpty()) {
revision.incrementAndGet();
}
}
use of org.apache.servicecomb.registry.api.registry.Microservice in project java-chassis by ServiceComb.
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;
}
Aggregations