package org.jacorb.test.orb; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Properties; import org.jacorb.test.BasicServer; import org.jacorb.test.BasicServerHelper; import org.jacorb.test.harness.ClientServerSetup; import org.jacorb.test.harness.ClientServerTestCase; import org.jacorb.test.harness.TestUtils; import org.junit.After; import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import org.omg.CORBA.BAD_PARAM; import org.omg.CORBA.ORB; import org.omg.CORBA.ORBPackage.InvalidName; /** * @author Alphonse Bendt */ public class ORBInitRefTest extends ClientServerTestCase { private final List<String> args = new ArrayList<String>(); private ORB orb; @BeforeClass public static void beforeClassSetUp() throws Exception { Assume.assumeFalse(TestUtils.isSSLEnabled); Properties props = new Properties(); Properties serverProps = new Properties(); serverProps.setProperty("jacorb.test.corbaloc.enable", "true"); serverProps.setProperty("jacorb.test.corbaloc.implname", "ORBInitRefTestImpl"); serverProps.setProperty("jacorb.test.corbaloc.poaname", "ORBInitRefTestPOA"); serverProps.setProperty("jacorb.test.corbaloc.objectid", "ORBInitRefTestID"); serverProps.setProperty("jacorb.test.corbaloc.port", "57231"); serverProps.setProperty("jacorb.test.corbaloc.shortcut", "ORBInitRefServer"); setup = new ClientServerSetup(BasicServerImpl.class.getName(), props, serverProps); } @Test public void testResolveWithoutConfigShouldFail() throws Exception { try { testORB(); } catch(InvalidName e) { // expected } } @Test public void testORBInitRef() throws Exception { args.add("-ORBInitRef"); args.add("BasicServer=" + setup.getServerIOR()); testORB(); } @Test public void testORBInitRefIncomplete() throws Exception { args.add("-ORBInitRef"); args.add("BasicServer="); try { testORB(); fail(); } catch (BAD_PARAM e) { } } @Test public void testORBInitRefIncomplete2() throws Exception { args.add("-ORBInitRef"); args.add("BasicServer"); try { testORB(); fail(); } catch (BAD_PARAM e) { } } @Test public void testJacORBSpecificORBInitRef() throws Exception { args.add("-ORBInitRef.BasicServer=" + setup.getServerIOR()); testORB(); } @Test public void testJacORBSpecificORBInitRefIncomplete() throws Exception { args.add("-ORBInitRef.BasicServer="); try { testORB(); fail(); } catch (BAD_PARAM e) { } } @Test public void testJacORBSpecificORBInitRefIncomplete2() throws Exception { args.add("-ORBInitRef.BasicServer"); try { testORB(); fail(); } catch (BAD_PARAM e) { } } private ORB testORB() throws InvalidName { orb = newORB(args); BasicServer server = BasicServerHelper.narrow(orb.resolve_initial_references("BasicServer")); assertFalse(server.bounce_boolean(false)); return orb; } @Test public void testORBDefaultInitRef() throws Exception { args.add("-ORBDefaultInitRef"); args.add("corbaloc::localhost:57231"); args.add("-ORBInitRef"); args.add("BasicServer=" + setup.getServerIOR()); ORB orb = testORB(); BasicServer server = BasicServerHelper.narrow(orb.resolve_initial_references("ORBInitRefServer")); assertFalse(server.bounce_boolean(false)); } @After public void tearDown() throws Exception { if (orb != null) { orb.shutdown(true); } args.clear(); } @Ignore @Test public void testListInitialReferences() throws Exception { args.add("-ORBInitRef"); args.add("BasicServer=" + setup.getServerIOR()); ORB orb = newORB(args); HashSet<String> set = new HashSet<String>(Arrays.asList(orb.list_initial_services())); assertTrue(set.contains("BasicServer")); } private ORB newORB(List<String> args) { String[] arg = args.toArray(new String[args.size()]); Properties orbProps = new Properties(); orbProps.setProperty("org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB"); orbProps.setProperty("org.omg.CORBA.ORBSingletonClass", "org.jacorb.orb.ORBSingleton"); orb = ORB.init(arg, orbProps); return orb; } }