FuturePut put3 = nodeA.getDataManager().putUnblocked(parameters3);
put3.awaitUninterruptibly();
// check that they are all stored
FutureGet futureGet = nodeB.getDataManager().getUnblocked(parameters1);
futureGet.awaitUninterruptibly();
assertEquals(testString1, ((H2HTestData) futureGet.getData().object()).getTestString());
futureGet = nodeB.getDataManager().getUnblocked(parameters2);
futureGet.awaitUninterruptibly();
assertEquals(testString2, ((H2HTestData) futureGet.getData().object()).getTestString());
futureGet = nodeB.getDataManager().getUnblocked(parameters3);
futureGet.awaitUninterruptibly();
assertEquals(testString3, ((H2HTestData) futureGet.getData().object()).getTestString());
// remove 2nd one and check that 1st and 3rd are still there
nodeA.getDataManager().removeUnblocked(parameters2).awaitUninterruptibly();
futureGet = nodeB.getDataManager().getUnblocked(parameters1);
futureGet.awaitUninterruptibly();
assertEquals(testString1, ((H2HTestData) futureGet.getData().object()).getTestString());
futureGet = nodeB.getDataManager().getUnblocked(parameters2);
futureGet.awaitUninterruptibly();
assertNull(futureGet.getData());
futureGet = nodeB.getDataManager().getUnblocked(parameters3);
futureGet.awaitUninterruptibly();
assertEquals(testString3, ((H2HTestData) futureGet.getData().object()).getTestString());
// remove 3rd one as well and check that they are gone as well
nodeA.getDataManager().removeUnblocked(parameters1).awaitUninterruptibly();
nodeA.getDataManager().removeUnblocked(parameters3).awaitUninterruptibly();
futureGet = nodeB.getDataManager().getUnblocked(parameters1);
futureGet.awaitUninterruptibly();
assertNull(futureGet.getData());
futureGet = nodeB.getDataManager().getUnblocked(parameters2);
futureGet.awaitUninterruptibly();
assertNull(futureGet.getData());
futureGet = nodeB.getDataManager().getUnblocked(parameters3);
futureGet.awaitUninterruptibly();
assertNull(futureGet.getData());
}