Example #1
0
  public void testLimeDHTManager() throws Exception {
    DHTSettings.PERSIST_ACTIVE_DHT_ROUTETABLE.setValue(true);
    DHTSettings.PERSIST_DHT_DATABASE.setValue(true);

    TestExecutor executor = new TestExecutor();
    DHTManagerImpl manager = new DHTManagerImpl(executor, dhtControllerFactory);

    try {
      assertFalse(manager.isRunning());
      assertFalse(manager.isBootstrapped());
      assertFalse(manager.isWaitingForNodes());
      assertEquals(0, manager.getActiveDHTNodes(10).size());

      manager.start(DHTMode.ACTIVE);
      assertEquals(1, executor.getRunners().size());
      Thread.sleep(200);
      assertTrue(manager.isRunning());
      assertEquals(DHTMode.ACTIVE, manager.getDHTMode());
      KUID activeLocalNodeID = manager.getMojitoDHT().getLocalNodeID();

      // Rry starting again
      manager.start(DHTMode.ACTIVE);
      Thread.sleep(200);
      assertEquals(activeLocalNodeID, manager.getMojitoDHT().getLocalNodeID());

      // Try switching mode
      manager.start(DHTMode.PASSIVE);
      Thread.sleep(200);
      assertEquals(DHTMode.PASSIVE, manager.getDHTMode());
      assertTrue(manager.isRunning());
      KUID passiveLocalNodeID = manager.getMojitoDHT().getLocalNodeID();
      assertNotEquals(activeLocalNodeID, passiveLocalNodeID);
      manager.start(DHTMode.PASSIVE);
      Thread.sleep(200);
      assertEquals(passiveLocalNodeID, manager.getMojitoDHT().getLocalNodeID());
      manager.addressChanged();
      Thread.sleep(200);
      assertEquals(passiveLocalNodeID, manager.getMojitoDHT().getLocalNodeID());

      // Try switching multiple times (does some Disk I/O)
      manager.start(DHTMode.ACTIVE);
      manager.start(DHTMode.PASSIVE);
      manager.start(DHTMode.ACTIVE);

      // Give it enough time --> previous starts were offloaded to threadpool
      Thread.sleep(10000);

      // We should be in active mode
      assertEquals(DHTMode.ACTIVE, manager.getDHTMode());

      // The Node ID should be something else than passiveLocalNodeID
      assertNotEquals(passiveLocalNodeID, manager.getMojitoDHT().getLocalNodeID());

      // The Node ID should be (but it's not guaranteed) equals to activeLocalNodeID
      assertEquals(activeLocalNodeID, manager.getMojitoDHT().getLocalNodeID());
    } finally {
      manager.stop();
    }
  }
Example #2
0
 public void testStopStartLimeDHTManager() throws Exception {
   TestExecutor executor = new TestExecutor();
   DHTManagerImpl manager = new DHTManagerImpl(executor, dhtControllerFactory);
   try {
     manager.start(DHTMode.ACTIVE);
     manager.stop();
     Thread.sleep(200);
     assertFalse(manager.isRunning());
     manager.start(DHTMode.ACTIVE);
     Thread.sleep(200);
     assertTrue(manager.isRunning());
     assertEquals(DHTMode.ACTIVE, manager.getDHTMode());
     manager.start(DHTMode.PASSIVE);
     Thread.sleep(200);
     assertEquals(DHTMode.PASSIVE, manager.getDHTMode());
     assertTrue(manager.isRunning());
     manager.start(DHTMode.ACTIVE);
     manager.start(DHTMode.PASSIVE);
     manager.start(DHTMode.ACTIVE);
     manager.stop();
     assertFalse(manager.isRunning());
     Thread.sleep(500);
     assertFalse(manager.isRunning());
   } finally {
     manager.stop();
   }
 }