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