Search in sources :

Example 1 with DiscoveryTreeNode

use of org.apache.servicecomb.serviceregistry.discovery.DiscoveryTreeNode in project incubator-servicecomb-java-chassis by apache.

the class TestOperationInstancesDiscoveryFilter method discovery_v1_0_0.

@Test
public void discovery_v1_0_0() {
    regMicroservice("1", "1.0.0", V1_0_0.class, 2);
    MicroserviceVersions MicroserviceVersions = serviceRegistry.getAppManager().getOrCreateMicroserviceVersions(appId, microserviceName);
    MicroserviceVersions.submitPull();
    MicroserviceVersionRule microserviceVersionRule = MicroserviceVersions.getOrCreateMicroserviceVersionRule(DefinitionConst.VERSION_RULE_ALL);
    MicroserviceVersionMeta latestMicroserviceVersionMeta = microserviceVersionRule.getLatestMicroserviceVersion();
    latestOperationMeta = latestMicroserviceVersionMeta.getMicroserviceMeta().ensureFindOperation("sid.add");
    DiscoveryTreeNode parent = new DiscoveryTreeNode().fromCache(microserviceVersionRule.getVersionedCache());
    setupOnChange();
    result = filter.discovery(context, parent);
    Assert.assertEquals(2, result.mapData().size());
    result.mapData().values().forEach(instance -> {
        Assert.assertEquals("1", ((MicroserviceInstance) instance).getServiceId());
    });
}
Also used : MicroserviceVersionRule(org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersionRule) MicroserviceVersionMeta(org.apache.servicecomb.core.definition.MicroserviceVersionMeta) DiscoveryTreeNode(org.apache.servicecomb.serviceregistry.discovery.DiscoveryTreeNode) MicroserviceVersions(org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions) Test(org.junit.Test)

Example 2 with DiscoveryTreeNode

use of org.apache.servicecomb.serviceregistry.discovery.DiscoveryTreeNode in project incubator-servicecomb-java-chassis by apache.

the class TestOperationInstancesDiscoveryFilter method discovery_v1_1_0_dec.

@Test
public void discovery_v1_1_0_dec() {
    regMicroservice("1", "1.0.0", V1_0_0.class, 2);
    regMicroservice("2", "1.1.0", V1_1_0.class, 2);
    MicroserviceVersions MicroserviceVersions = serviceRegistry.getAppManager().getOrCreateMicroserviceVersions(appId, microserviceName);
    MicroserviceVersions.submitPull();
    MicroserviceVersionRule microserviceVersionRule = MicroserviceVersions.getOrCreateMicroserviceVersionRule(DefinitionConst.VERSION_RULE_ALL);
    MicroserviceVersionMeta latestMicroserviceVersionMeta = microserviceVersionRule.getLatestMicroserviceVersion();
    latestOperationMeta = latestMicroserviceVersionMeta.getMicroserviceMeta().ensureFindOperation("sid.dec");
    DiscoveryTreeNode parent = new DiscoveryTreeNode().fromCache(microserviceVersionRule.getVersionedCache());
    setupOnChange();
    result = filter.discovery(context, parent);
    Assert.assertEquals(2, result.mapData().size());
    Set<String> ids = new HashSet<>();
    result.mapData().values().forEach(instance -> {
        ids.add(((MicroserviceInstance) instance).getServiceId());
    });
    Assert.assertThat(ids, Matchers.containsInAnyOrder("2"));
}
Also used : MicroserviceVersionRule(org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersionRule) MicroserviceVersionMeta(org.apache.servicecomb.core.definition.MicroserviceVersionMeta) DiscoveryTreeNode(org.apache.servicecomb.serviceregistry.discovery.DiscoveryTreeNode) MicroserviceVersions(org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 3 with DiscoveryTreeNode

use of org.apache.servicecomb.serviceregistry.discovery.DiscoveryTreeNode in project incubator-servicecomb-java-chassis by apache.

the class OperationInstancesDiscoveryFilter method initOperationNodes.

protected Map<String, DiscoveryTreeNode> initOperationNodes(DiscoveryTreeNode parent, Map<MicroserviceVersionMeta, Map<String, MicroserviceInstance>> versionMap) {
    Map<String, DiscoveryTreeNode> tmpChildren = new ConcurrentHashMapEx<>();
    versionMap.keySet().stream().sorted(Comparator.comparing(MicroserviceVersion::getVersion)).forEach(meta -> {
        for (OperationMeta operationMeta : meta.getMicroserviceMeta().getOperations()) {
            tmpChildren.computeIfAbsent(operationMeta.getMicroserviceQualifiedName(), qualifiedName -> {
                VersionRule versionRule = VersionRuleUtils.getOrCreate(meta.getVersion().getVersion() + "+");
                return new DiscoveryTreeNode().attribute(VERSION_RULE, versionRule).subName(parent, versionRule.getVersionRule()).data(new HashMap<>());
            });
        }
    });
    return tmpChildren;
}
Also used : MicroserviceVersion(org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersion) DiscoveryTreeNode(org.apache.servicecomb.serviceregistry.discovery.DiscoveryTreeNode) OperationMeta(org.apache.servicecomb.core.definition.OperationMeta) ConcurrentHashMapEx(org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx) VersionRule(org.apache.servicecomb.serviceregistry.version.VersionRule)

Example 4 with DiscoveryTreeNode

use of org.apache.servicecomb.serviceregistry.discovery.DiscoveryTreeNode in project incubator-servicecomb-java-chassis by apache.

the class TestOperationInstancesDiscoveryFilter method discovery_v1_1_0_add.

@Test
public void discovery_v1_1_0_add() {
    regMicroservice("1", "1.0.0", V1_0_0.class, 2);
    regMicroservice("2", "1.1.0", V1_1_0.class, 2);
    MicroserviceVersions MicroserviceVersions = serviceRegistry.getAppManager().getOrCreateMicroserviceVersions(appId, microserviceName);
    MicroserviceVersions.submitPull();
    MicroserviceVersionRule microserviceVersionRule = MicroserviceVersions.getOrCreateMicroserviceVersionRule(DefinitionConst.VERSION_RULE_ALL);
    MicroserviceVersionMeta latestMicroserviceVersionMeta = microserviceVersionRule.getLatestMicroserviceVersion();
    latestOperationMeta = latestMicroserviceVersionMeta.getMicroserviceMeta().ensureFindOperation("sid.add");
    DiscoveryTreeNode parent = new DiscoveryTreeNode().fromCache(microserviceVersionRule.getVersionedCache());
    setupOnChange();
    result = filter.discovery(context, parent);
    Assert.assertEquals(4, result.mapData().size());
    Set<String> ids = new HashSet<>();
    result.mapData().values().forEach(instance -> {
        ids.add(((MicroserviceInstance) instance).getServiceId());
    });
    Assert.assertThat(ids, Matchers.containsInAnyOrder("1", "2"));
}
Also used : MicroserviceVersionRule(org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersionRule) MicroserviceVersionMeta(org.apache.servicecomb.core.definition.MicroserviceVersionMeta) DiscoveryTreeNode(org.apache.servicecomb.serviceregistry.discovery.DiscoveryTreeNode) MicroserviceVersions(org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions) HashSet(java.util.HashSet) Test(org.junit.Test)

Aggregations

DiscoveryTreeNode (org.apache.servicecomb.serviceregistry.discovery.DiscoveryTreeNode)4 MicroserviceVersionMeta (org.apache.servicecomb.core.definition.MicroserviceVersionMeta)3 MicroserviceVersionRule (org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersionRule)3 MicroserviceVersions (org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions)3 Test (org.junit.Test)3 HashSet (java.util.HashSet)2 OperationMeta (org.apache.servicecomb.core.definition.OperationMeta)1 ConcurrentHashMapEx (org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx)1 MicroserviceVersion (org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersion)1 VersionRule (org.apache.servicecomb.serviceregistry.version.VersionRule)1