}
@Test
public void testInfoMessageNOTSAME() throws IOException, InterruptedException {
PeerDHT sender = null;
PeerDHT receiver = null;
try {
final AtomicReference<DataMap> ref = new AtomicReference<DataMap>();
sender = new PeerBuilderDHT(new PeerBuilder(new Number160(3)).ports(4003).start()).start();
receiver = new PeerBuilderDHT(new PeerBuilder(new Number160(4)).ports(4004).start()).start();
final PeerSync senderSync = new PeerSync(sender, 5);
new PeerSync(receiver, 5);
final Number160 locationKey = new Number160(300);
final Number160 domainKey = Number160.ZERO;
final Number160 contentKey = Number160.ZERO;
final String value = "Test";
final String value1 = "Test1";
sender.put(locationKey).data(new Data(value)).start().awaitUninterruptibly();
receiver.put(locationKey).data(new Data(value1)).start().awaitUninterruptibly();
HashMap<Number640, Data> map = new HashMap<Number640, Data>();
final DataMap dataMap = new DataMap(map);
map.put(new Number640(locationKey, domainKey, contentKey, Number160.ZERO), new Data("Test"));
sender.peer().bootstrap().peerAddress(receiver.peerAddress()).start().awaitUninterruptibly();
final CountDownLatch latch = new CountDownLatch(1);
final PeerAddress receiverAddress = receiver.peerAddress();
FutureChannelCreator futureChannelCreator = sender.peer().connectionBean().reservation().create(0, 1);
futureChannelCreator.addListener(new BaseFutureAdapter<FutureChannelCreator>() {
@Override
public void operationComplete(final FutureChannelCreator future2) throws Exception {
if (future2.isSuccess()) {
SyncBuilder synchronizationBuilder = new SyncBuilder(senderSync, receiverAddress, 5);
synchronizationBuilder.dataMap(dataMap);
final FutureResponse futureResponse = senderSync.syncRPC().infoMessage(receiverAddress,
synchronizationBuilder, future2.channelCreator());
futureResponse.addListener(new BaseFutureAdapter<FutureResponse>() {
@Override
public void operationComplete(FutureResponse future) throws Exception {
ref.set(future.responseMessage().dataMap(0));
Utils.addReleaseListener(future2.channelCreator(), futureResponse);
latch.countDown();
}
});
}
}
});
latch.await();
assertEquals(1, ref.get().size());
assertEquals(100, ref.get().dataMap().values().iterator().next().toBytes().length);
assertEquals(false, ref.get().dataMap().values().iterator().next().isFlag1());
assertEquals(false, ref.get().dataMap().values().iterator().next().isFlag2());
} finally {
if (sender != null) {
sender.shutdown().await();
}
if (receiver != null) {
receiver.shutdown().await();
}
}
}