package org.jacorb.test.orb;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Properties;
import org.jacorb.orb.ParsedIOR;
import org.jacorb.orb.iiop.IIOPAddress;
import org.jacorb.orb.iiop.IIOPProfile;
import org.jacorb.test.BasicServer;
import org.jacorb.test.BasicServerHelper;
import org.jacorb.test.harness.ClientServerSetup;
import org.jacorb.test.harness.CommonSetup;
import org.jacorb.test.harness.FixedPortClientServerTestCase;
import org.jacorb.test.harness.TestUtils;
import org.junit.After;
import org.junit.Assume;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.Timeout;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
import org.omg.CORBA.BAD_PARAM;
import org.omg.CORBA.ORB;
import org.omg.ETF.Profile;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
/**
* Verify startup using server props and endpoint.
*/
@RunWith(Parameterized.class)
public class JSSEEndpointTest extends FixedPortClientServerTestCase
{
@Rule
public Timeout testTimeout = new Timeout(10000);
@BeforeClass
public static void beforeClassSetUp() throws Exception
{
Assume.assumeFalse(TestUtils.isSSLEnabled);
}
private BasicServer server;
@Parameter
public String key;
@Parameter(value = 1)
public String value;
@Parameters
public static Collection<Object[]> data()
{
return Arrays.asList(new Object [][] {
{ "-ORBListenEndpoints", "'iiop://localhost:" + getNextAvailablePort() + "'" },
{ "-ORBListenEndpoints", "'iiop://:" + getNextAvailablePort() + "'" },
// Test that 0.0.0.0 does not cause a null pointer.
{ "-ORBListenEndpoints", "'iiop://0.0.0.0:" + getNextAvailablePort() + "'" },
{ "-ORBListenEndpoints", "'iiop://:" + getNextAvailablePort() + "/ssl_port=" + getNextAvailablePort() + "'" },
{ "-ORBListenEndpoints", "'ssliiop://localhost:" + getNextAvailablePort() + "'" }
} );
}
@Test
public void jsseEndpoint() throws Exception
{
Properties clientProps = CommonSetup.loadSSLProps("jsse_client_props", "jsse_client_ks");
Properties serverProps = CommonSetup.loadSSLProps("jsse_server_props", "jsse_server_ks");
String [] orbargs = new String [] { key, value };
setup = new ClientServerSetup("org.jacorb.test.orb.JSSEEndpointTest", "org.jacorb.test.orb.BasicServerImpl", orbargs, clientProps, serverProps);
server = BasicServerHelper.narrow( setup.getServerObject() );
server.ping ();
ParsedIOR p = new ParsedIOR (setup.getORB(), setup.getServerIOR());
List<Profile> profiles = p.getProfiles();
String host = ((IIOPAddress)((IIOPProfile)profiles.get(0)).getAddress()).getOriginalHost();
assertTrue ("Host must not be blank", host.length () > 0);
}
@Test
public void standardEndpoint() throws Exception
{
String [] orbargs = new String [] { key, value };
setup = new ClientServerSetup("org.jacorb.test.orb.JSSEEndpointTest", "org.jacorb.test.orb.BasicServerImpl", orbargs, null, null);
server = BasicServerHelper.narrow( setup.getServerObject() );
server.ping ();
ParsedIOR p = new ParsedIOR (setup.getORB(), setup.getServerIOR());
List<Profile> profiles = p.getProfiles();
String host = ((IIOPAddress)((IIOPProfile)profiles.get(0)).getAddress()).getOriginalHost();
assertTrue ("Host must not be blank", host.length () > 0);
}
@After
public void tearDown() throws Exception
{
if (setup != null)
{
setup.tearDown();
server._release();
}
}
public static void main(String[] args) throws Exception
{
ORB orb;
try
{
//init ORB
orb = ORB.init( args, null );
}
catch (BAD_PARAM e)
{
TestUtils.getLogger ().debug ("Successfully caught BAD_PARAM " , e);
// Just create it without any arguments to avoid the init issue.
orb = ORB.init (new String[]{}, null);
}
//init POA
POA rootPOA = POAHelper.narrow( orb.resolve_initial_references( "RootPOA" ));
rootPOA.the_POAManager().activate();
BasicServerImpl servant = new BasicServerImpl();
rootPOA.activate_object(servant);
BasicServer server = BasicServerHelper.narrow(rootPOA.servant_to_reference(servant));
System.out.println ("SERVER IOR: " + orb.object_to_string(server));
System.out.flush();
orb.run();
}
}