Search in sources :

Example 21 with Tree

use of io.datatree.Tree in project moleculer-java by moleculer-java.

the class CircuitBreakerTest method createResponse.

public String createResponse(boolean success) throws Exception {
    Tree msg = tr.getMessages().get(0);
    String id = msg.get("id", "");
    String channel = msg.get("channel", "");
    int i = channel.lastIndexOf('.');
    String nodeID = channel.substring(i + 1);
    Tree rsp = new Tree();
    rsp.put("ver", "3");
    rsp.put("sender", nodeID);
    rsp.put("id", id);
    rsp.put("success", success);
    rsp.put("data", (String) null);
    tr.clearMessages();
    tr.received("MOL.RES.local", rsp);
    return nodeID;
}
Also used : Tree(io.datatree.Tree)

Example 22 with Tree

use of io.datatree.Tree in project moleculer-java by moleculer-java.

the class CircuitBreakerTest method testRoundRobin2.

@Test
public void testRoundRobin2() throws Exception {
    // Node0 -> fail
    currentID = 1;
    for (int i = 0; i < 30; i++) {
        Promise p = br.call("test.test", (Tree) null);
        String nodeID = getCurrentID();
        boolean success = !"node0".equals(nodeID);
        createResponse(success);
        boolean ok = false;
        try {
            p.waitFor();
            ok = true;
        } catch (Exception e) {
            ok = false;
        }
        assertEquals(success, ok);
    }
    // Check ErrorCounter
    long now = System.currentTimeMillis();
    ErrorCounter ec = cb.errorCounters.get(new EndpointKey("node0", "test.test"));
    assertFalse(ec.isAvailable(now));
    // Do not invoke node0
    for (int i = 0; i < 20; i++) {
        Promise p = br.call("test.test", (Tree) null);
        String nodeID = createResponse(true);
        assertFalse("node0".equals(nodeID));
        boolean ok = false;
        try {
            p.waitFor();
            ok = true;
        } catch (Exception e) {
            ok = false;
        }
        assertTrue(ok);
    }
    // Invoke node1 directly
    Promise p = br.call("test.test", (Tree) null, CallOptions.nodeID("node1"));
    createResponse(true);
    boolean ok = false;
    try {
        p.waitFor();
        ok = true;
    } catch (Exception e) {
        ok = false;
    }
    assertTrue(ok);
    assertFalse(ec.isAvailable(now));
    // Invoke node0 directly
    p = br.call("test.test", (Tree) null, CallOptions.nodeID("node0"));
    createResponse(true);
    try {
        p.waitFor();
        ok = true;
    } catch (Exception e) {
        ok = false;
    }
    assertTrue(ok);
    assertTrue(ec.isAvailable(now));
}
Also used : Promise(services.moleculer.Promise) Tree(io.datatree.Tree) TimeoutException(java.util.concurrent.TimeoutException) ExecutionException(java.util.concurrent.ExecutionException) Test(org.junit.Test)

Example 23 with Tree

use of io.datatree.Tree in project moleculer-java by moleculer-java.

the class EventbusTest method testEmit.

@Test
public void testEmit() throws Exception {
    // Create two listeners
    br.createService("test1", new TestListener());
    TestListener s1 = (TestListener) br.getLocalService("test1");
    TestListener s2 = new TestListener();
    br.createService("test2", s2);
    br.emit("test.a", new Tree());
    assertEquals(1, s1.payloads.size());
    assertEquals(1, s2.payloads.size());
    s1.payloads.clear();
    s2.payloads.clear();
    br.emit("test.a", new Tree(), Groups.of("test1"));
    assertEquals(1, s1.payloads.size());
    assertEquals(0, s2.payloads.size());
    s1.payloads.clear();
    br.emit("test.a", new Tree(), Groups.of("test2"));
    assertEquals(0, s1.payloads.size());
    assertEquals(1, s2.payloads.size());
    s2.payloads.clear();
    br.emit("test.a.x", new Tree(), Groups.of("test1"));
    assertEquals(0, s1.payloads.size());
    assertEquals(0, s2.payloads.size());
    br.emit("test.a", new Tree(), Groups.of("test1", "test2"));
    assertEquals(1, s1.payloads.size());
    assertEquals(1, s2.payloads.size());
}
Also used : FastBuildTree(services.moleculer.util.FastBuildTree) Tree(io.datatree.Tree) Test(org.junit.Test)

Example 24 with Tree

use of io.datatree.Tree in project moleculer-java by moleculer-java.

the class EventbusTest method testBroadcast.

@Test
public void testBroadcast() throws Exception {
    // Create two listeners
    br.createService("test1", new TestListener());
    TestListener s1 = (TestListener) br.getLocalService("test1");
    TestListener s2 = new TestListener();
    br.createService("test2", s2);
    br.broadcast("test.a", new Tree());
    assertEquals(1, s1.payloads.size());
    assertEquals(1, s2.payloads.size());
    s1.payloads.clear();
    s2.payloads.clear();
    br.broadcastLocal("test.a", new Tree());
    assertEquals(1, s1.payloads.size());
    assertEquals(1, s2.payloads.size());
    s1.payloads.clear();
    s2.payloads.clear();
    br.broadcast("test.a.x", new Tree());
    assertEquals(0, s1.payloads.size());
    assertEquals(0, s2.payloads.size());
    br.broadcastLocal("test.a.x", new Tree());
    assertEquals(0, s1.payloads.size());
    assertEquals(0, s2.payloads.size());
    br.broadcast("foo.a", new Tree());
    assertEquals(0, s1.payloads.size());
    assertEquals(0, s2.payloads.size());
    br.broadcastLocal("foo.a", new Tree());
    assertEquals(0, s1.payloads.size());
    assertEquals(0, s2.payloads.size());
    br.broadcast("test.a", new Tree(), Groups.of("test1"));
    assertEquals(1, s1.payloads.size());
    assertEquals(0, s2.payloads.size());
    s1.payloads.clear();
    br.broadcast("test.a", new Tree(), Groups.of("test2"));
    assertEquals(0, s1.payloads.size());
    assertEquals(1, s2.payloads.size());
    s2.payloads.clear();
    br.broadcast("test.a", new Tree(), Groups.of("test1", "test2"));
    assertEquals(1, s1.payloads.size());
    assertEquals(1, s2.payloads.size());
    s1.payloads.clear();
    s2.payloads.clear();
    br.broadcastLocal("test.a", new Tree(), Groups.of("test1"));
    assertEquals(1, s1.payloads.size());
    assertEquals(0, s2.payloads.size());
    s1.payloads.clear();
    br.broadcastLocal("test.a", new Tree(), Groups.of("test2"));
    assertEquals(0, s1.payloads.size());
    assertEquals(1, s2.payloads.size());
    s2.payloads.clear();
    br.broadcastLocal("test.a", new Tree(), Groups.of("test1", "test2"));
    assertEquals(1, s1.payloads.size());
    assertEquals(1, s2.payloads.size());
}
Also used : FastBuildTree(services.moleculer.util.FastBuildTree) Tree(io.datatree.Tree) Test(org.junit.Test)

Example 25 with Tree

use of io.datatree.Tree in project moleculer-java by moleculer-java.

the class TcpTransporterTest method createGossipOnlineResponse.

protected Tree createGossipOnlineResponse(String nodeID, Tree info, int cpuSeq, int cpu) {
    Tree rsp = new Tree();
    rsp.put("sender", nodeID);
    rsp.put("ver", ServiceBroker.PROTOCOL_VERSION);
    Tree online = rsp.putList("online");
    Tree list = online.putList(nodeID);
    list.addObject(info);
    list.add(cpuSeq).add(cpu);
    return rsp;
}
Also used : Tree(io.datatree.Tree)

Aggregations

Tree (io.datatree.Tree)60 FastBuildTree (services.moleculer.util.FastBuildTree)26 Test (org.junit.Test)12 NodeDescriptor (services.moleculer.transporter.tcp.NodeDescriptor)12 CheckedTree (services.moleculer.util.CheckedTree)9 TimeoutException (java.util.concurrent.TimeoutException)6 Promise (services.moleculer.Promise)6 CommonUtils.readTree (services.moleculer.util.CommonUtils.readTree)6 RemoteException (java.rmi.RemoteException)4 LinkedHashMap (java.util.LinkedHashMap)4 CallOptions (services.moleculer.context.CallOptions)4 Context (services.moleculer.context.Context)4 Annotation (java.lang.annotation.Annotation)3 HashSet (java.util.HashSet)3 LinkedHashSet (java.util.LinkedHashSet)3 Map (java.util.Map)3 NoSuchElementException (java.util.NoSuchElementException)3 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)3 ServiceBrokerConfig (services.moleculer.config.ServiceBrokerConfig)3 Action (services.moleculer.service.Action)3