package org.jacorb.test.bugs.bugjac235; //import java.io.*; import org.jacorb.test.harness.ClientServerTestCase; import org.junit.Before; import org.omg.CORBA.Any; import org.omg.CORBA.ORB; import org.omg.CORBA.Policy; import org.omg.CORBA.PolicyError; import org.omg.CORBA.PolicyManager; import org.omg.CORBA.PolicyManagerHelper; import org.omg.CORBA.SetOverrideType; import org.omg.Messaging.RELATIVE_RT_TIMEOUT_POLICY_TYPE; import org.omg.Messaging.SYNC_SCOPE_POLICY_TYPE; import org.omg.Messaging.SYNC_WITH_SERVER; /** * This tests the setting of reply timeouts using the RELATIVE_RT_TIMEOUT_POLICY * and the jacorb.connection.client.pending_reply_timeout property. * A problem existed where the policy value was longer than the property value, * the timeout was occurring according to the property value and the policy * value was ignored. A fix was implemented to wait for the timer created * using the policy value to complete if the property value timed out first. * The tests cover the different circumstances where neither/both/either of * these QoS items are set. */ public class AbstractTestCase extends ClientServerTestCase { protected static final String PROP_PENDING_REPLY_TIMEOUT = "jacorb.connection.client.pending_reply_timeout"; private static final int MSEC_FACTOR = 10000; protected JAC235 server; protected ORB orb; @Before public void setUp() throws Exception { server = JAC235Helper.narrow(setup.getServerObject()); orb = setup.getClientOrb(); } protected void setServerPolicy() throws PolicyError { // create a sync scope policy Any syncPolicyAny = orb.create_any(); syncPolicyAny.insert_short( SYNC_WITH_SERVER.value ); Policy syncPolicy = orb.create_policy ( SYNC_SCOPE_POLICY_TYPE.value, syncPolicyAny ); // set the sync scope policy on an object reference server = JAC235Helper.narrow( server._set_policy_override( new Policy[] {syncPolicy}, SetOverrideType.ADD_OVERRIDE ) ); } protected void setTimeout(final int timeoutInMillis) throws Exception { // get PolicyManager and create policies .... PolicyManager policyManager = PolicyManagerHelper.narrow ( orb.resolve_initial_references("ORBPolicyManager")); // create an timeout value of 1 sec. The unit is a time // step of 100 nano secs., so 10000 of these make up a // micro second. Any rrtPolicyAny = orb.create_any(); rrtPolicyAny.insert_ulonglong (timeoutInMillis * MSEC_FACTOR); // create a relative roundtrip timeout policy and set this // policy ORB-wide Policy rrtPolicy = orb.create_policy( RELATIVE_RT_TIMEOUT_POLICY_TYPE.value, rrtPolicyAny ); policyManager.set_policy_overrides( new Policy[] {rrtPolicy}, SetOverrideType.ADD_OVERRIDE); } }