package org.async.rmi;
import org.async.rmi.config.Configuration;
import org.async.rmi.modules.Exporter;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.rmi.RemoteException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import static org.async.rmi.Util.writeAndRead;
/**
* Created by Barak Bar Orion
* 29/10/14.
*/
public class TimeoutTest {
@SuppressWarnings("UnusedDeclaration")
private static final Logger logger = LoggerFactory.getLogger(TimeoutTest.class);
private static Exporter exporter;
private static Counter client;
@BeforeClass
public static void beforeClass() throws Exception {
Counter server = new CounterServer();
Configuration configuration = Modules.getInstance().getConfiguration();
configuration.setConfigurePort(0);
configuration.setClientTimeout(1, TimeUnit.SECONDS);
exporter = Modules.getInstance().getExporter();
client = writeAndRead(server);
}
@AfterClass
public static void afterClass() {
exporter.unexport();
}
@Before
public void setUp() throws RemoteException {
}
@Test(timeout = 5000)
public void testRead() throws RemoteException {
client.read();
}
@Test(timeout = 5000, expected = TimeoutException.class)
public void readTimeout() throws Exception {
client.readAfterDelay(3000);
}
@Test(timeout = 5000, expected = ExecutionException.class)
public void asyncReadTimeout() throws Exception {
client.asyncReadAfterDelay(3000).get();
}
}