예제 #1
0
  /** Test of createTimer method, of class FleaseStage. */
  @Test
  public void testGetState() throws Exception {
    FleaseStage fs =
        new FleaseStage(
            cfg,
            "/tmp/xtreemfs-test/",
            new FleaseMessageSenderInterface() {

              @Override
              public void sendMessage(FleaseMessage message, InetSocketAddress recipient) {
                // ignore me
              }
            },
            true,
            new FleaseViewChangeListenerInterface() {

              @Override
              public void viewIdChangeEvent(ASCIIString cellId, int viewId) {}
            },
            new FleaseStatusListener() {

              @Override
              public void statusChanged(ASCIIString cellId, Flease lease) {}

              @Override
              public void leaseFailed(ASCIIString cellId, FleaseException error) {
                fail(error.toString());
              }
            },
            null);

    FleaseMessage msg = new FleaseMessage(FleaseMessage.MsgType.EVENT_RESTART);
    msg.setCellId(new ASCIIString("testcell"));

    fs.start();
    fs.waitForStartup();

    FleaseFuture f = fs.openCell(new ASCIIString("testcell"), new ArrayList(), false);
    final AtomicBoolean done = new AtomicBoolean(false);
    f.get();

    Thread.sleep(100);

    Map<ASCIIString, FleaseMessage> m = fs.getLocalState();

    // for (ASCIIString cellId : m.keySet()) {
    // System.out.println("cell "+cellId+" "+m.get(cellId));
    // }

    fs.shutdown();
    fs.waitForShutdown();
  }
예제 #2
0
  /** Test of createTimer method, of class FleaseStage. */
  @Test
  public void testOpenAndGetLease() throws Exception {
    final ASCIIString CELL_ID = new ASCIIString("testcell");

    final AtomicReference<Flease> result = new AtomicReference();

    FleaseStage fs =
        new FleaseStage(
            cfg,
            "/tmp/xtreemfs-test/",
            new FleaseMessageSenderInterface() {

              @Override
              public void sendMessage(FleaseMessage message, InetSocketAddress recipient) {
                // ignore me
              }
            },
            true,
            new FleaseViewChangeListenerInterface() {

              @Override
              public void viewIdChangeEvent(ASCIIString cellId, int viewId) {}
            },
            new FleaseStatusListener() {

              @Override
              public void statusChanged(ASCIIString cellId, Flease lease) {
                // System.out.println("state change: "+cellId+" owner="+lease.getLeaseHolder());
                synchronized (result) {
                  result.set(
                      new Flease(
                          cellId,
                          lease.getLeaseHolder(),
                          lease.getLeaseTimeout_ms(),
                          lease.getMasterEpochNumber()));
                  result.notify();
                }
              }

              @Override
              public void leaseFailed(ASCIIString cellId, FleaseException error) {
                fail(error.toString());
              }
            },
            null);

    FleaseMessage msg = new FleaseMessage(FleaseMessage.MsgType.EVENT_RESTART);
    msg.setCellId(CELL_ID);

    fs.start();
    fs.waitForStartup();

    fs.openCell(CELL_ID, new ArrayList(), false);

    synchronized (result) {
      if (result.get() == null) result.wait(1000);
      if (result.get() == null) fail("timeout!");
    }

    assertEquals(result.get().getLeaseHolder(), cfg.getIdentity());

    FleaseFuture f = fs.closeCell(CELL_ID, false);
    f.get();

    Thread.sleep(12000);

    result.set(null);

    fs.openCell(CELL_ID, new ArrayList(), false);

    synchronized (result) {
      if (result.get() == null) result.wait(1000);
      if (result.get() == null) fail("timeout!");
    }

    assertEquals(result.get().getLeaseHolder(), cfg.getIdentity());

    fs.shutdown();
    fs.waitForShutdown();
  }