Use compatible version with latest TomP2P lib

This commit is contained in:
Manfred Karrer 2014-11-07 00:58:24 +01:00
parent 7049ab3a78
commit 089be0ca16
4 changed files with 74 additions and 82 deletions

View file

@ -218,13 +218,13 @@ class TomP2PMessageFacade implements MessageFacade {
} }
} }
})); }));
if (isSuccess(removeFuture)) {
log.trace("Remove arbitrator from DHT was successful. Stored data: [key: " + locationKey + ", " + // We don't test futureRemove.isSuccess() as this API does not fit well to that operation,
"values: " + arbitratorData + "]"); // it might change in future to something like foundAndRemoved and notFound
} // See discussion at: https://github.com/tomp2p/TomP2P/issues/57#issuecomment-62069840
else {
log.error("Remove arbitrators from DHT failed with reason:" + removeFuture.failedReason()); log.trace("Remove arbitrator from DHT was successful. Stored data: [key: " + locationKey + ", " +
} "values: " + arbitratorData + "]");
} }
}); });
} }

View file

@ -128,25 +128,27 @@ class TomP2POfferRepository implements OfferRepository {
futureRemove.addListener(new BaseFutureListener<BaseFuture>() { futureRemove.addListener(new BaseFutureListener<BaseFuture>() {
@Override @Override
public void operationComplete(BaseFuture future) throws Exception { public void operationComplete(BaseFuture future) throws Exception {
if (isSuccess(future)) { // We don't test futureRemove.isSuccess() as this API does not fit well to that operation,
Platform.runLater(() -> { // it might change in future to something like foundAndRemoved and notFound
offerRepositoryListeners.stream().forEach(listener -> { // See discussion at: https://github.com/tomp2p/TomP2P/issues/57#issuecomment-62069840
try {
Object offerDataObject = offerData.object(); Platform.runLater(() -> {
if (offerDataObject instanceof Offer) { offerRepositoryListeners.stream().forEach(listener -> {
log.trace("Remove offer from DHT was successful. Removed data: [key: " + try {
locationKey + ", " + Object offerDataObject = offerData.object();
"offer: " + (Offer) offerDataObject + "]"); if (offerDataObject instanceof Offer) {
listener.onOfferRemoved((Offer) offerDataObject); log.trace("Remove offer from DHT was successful. Removed data: [key: " +
} locationKey + ", " +
} catch (ClassNotFoundException | IOException e) { "offer: " + (Offer) offerDataObject + "]");
e.printStackTrace(); listener.onOfferRemoved((Offer) offerDataObject);
log.error("Remove offer from DHT failed. Error: " + e.getMessage());
} }
}); } catch (ClassNotFoundException | IOException e) {
writeInvalidationTimestampToDHT(locationKey); e.printStackTrace();
log.error("Remove offer from DHT failed. Error: " + e.getMessage());
}
}); });
} writeInvalidationTimestampToDHT(locationKey);
});
} }
@Override @Override

View file

@ -83,7 +83,8 @@ public class TomP2PTests {
// Typically you run the seed node in localhost to test direct connection. // Typically you run the seed node in localhost to test direct connection.
// If you have a setup where you are not behind a router you can also use a WAN side seed node. // If you have a setup where you are not behind a router you can also use a WAN side seed node.
private static final Node BOOTSTRAP_NODE = private static final Node BOOTSTRAP_NODE =
(FORCED_CONNECTION_TYPE == ConnectionType.DIRECT) ? BootstrapNodes.LOCALHOST : BootstrapNodes.DIGITAL_OCEAN_1; (FORCED_CONNECTION_TYPE == ConnectionType.DIRECT) ? BootstrapNodes.LOCALHOST : BootstrapNodes
.DIGITAL_OCEAN_1;
private static final PeerAddress BOOTSTRAP_NODE_ADDRESS; private static final PeerAddress BOOTSTRAP_NODE_ADDRESS;
@ -153,18 +154,17 @@ public class TomP2PTests {
@Test @Test
@Repeat(STRESS_TEST_COUNT) @Repeat(STRESS_TEST_COUNT)
public void testBootstrapInRelayMode() throws Exception { public void testBootstrapInRelayMode() throws Exception {
if (FORCED_CONNECTION_TYPE == ConnectionType.RELAY) if (FORCED_CONNECTION_TYPE == ConnectionType.RELAY)
assertNotNull(bootstrapInRelayMode("node_1", client1Port)); assertNotNull(bootstrapInRelayMode("node_1", client1Port));
} }
@Test @Test
@Repeat(STRESS_TEST_COUNT) @Repeat(STRESS_TEST_COUNT)
public void testPut() throws Exception { public void testPut() throws Exception {
peer1DHT = getDHTPeer("node_1", client1Port); peer1DHT = getDHTPeer("node_1", client1Port);
FuturePut futurePut = peer1DHT.put(Number160.createHash("key")).data(new Data("hallo")).start(); FuturePut futurePut = peer1DHT.put(Number160.createHash("key")).data(new Data("hallo")).start();
futurePut.awaitUninterruptibly(); futurePut.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futurePut.isSuccess());
assertTrue(futurePut.isSuccess());
} }
@Test @Test
@ -173,15 +173,13 @@ public class TomP2PTests {
peer1DHT = getDHTPeer("node_1", client1Port); peer1DHT = getDHTPeer("node_1", client1Port);
FuturePut futurePut = peer1DHT.put(Number160.createHash("key")).data(new Data("hallo")).start(); FuturePut futurePut = peer1DHT.put(Number160.createHash("key")).data(new Data("hallo")).start();
futurePut.awaitUninterruptibly(); futurePut.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futurePut.isSuccess());
assertTrue(futurePut.isSuccess());
peer2DHT = getDHTPeer("node_2", client2Port); peer2DHT = getDHTPeer("node_2", client2Port);
FutureGet futureGet = peer2DHT.get(Number160.createHash("key")).start(); FutureGet futureGet = peer2DHT.get(Number160.createHash("key")).start();
futureGet.awaitUninterruptibly(); futureGet.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futureGet.isSuccess());
assertTrue(futureGet.isSuccess());
assertEquals("hallo", futureGet.data().object()); assertEquals("hallo", futureGet.data().object());
} }
@ -191,13 +189,11 @@ public class TomP2PTests {
peer1DHT = getDHTPeer("node_1", client1Port); peer1DHT = getDHTPeer("node_1", client1Port);
FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1")).start(); FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1")).start();
futurePut1.awaitUninterruptibly(); futurePut1.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futurePut1.isSuccess());
assertTrue(futurePut1.isSuccess());
FuturePut futurePut2 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo2")).start(); FuturePut futurePut2 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo2")).start();
futurePut2.awaitUninterruptibly(); futurePut2.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futurePut2.isSuccess());
assertTrue(futurePut2.isSuccess());
} }
@Test @Test
@ -206,20 +202,17 @@ public class TomP2PTests {
peer1DHT = getDHTPeer("node_1", client1Port); peer1DHT = getDHTPeer("node_1", client1Port);
FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1")).start(); FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1")).start();
futurePut1.awaitUninterruptibly(); futurePut1.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futurePut1.isSuccess());
assertTrue(futurePut1.isSuccess());
FuturePut futurePut2 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo2")).start(); FuturePut futurePut2 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo2")).start();
futurePut2.awaitUninterruptibly(); futurePut2.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futurePut2.isSuccess());
assertTrue(futurePut2.isSuccess());
peer2DHT = getDHTPeer("node_2", client2Port); peer2DHT = getDHTPeer("node_2", client2Port);
FutureGet futureGet = peer2DHT.get(Number160.createHash("locationKey")).all().start(); FutureGet futureGet = peer2DHT.get(Number160.createHash("locationKey")).all().start();
futureGet.awaitUninterruptibly(); futureGet.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futureGet.isSuccess());
assertTrue(futureGet.isSuccess());
assertTrue(futureGet.dataMap().values().contains(new Data("hallo1"))); assertTrue(futureGet.dataMap().values().contains(new Data("hallo1")));
assertTrue(futureGet.dataMap().values().contains(new Data("hallo2"))); assertTrue(futureGet.dataMap().values().contains(new Data("hallo2")));
@ -232,13 +225,11 @@ public class TomP2PTests {
peer1DHT = getDHTPeer("node_1", client1Port); peer1DHT = getDHTPeer("node_1", client1Port);
FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1")).start(); FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1")).start();
futurePut1.awaitUninterruptibly(); futurePut1.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futurePut1.isSuccess());
assertTrue(futurePut1.isSuccess());
FuturePut futurePut2 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo2")).start(); FuturePut futurePut2 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo2")).start();
futurePut2.awaitUninterruptibly(); futurePut2.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futurePut2.isSuccess());
assertTrue(futurePut2.isSuccess());
peer2DHT = getDHTPeer("node_2", client2Port); peer2DHT = getDHTPeer("node_2", client2Port);
@ -247,14 +238,13 @@ public class TomP2PTests {
.start(); .start();
futureRemove.awaitUninterruptibly(); futureRemove.awaitUninterruptibly();
// That fails sometimes in direct mode and NAT // We don't test futureRemove.isSuccess() as this API does not fit well to that operation,
if (shouldEvaluateSuccess()) // it might change in future to something like foundAndRemoved and notFound
assertTrue(futureRemove.isSuccess()); // See discussion at: https://github.com/tomp2p/TomP2P/issues/57#issuecomment-62069840
FutureGet futureGet = peer2DHT.get(Number160.createHash("locationKey")).all().start(); FutureGet futureGet = peer2DHT.get(Number160.createHash("locationKey")).all().start();
futureGet.awaitUninterruptibly(); futureGet.awaitUninterruptibly();
if (shouldEvaluateSuccess()) assertTrue(futureGet.isSuccess());
assertTrue(futureGet.isSuccess());
assertTrue(futureGet.dataMap().values().contains(new Data("hallo2"))); assertTrue(futureGet.dataMap().values().contains(new Data("hallo2")));
assertTrue(futureGet.dataMap().values().size() == 1); assertTrue(futureGet.dataMap().values().size() == 1);
@ -267,33 +257,33 @@ public class TomP2PTests {
@Test @Test
@Repeat(STRESS_TEST_COUNT) @Repeat(STRESS_TEST_COUNT)
public void testSendDirectBetweenLocalPeers() throws Exception { public void testSendDirectBetweenLocalPeers() throws Exception {
if (FORCED_CONNECTION_TYPE != ConnectionType.NAT && resolvedConnectionType != ConnectionType.NAT) { // if (FORCED_CONNECTION_TYPE != ConnectionType.NAT && resolvedConnectionType != ConnectionType.NAT) {
peer1DHT = getDHTPeer("node_1", client1Port); peer1DHT = getDHTPeer("node_1", client1Port);
peer2DHT = getDHTPeer("node_2", client2Port); peer2DHT = getDHTPeer("node_2", client2Port);
final CountDownLatch countDownLatch = new CountDownLatch(1); final CountDownLatch countDownLatch = new CountDownLatch(1);
final StringBuilder result = new StringBuilder(); final StringBuilder result = new StringBuilder();
peer2DHT.peer().objectDataReply((sender, request) -> { peer2DHT.peer().objectDataReply((sender, request) -> {
countDownLatch.countDown(); countDownLatch.countDown();
result.append(String.valueOf(request)); result.append(String.valueOf(request));
return "pong"; return "pong";
}); });
FuturePeerConnection futurePeerConnection = peer1DHT.peer().createPeerConnection(peer2DHT.peer() FuturePeerConnection futurePeerConnection = peer1DHT.peer().createPeerConnection(peer2DHT.peer()
.peerAddress(), 500); .peerAddress(), 500);
FutureDirect futureDirect = peer1DHT.peer().sendDirect(futurePeerConnection).object("hallo").start(); FutureDirect futureDirect = peer1DHT.peer().sendDirect(futurePeerConnection).object("hallo").start();
futureDirect.awaitUninterruptibly(); futureDirect.awaitUninterruptibly();
countDownLatch.await(3, TimeUnit.SECONDS); countDownLatch.await(3, TimeUnit.SECONDS);
if (countDownLatch.getCount() > 0) if (countDownLatch.getCount() > 0)
Assert.fail("The test method did not complete successfully!"); Assert.fail("The test method did not complete successfully!");
assertEquals("hallo", result.toString()); assertEquals("hallo", result.toString());
assertTrue(futureDirect.isSuccess()); assertTrue(futureDirect.isSuccess());
log.debug(futureDirect.object().toString()); log.debug(futureDirect.object().toString());
assertEquals("pong", futureDirect.object()); assertEquals("pong", futureDirect.object());
} // }
} }
// That test should always succeed as we use the server seed node as receiver. // That test should always succeed as we use the server seed node as receiver.
@ -478,8 +468,4 @@ public class TomP2PTests {
return newPort; return newPort;
} }
private boolean shouldEvaluateSuccess() {
return FORCED_CONNECTION_TYPE == ConnectionType.NAT || resolvedConnectionType == ConnectionType.NAT;
}
} }

View file

@ -337,7 +337,11 @@ public class TomP2PNodeTest {
node = new TomP2PNode(keyPairClient, client); node = new TomP2PNode(keyPairClient, client);
FutureRemove futureRemove = node.removeFromDataMap(locationKey, data_1); FutureRemove futureRemove = node.removeFromDataMap(locationKey, data_1);
futureRemove.awaitUninterruptibly(); futureRemove.awaitUninterruptibly();
assertTrue(futureRemove.isSuccess());
// We don't test futureRemove.isSuccess() as this API does not fit well to that operation,
// it might change in future to something like foundAndRemoved and notFound
// See discussion at: https://github.com/tomp2p/TomP2P/issues/57#issuecomment-62069840
futureGet = node.getDataMap(locationKey); futureGet = node.getDataMap(locationKey);
futureGet.awaitUninterruptibly(); futureGet.awaitUninterruptibly();