package org.async.rmi;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.CancellationException;
import java.util.concurrent.CompletableFuture;
import static org.async.rmi.Util.writeAndRead;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
/**
* Test cancellation of remote future.
* Created by Barak Bar Orion
* 12/15/14.
*/
public class CancelingRemoteFutureTest {
@SuppressWarnings("UnusedDeclaration")
private static final Logger logger = LoggerFactory.getLogger(CancelingRemoteFutureTest.class);
@BeforeClass
public static void beforeClass() throws Exception {
}
@Test(timeout = 5000, expected = CancellationException.class)
public void cancelingRemoteUnResolvedFuture() throws Exception {
CancelCounter server = new CancelCounterServer();
CancelCounter client = writeAndRead(server);
CompletableFuture<Void> future = client.get();
do {
Thread.sleep(200);
} while (client.getFutures() == 0);
assertThat(client.getFutures(), is(1));
future.cancel(true);
do {
Thread.sleep(200);
} while (0 < client.getFutures());
future.get();
}
}