package org.jacorb.test.orb.policies;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Properties;
import org.jacorb.test.SyncScopeServer;
import org.jacorb.test.SyncScopeServerHelper;
import org.jacorb.test.harness.ClientServerSetup;
import org.jacorb.test.harness.ClientServerTestCase;
import org.junit.After;
import org.junit.Test;
/**
* Tests for SyncScopePolicy.
*
* @author Andre Spiegel <spiegel@gnu.org>
*/
public class DefSyncScopeTest extends ClientServerTestCase
{
private static final int TIME = 300;
private Properties props;
private SyncScopeServer server;
@After
public void tearDown() throws Exception
{
server._release();
server = null;
}
private void init_server () throws Exception
{
setup = new ClientServerSetup (SyncScopeServerImpl.class.getName(),
props, null);
server = SyncScopeServerHelper.narrow (setup.getClientOrb().string_to_object(setup.getServerIOR()));
}
@Test
public void test_warm_up() throws Exception
{
props = null;
init_server ();
server.operation (50);
server.oneway_op (50);
}
@Test
public void test_def_sync_none() throws Exception
{
props = new Properties();
props.put("jacorb.default_sync_scope","None");
init_server ();
int beforeCount = server.get_oneway_count();
long start = System.currentTimeMillis();
server.oneway_op (TIME);
long time = System.currentTimeMillis() - start;
assertTrue ("return too late", time < TIME);
verifyOnewayWasReceived(beforeCount + 1);
}
@Test
public void test_def_sync_with_transport() throws Exception
{
props = new Properties();
props.put("jacorb.default_sync_scope","Transport");
init_server ();
int beforeCount = server.get_oneway_count();
long start = System.currentTimeMillis();
server.oneway_op (TIME);
long time = System.currentTimeMillis() - start;
assertTrue ("return too late", time < TIME);
verifyOnewayWasReceived(beforeCount + 1);
}
@Test
public void test_def_sync_with_server() throws Exception
{
props = new Properties();
props.put("jacorb.default_sync_scope","Server");
init_server ();
int beforeCount = server.get_oneway_count();
long start = System.currentTimeMillis();
server.oneway_op (TIME);
long time = System.currentTimeMillis() - start;
assertTrue ("return too late", time < TIME);
verifyOnewayWasReceived(beforeCount + 1);
}
@Test
public void test_def_sync_with_target() throws Exception
{
props = new Properties();
props.put("jacorb.default_sync_scope","Target");
init_server ();
int beforeCount = server.get_oneway_count();
long start = System.currentTimeMillis();
server.oneway_op (TIME);
long time = System.currentTimeMillis() - start;
assertTrue ("return too early", time >= TIME);
verifyOnewayWasReceived(beforeCount + 1);
}
private void verifyOnewayWasReceived(int expected) throws Exception
{
final long waitUntil = System.currentTimeMillis() + 10000;
while( (server.get_oneway_count() != expected) && (System.currentTimeMillis() < waitUntil) )
{
Thread.sleep(1000);
}
assertEquals(expected, server.get_oneway_count());
}
}