package org.jacorb.test.nio; import static org.junit.Assert.fail; import java.util.Properties; import org.jacorb.test.TestIf; import org.jacorb.test.TestIfHelper; import org.jacorb.test.harness.ClientServerSetup; import org.jacorb.test.harness.ClientServerTestCase; import org.jacorb.test.harness.IMRExcludedClientServerCategory; import org.jacorb.test.harness.TestUtils; import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; import org.omg.CORBA.Any; import org.omg.CORBA.INV_OBJREF; import org.omg.CORBA.ORB; import org.omg.CORBA.Policy; import org.omg.CORBA.SetOverrideType; import org.omg.CORBA.TIMEOUT; import org.omg.Messaging.RELATIVE_RT_TIMEOUT_POLICY_TYPE; /** * FrameworkClientTest.java * * Tests for the use of non-blocking connections */ @Category(IMRExcludedClientServerCategory.class) public class NIOTest extends ClientServerTestCase { public static final int MSEC_FACTOR = 10000; public static final int ONE_SECOND = 1000 * MSEC_FACTOR; private String nioTestURL = "corbaloc::localhost:16969/NIOTestServer/thePOA/ObjectID"; protected TestIf server = null; @BeforeClass public static void beforeClassSetUp() throws Exception { Assume.assumeFalse(TestUtils.isSSLEnabled); Properties props = new Properties (); props.setProperty ("jacorb.connection.nonblocking", "on"); setup = new ClientServerSetup(NIOTestServer.class.getName(), TestIf.class.getName(), props, props); } @Test public void testNIO() throws Exception { ORB orb = setup.getClientOrb(); org.omg.CORBA.Object ref = orb.string_to_object( nioTestURL ); Any rrtPolicyAny = orb.create_any(); rrtPolicyAny.insert_ulonglong (ONE_SECOND*2); Policy policies[] = new Policy[1]; policies[0] = orb.create_policy (RELATIVE_RT_TIMEOUT_POLICY_TYPE.value, rrtPolicyAny); server = TestIfHelper.narrow(ref._set_policy_override (policies, SetOverrideType.ADD_OVERRIDE)); try { server.op(); fail ("Should have gotten a timeout exception"); } catch (INV_OBJREF e) { fail("Unable to narrow due to no Group IIOP Profile"); } catch (TIMEOUT e) { // as expected } } }