package org.jacorb.test.orb.policies; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import org.jacorb.test.harness.ORBTestCase; import org.junit.Test; import org.omg.CORBA.Any; import org.omg.CORBA.Policy; import org.omg.CORBA.PolicyError; import org.omg.Messaging.MAX_HOPS_POLICY_TYPE; import org.omg.Messaging.MaxHopsPolicy; import org.omg.Messaging.PriorityRange; import org.omg.Messaging.PriorityRangeHelper; import org.omg.Messaging.QUEUE_ORDER_POLICY_TYPE; import org.omg.Messaging.QueueOrderPolicy; import org.omg.Messaging.REBIND_POLICY_TYPE; import org.omg.Messaging.RELATIVE_REQ_TIMEOUT_POLICY_TYPE; import org.omg.Messaging.RELATIVE_RT_TIMEOUT_POLICY_TYPE; import org.omg.Messaging.REPLY_END_TIME_POLICY_TYPE; import org.omg.Messaging.REPLY_PRIORITY_POLICY_TYPE; import org.omg.Messaging.REPLY_START_TIME_POLICY_TYPE; import org.omg.Messaging.REQUEST_END_TIME_POLICY_TYPE; import org.omg.Messaging.REQUEST_PRIORITY_POLICY_TYPE; import org.omg.Messaging.REQUEST_START_TIME_POLICY_TYPE; import org.omg.Messaging.ROUTING_POLICY_TYPE; import org.omg.Messaging.RebindPolicy; import org.omg.Messaging.RelativeRequestTimeoutPolicy; import org.omg.Messaging.RelativeRoundtripTimeoutPolicy; import org.omg.Messaging.ReplyEndTimePolicy; import org.omg.Messaging.ReplyPriorityPolicy; import org.omg.Messaging.ReplyStartTimePolicy; import org.omg.Messaging.RequestEndTimePolicy; import org.omg.Messaging.RequestPriorityPolicy; import org.omg.Messaging.RequestStartTimePolicy; import org.omg.Messaging.RoutingPolicy; import org.omg.Messaging.RoutingTypeRange; import org.omg.Messaging.RoutingTypeRangeHelper; import org.omg.Messaging.SYNC_SCOPE_POLICY_TYPE; import org.omg.Messaging.SyncScopePolicy; import org.omg.RTCORBA.CLIENT_PROTOCOL_POLICY_TYPE; import org.omg.RTCORBA.ClientProtocolPolicy; import org.omg.RTCORBA.Protocol; import org.omg.RTCORBA.ProtocolListHelper; import org.omg.TimeBase.UtcT; import org.omg.TimeBase.UtcTHelper; /** * Tests the various policy classes defined by JacORB. This only tests the * handling of the policy objects, not the actual effect of these policies. * * @author Andre Spiegel spiegel@gnu.org */ public class PolicyHandlingTest extends ORBTestCase { @Test public void testClientProtocolPolicy() { Protocol[] protocols = new Protocol[] { }; Any value = create_any(); ProtocolListHelper.insert (value, protocols); ClientProtocolPolicy p = (ClientProtocolPolicy)create_policy ( CLIENT_PROTOCOL_POLICY_TYPE.value, value ); assertEquals (p.policy_type(), CLIENT_PROTOCOL_POLICY_TYPE.value); ClientProtocolPolicy p2 = (ClientProtocolPolicy)p.copy(); // accessing the tag does not work when the protocols list is empty // assertEquals (((org.jacorb.orb.policies.ClientProtocolPolicy)p).tag(), // ((org.jacorb.orb.policies.ClientProtocolPolicy)p2).tag()); assertTrue ("Protocols do not match", p.protocols().equals(p2.protocols())); p.destroy(); p2.destroy(); } @Test public void testMaxHopsPolicy() { Any value = create_any(); value.insert_ushort((short)17); MaxHopsPolicy p = (MaxHopsPolicy)create_policy ( org.omg.Messaging.MAX_HOPS_POLICY_TYPE.value, value ); assertEquals (MAX_HOPS_POLICY_TYPE.value, p.policy_type()); assertEquals (17, p.max_hops()); MaxHopsPolicy p2 = (MaxHopsPolicy)p.copy(); assertEquals (p.max_hops(), p2.max_hops()); p.destroy(); p2.destroy(); } @Test public void testQueueOrderPolicy() { Any value = create_any(); value.insert_short((short)0xffff); QueueOrderPolicy p = (QueueOrderPolicy)create_policy ( org.omg.Messaging.QUEUE_ORDER_POLICY_TYPE.value, value ); assertEquals (QUEUE_ORDER_POLICY_TYPE.value, p.policy_type()); assertEquals ((short)0xffff, p.allowed_orders()); QueueOrderPolicy p2 = (QueueOrderPolicy)p.copy(); assertEquals (p.allowed_orders(), p2.allowed_orders()); p.destroy(); p2.destroy(); } @Test public void testRebindPolicy() { Any value = create_any(); value.insert_short((short)0xffff); RebindPolicy p = (RebindPolicy)create_policy ( org.omg.Messaging.REBIND_POLICY_TYPE.value, value ); assertEquals (REBIND_POLICY_TYPE.value, p.policy_type()); assertEquals ((short)0xffff, p.rebind_mode()); RebindPolicy p2 = (RebindPolicy)p.copy(); assertEquals (p.rebind_mode(), p2.rebind_mode()); p.destroy(); p2.destroy(); } @Test public void testRelativeRequestTimeoutPolicy() { Any value = create_any(); value.insert_ulonglong(123456789); RelativeRequestTimeoutPolicy p = (RelativeRequestTimeoutPolicy)create_policy ( RELATIVE_REQ_TIMEOUT_POLICY_TYPE.value, value ); assertEquals (RELATIVE_REQ_TIMEOUT_POLICY_TYPE.value, p.policy_type()); assertEquals (123456789, p.relative_expiry()); RelativeRequestTimeoutPolicy p2 = (RelativeRequestTimeoutPolicy)p.copy(); assertEquals (p.relative_expiry(), p2.relative_expiry()); p.destroy(); p2.destroy(); } @Test public void testRelativeRoundtripTimeoutPolicy() { Any value = create_any(); value.insert_ulonglong(123456789); RelativeRoundtripTimeoutPolicy p = (RelativeRoundtripTimeoutPolicy)create_policy ( RELATIVE_RT_TIMEOUT_POLICY_TYPE.value, value ); assertEquals (RELATIVE_RT_TIMEOUT_POLICY_TYPE.value, p.policy_type()); assertEquals (123456789, p.relative_expiry()); RelativeRoundtripTimeoutPolicy p2 = (RelativeRoundtripTimeoutPolicy)p.copy(); assertEquals (p.relative_expiry(), p2.relative_expiry()); p.destroy(); p2.destroy(); } @Test public void testReplyEndTimePolicy() { UtcT time = new UtcT(12, 34, (short)56, (short)78); Any value = create_any(); UtcTHelper.insert (value, time); ReplyEndTimePolicy p = (ReplyEndTimePolicy)create_policy ( REPLY_END_TIME_POLICY_TYPE.value, value ); assertEquals (REPLY_END_TIME_POLICY_TYPE.value, p.policy_type()); UtcT outTime = p.end_time(); assertEquals (time.time, outTime.time); assertEquals (time.inacchi, outTime.inacchi); assertEquals (time.inacclo, outTime.inacclo); assertEquals (time.tdf, outTime.tdf); ReplyEndTimePolicy p2 = (ReplyEndTimePolicy)p.copy(); UtcT otherTime = p2.end_time(); assertEquals (otherTime.time, outTime.time); assertEquals (otherTime.inacchi, outTime.inacchi); assertEquals (otherTime.inacclo, outTime.inacclo); assertEquals (otherTime.tdf, outTime.tdf); p.destroy(); p2.destroy(); } @Test public void testReplyPriorityPolicy() { PriorityRange pr = new PriorityRange ((short)10, (short)20); Any value = create_any(); PriorityRangeHelper.insert (value, pr); ReplyPriorityPolicy p = (ReplyPriorityPolicy)create_policy ( REPLY_PRIORITY_POLICY_TYPE.value, value ); assertEquals (REPLY_PRIORITY_POLICY_TYPE.value, p.policy_type()); PriorityRange outPR = p.priority_range(); assertEquals (pr.min, outPR.min); assertEquals (pr.max, outPR.max); ReplyPriorityPolicy p2 = (ReplyPriorityPolicy)p.copy(); PriorityRange otherPR = p2.priority_range(); assertEquals (outPR.min, otherPR.min); assertEquals (outPR.max, otherPR.max); p.destroy(); p2.destroy(); } @Test public void testReplyStartTimePolicy() { UtcT time = new UtcT(12, 34, (short)56, (short)78); Any value = create_any(); UtcTHelper.insert (value, time); ReplyStartTimePolicy p = (ReplyStartTimePolicy)create_policy ( REPLY_START_TIME_POLICY_TYPE.value, value ); assertEquals (REPLY_START_TIME_POLICY_TYPE.value, p.policy_type()); UtcT outTime = p.start_time(); assertEquals (time.time, outTime.time); assertEquals (time.inacchi, outTime.inacchi); assertEquals (time.inacclo, outTime.inacclo); assertEquals (time.tdf, outTime.tdf); ReplyStartTimePolicy p2 = (ReplyStartTimePolicy)p.copy(); UtcT otherTime = p2.start_time(); assertEquals (otherTime.time, outTime.time); assertEquals (otherTime.inacchi, outTime.inacchi); assertEquals (otherTime.inacclo, outTime.inacclo); assertEquals (otherTime.tdf, outTime.tdf); p.destroy(); p2.destroy(); } @Test public void testRequestEndTimePolicy() { UtcT time = new UtcT(12, 34, (short)56, (short)78); Any value = create_any(); UtcTHelper.insert (value, time); RequestEndTimePolicy p = (RequestEndTimePolicy)create_policy ( REQUEST_END_TIME_POLICY_TYPE.value, value ); assertEquals (REQUEST_END_TIME_POLICY_TYPE.value, p.policy_type()); UtcT outTime = p.end_time(); assertEquals (time.time, outTime.time); assertEquals (time.inacchi, outTime.inacchi); assertEquals (time.inacclo, outTime.inacclo); assertEquals (time.tdf, outTime.tdf); RequestEndTimePolicy p2 = (RequestEndTimePolicy)p.copy(); UtcT otherTime = p2.end_time(); assertEquals (otherTime.time, outTime.time); assertEquals (otherTime.inacchi, outTime.inacchi); assertEquals (otherTime.inacclo, outTime.inacclo); assertEquals (otherTime.tdf, outTime.tdf); p.destroy(); p2.destroy(); } @Test public void testRequestPriorityPolicy() { PriorityRange pr = new PriorityRange ((short)10, (short)20); Any value = create_any(); PriorityRangeHelper.insert (value, pr); RequestPriorityPolicy p = (RequestPriorityPolicy)create_policy ( REQUEST_PRIORITY_POLICY_TYPE.value, value ); assertEquals (REQUEST_PRIORITY_POLICY_TYPE.value, p.policy_type()); PriorityRange outPR = p.priority_range(); assertEquals (pr.min, outPR.min); assertEquals (pr.max, outPR.max); RequestPriorityPolicy p2 = (RequestPriorityPolicy)p.copy(); PriorityRange otherPR = p2.priority_range(); assertEquals (outPR.min, otherPR.min); assertEquals (outPR.max, otherPR.max); p.destroy(); p2.destroy(); } @Test public void testRequestStartTimePolicy() { UtcT time = new UtcT(12, 34, (short)56, (short)78); Any value = create_any(); UtcTHelper.insert (value, time); RequestStartTimePolicy p = (RequestStartTimePolicy)create_policy ( REQUEST_START_TIME_POLICY_TYPE.value, value ); assertEquals (REQUEST_START_TIME_POLICY_TYPE.value, p.policy_type()); UtcT outTime = p.start_time(); assertEquals (time.time, outTime.time); assertEquals (time.inacchi, outTime.inacchi); assertEquals (time.inacclo, outTime.inacclo); assertEquals (time.tdf, outTime.tdf); RequestStartTimePolicy p2 = (RequestStartTimePolicy)p.copy(); UtcT otherTime = p2.start_time(); assertEquals (otherTime.time, outTime.time); assertEquals (otherTime.inacchi, outTime.inacchi); assertEquals (otherTime.inacclo, outTime.inacclo); assertEquals (otherTime.tdf, outTime.tdf); p.destroy(); p2.destroy(); } @Test public void testRoutingPolicy() { RoutingTypeRange rtr = new RoutingTypeRange ((short)10, (short)20); Any value = create_any(); RoutingTypeRangeHelper.insert (value, rtr); RoutingPolicy p = (RoutingPolicy)create_policy ( ROUTING_POLICY_TYPE.value, value ); assertEquals (ROUTING_POLICY_TYPE.value, p.policy_type()); RoutingTypeRange outRTR = p.routing_range(); assertEquals (rtr.min, outRTR.min); assertEquals (rtr.max, outRTR.max); RoutingPolicy p2 = (RoutingPolicy)p.copy(); RoutingTypeRange otherRTR = p2.routing_range(); assertEquals (outRTR.min, otherRTR.min); assertEquals (outRTR.max, otherRTR.max); p.destroy(); p2.destroy(); } @Test public void testSyncScopePolicy() { Any value = create_any(); value.insert_short((short)0xffff); SyncScopePolicy p = (SyncScopePolicy)create_policy ( org.omg.Messaging.SYNC_SCOPE_POLICY_TYPE.value, value ); assertEquals (SYNC_SCOPE_POLICY_TYPE.value, p.policy_type()); assertEquals ((short)0xffff, p.synchronization()); SyncScopePolicy p2 = (SyncScopePolicy)p.copy(); assertEquals (p.synchronization(), p2.synchronization()); p.destroy(); p2.destroy(); } private Policy create_policy (int type, Any value) { try { return orb.create_policy (type, value); } catch (PolicyError ex) { fail ("failed to create policy: " + ex); return null; // not reached } } private Any create_any() { return orb.create_any(); } }