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;
}
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));
}
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());
}
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());
}
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;
}
Aggregations