示例#1
0
 @Test
 public void testLocalTopologyWithFailedActorAndAllForOneFailoverPolicy() throws Exception {
   ServerTopology topology = null;
   try {
     topology = new ServerTopology(HOST, PORT, FailoverPolicies.newAllForOnePolicy());
     CountDownLatch restartLatch1 = new CountDownLatch(1);
     CountDownLatch restartLatch2 = new CountDownLatch(1);
     Address actorAddress1 =
         topology.spawnActor(ACTOR_ADDRESS_1, new TestRestartedHandlerOnFail(restartLatch1));
     assertNotNull(actorAddress1);
     Address actorAddress2 =
         topology.spawnActor(ACTOR_ADDRESS_2, new TestRestartedHandler(restartLatch2));
     assertNotNull(actorAddress2);
     Actor actor1 = topology.getActor(actorAddress1);
     actor1.send(EXPECTED_MESSAGE);
     boolean restarted = restartLatch1.await(3, TimeUnit.SECONDS);
     assertTrue(restarted);
     Actor restartedActor = topology.getActor(actorAddress1);
     assertSame(actor1, restartedActor);
     restarted = restartLatch2.await(3, TimeUnit.SECONDS);
     assertTrue(restarted);
   } finally {
     topology.shutdown();
   }
 }
示例#2
0
 @Test
 public void testSpawnActorAndSendMessageWithOSThreads() throws Exception {
   ServerTopology topology = null;
   try {
     topology = new ServerTopology(HOST, PORT, ThreadingPolicies.newOSThreadingPolicy(10));
     CountDownLatch messageReceiveLatch = new CountDownLatch(1);
     Address actorAddress =
         topology.spawnActor(ACTOR_ADDRESS_1, new TestHandler(messageReceiveLatch));
     assertNotNull(actorAddress);
     Actor actor = topology.getActor(actorAddress);
     actor.send(EXPECTED_MESSAGE);
     boolean success = messageReceiveLatch.await(3, TimeUnit.SECONDS);
     assertTrue(success);
   } finally {
     topology.shutdown();
   }
 }
示例#3
0
 @Test
 public void testLocalTopologyWithDefaultFailoverPolicyAKANoFailoverPolicy() throws Exception {
   ServerTopology topology = null;
   try {
     topology = new ServerTopology(HOST, PORT);
     CountDownLatch killLatch = new CountDownLatch(1);
     Address actorAddress = topology.spawnActor(ACTOR_ADDRESS_1, new TestKilledHandler(killLatch));
     assertNotNull(actorAddress);
     Actor actor = topology.getActor(actorAddress);
     actor.send(EXPECTED_MESSAGE);
     boolean killed = killLatch.await(3, TimeUnit.SECONDS);
     assertTrue(killed);
     Actor killedActor = topology.getActor(actorAddress);
     assertNull(killedActor);
   } finally {
     topology.shutdown();
   }
 }
示例#4
0
 @Test
 public void testSpawnActorAndSendMessageWithFutureAndResult() throws Exception {
   ServerTopology topology = null;
   try {
     topology = new ServerTopology(HOST, PORT);
     Address actorAddress =
         topology.spawnActor(ACTOR_ADDRESS_1, new TestHandlerWithFutureAndResult());
     assertNotNull(actorAddress);
     Actor actor = topology.getActor(actorAddress);
     FutureResult future = actor.send(EXPECTED_MESSAGE, 10, TimeUnit.SECONDS);
     future.await();
     assertTrue(future.isCompleted());
     assertFalse(future.isExpired());
     assertEquals(EXPECTED_MESSAGE, future.getResult());
     assertNull(future.getException());
   } finally {
     topology.shutdown();
   }
 }
示例#5
0
 @Test
 public void testLocalTopologyWithLinkedActorsAndExitTraps() throws Exception {
   ServerTopology topology = null;
   try {
     topology = new ServerTopology(HOST, PORT);
     CountDownLatch killLatch = new CountDownLatch(1);
     CountDownLatch trapLatch = new CountDownLatch(1);
     Address actorAddress1 =
         topology.spawnActor(ACTOR_ADDRESS_1, new TestKilledHandler(killLatch));
     assertNotNull(actorAddress1);
     Address actorAddress2 =
         topology.spawnActor(ACTOR_ADDRESS_2, new TestHandlerTrappingExit(trapLatch));
     assertNotNull(actorAddress2);
     Actor actor1 = topology.getActor(actorAddress1);
     Actor actor2 = topology.getActor(actorAddress2);
     actor1.link(actor2);
     actor1.send(EXPECTED_MESSAGE);
     boolean killed = killLatch.await(3, TimeUnit.SECONDS);
     assertTrue(killed);
     assertFalse(actor1.isActive());
     boolean trapped = trapLatch.await(3, TimeUnit.SECONDS);
     assertTrue(trapped);
     assertTrue(actor2.isActive());
   } finally {
     topology.shutdown();
   }
 }
示例#6
0
 @Test
 public void testHotSwap() throws Exception {
   ServerTopology topology = null;
   try {
     topology = new ServerTopology(HOST, PORT);
     CountDownLatch firstLatch = new CountDownLatch(1);
     CountDownLatch swappedLatch = new CountDownLatch(1);
     Address actorAddress = topology.spawnActor(ACTOR_ADDRESS_1, new TestHandler(firstLatch));
     Actor actor = topology.getActor(actorAddress);
     actor.send(EXPECTED_MESSAGE);
     boolean received = firstLatch.await(3, TimeUnit.SECONDS);
     assertTrue(received);
     actor.swap(new TestSwappedHandler(swappedLatch));
     actor.send(EXPECTED_MESSAGE);
     received = swappedLatch.await(3, TimeUnit.SECONDS);
     assertFalse(received);
     actor.send(SWAPPED_MESSAGE);
     received = swappedLatch.await(3, TimeUnit.SECONDS);
     assertTrue(received);
   } finally {
     topology.shutdown();
   }
 }