use of net.dempsy.router.group.intern.GroupDetails in project Dempsy by Dempsy.
the class TestGroupRoutingStrategy method testInboundDoubleHappyPathRegister.
@Test
public void testInboundDoubleHappyPathRegister() throws Exception {
final int numShardsToExpect = Integer.parseInt(Utils.DEFAULT_TOTAL_SHARDS);
final String groupName = "testInboundDoubleHappyPathRegister";
try (final RoutingStrategy.Inbound ib1 = new RoutingInboundManager().getAssociatedInstance(ClusterGroupInbound.class.getPackage().getName() + ":" + groupName);
final RoutingStrategy.Inbound ib2 = new RoutingInboundManager().getAssociatedInstance(ClusterGroupInbound.class.getPackage().getName() + ":" + groupName)) {
final ClusterId clusterId = new ClusterId("test", "test");
final NodeAddress node1Addr = new DummyNodeAddress("node1");
final GroupDetails gd1 = new GroupDetails(groupName, node1Addr);
final ContainerAddress node1Ca = new ContainerAddress(node1Addr, 0);
final Utils<GroupDetails> utils = new Utils<>(infra, groupName, gd1);
ib1.setContainerDetails(clusterId, node1Ca, (l, m) -> {
});
ib1.start(infra);
final NodeAddress node2Addr = new DummyNodeAddress("node2");
final ContainerAddress node2Ca = new ContainerAddress(node2Addr, 0);
ib2.setContainerDetails(clusterId, node2Ca, (l, m) -> {
});
try (final ClusterInfoSession session2 = sessFact.createSession()) {
ib2.start(new TestInfrastructure(session2, infra.getScheduler()));
assertTrue(waitForShards(session, utils, numShardsToExpect));
// if this worked right then numShardsToExpect/2 should be owned by each ... eventually.
checkForShardDistribution(session, utils, numShardsToExpect, 2);
// disrupt the session. This should cause a reshuffle but not fail
disruptor.accept(session2);
// everything should settle back
checkForShardDistribution(session, utils, numShardsToExpect, 2);
// now kill the second session.
// this will disconnect the second Inbound and so the first should take over
session2.close();
// see if we now have 1 session and it has all shards
checkForShardDistribution(session, utils, numShardsToExpect, 1);
}
}
}
use of net.dempsy.router.group.intern.GroupDetails in project Dempsy by Dempsy.
the class TestGroupRoutingStrategy method testInboundResillience.
@Test
public void testInboundResillience() throws Exception {
final int numShardsToExpect = Integer.parseInt(Utils.DEFAULT_TOTAL_SHARDS);
final String groupName = "testInboundResillience";
final Manager<RoutingStrategy.Inbound> manager = new RoutingInboundManager();
try (final RoutingStrategy.Inbound ib = manager.getAssociatedInstance(ClusterGroupInbound.class.getPackage().getName() + ":" + groupName)) {
final ClusterId clusterId = super.setTestName("testInboundResillience");
final NodeAddress na = new DummyNodeAddress("theOnlyNode");
final ContainerAddress ca = new ContainerAddress(na, 0);
final GroupDetails gd = new GroupDetails(groupName, na);
final Infrastructure infra = makeInfra(session, sched);
final Utils<GroupDetails> msutils = new Utils<>(infra, groupName, gd);
ib.setContainerDetails(clusterId, ca, (l, m) -> {
});
ib.start(infra);
checkForShardDistribution(session, msutils, numShardsToExpect, 1);
disruptor.accept(session);
checkForShardDistribution(session, msutils, numShardsToExpect, 1);
}
}
Aggregations