Package org.jacorb.test.bugs.bugjac235

Source Code of org.jacorb.test.bugs.bugjac235.AbstractTestCase

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);
    }
}
TOP

Related Classes of org.jacorb.test.bugs.bugjac235.AbstractTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.