package org.jacorb.test.orb;
/*
* JacORB - a free Java ORB
*
* Copyright (C) 1997-2014 Gerald Brose / The JacORB Team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import org.jacorb.test.harness.TestUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.omg.CORBA.BAD_PARAM;
import org.omg.CORBA.INITIALIZE;
import org.omg.CORBA.ORB;
/**
* <code>ORBInitTest</code> tests ORBInit parsing
*
* @author Nick Cross
*/
public class ORBInitTest
{
private final List<ORB> orbs = new ArrayList<ORB>();
@Before
public void setUp() throws Exception
{
PreInitFail.reset();
PostInitFail.reset();
}
@After
public void tearDown() throws Exception
{
for (Iterator<ORB> iter = orbs.iterator(); iter.hasNext();)
{
ORB orb = iter.next();
orb.shutdown(true);
}
orbs.clear();
}
/**
* <code>testParse1</code>
*/
@Test (expected=BAD_PARAM.class)
public void testParse1()
{
String args[] = new String[2];
args[0] = "-ORBInitRef.NameService";
args[1] = "NameService";
initORB(args, null);
}
private ORB initORB(String[] args, Properties props)
{
if (props == null)
{
props = new Properties();
}
props.setProperty("org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB");
props.setProperty("org.omg.CORBA.ORBSingletonClass", "org.jacorb.orb.ORBSingleton");
if (TestUtils.verbose)
{
props.setProperty("jacorb.log.default.verbosity", "4");
}
else
{
props.setProperty("jacorb.log.default.verbosity", "0");
}
ORB orb = org.omg.CORBA.ORB.init( args, props );
orbs.add(orb);
return orb;
}
/**
* <code>testParse2</code>
*/
@Test
public void testParse2 ()
{
String args[] = new String[2];
args[0] = "-ORBInitRef";
args[1] = "NameService=foo.ior";
initORB( args, null );
}
@Test (expected=BAD_PARAM.class)
public void testParse3 ()
{
String args[] = new String[1];
args[0] = "-ORBInitRef";
initORB( args, null );
}
@Test (expected=INITIALIZE.class)
public void testORBInitializerFailClassException()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.non.existent.class", "");
props.put("jacorb.orb_initializer.fail_on_error", "on");
initORB((String[]) null, props);
}
@Test
public void testORBInitializerFailClassNoException()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.none.existen.class", "");
props.put("jacorb.orb_initializer.fail_on_error", "off");
initORB((String[]) null, props);
}
@Test (expected=INITIALIZE.class)
public void testORBInitializerFailConstructorException()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.xyinit",
"org.jacorb.test.orb.ConstructorFail");
props.put("jacorb.orb_initializer.fail_on_error", "on");
initORB((String[]) null, props);
}
@Test
public void testORBInitializerFailConstructorNoException()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.xyinit",
"org.jacorb.test.orb.ConstructorFail");
props.put("jacorb.orb_initializer.fail_on_error", "off");
initORB((String[]) null, props);
}
@Test (expected=INITIALIZE.class)
public void testORBInitializerFailPreInitException()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.xyinit",
"org.jacorb.test.orb.PreInitFail");
props.put("jacorb.orb_initializer.fail_on_error", "on");
initORB((String[]) null, props);
}
@Test
public void testORBInitializerFailPreInitNoException()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.xyinit",
"org.jacorb.test.orb.PreInitFail");
props.put("jacorb.orb_initializer.fail_on_error", "off");
initORB((String[]) null, props);
}
@Test (expected=INITIALIZE.class)
public void testORBInitializerFailPostInitException()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.xyinit",
"org.jacorb.test.orb.PostInitFail");
props.put("jacorb.orb_initializer.fail_on_error", "on");
initORB((String[]) null, props);
}
@Test
public void testORBInitializerFailPostInitNoException()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.xyinit",
"org.jacorb.test.orb.PostInitFail");
props.put("jacorb.orb_initializer.fail_on_error", "off");
initORB((String[]) null, props);
}
@Test
public void testDontInvokePostInitIfPreInitFailed()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.xyinit",
"org.jacorb.test.orb.PreInitFail");
props.put("jacorb.orb_initializer.fail_on_error", "off");
initORB((String[]) null, props);
assertEquals(1, PreInitFail.getPreCount());
assertEquals(0, PreInitFail.getPstCount());
}
@Test
public void testORBInitializerWrongClass1()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.xyinit",
"java.lang.String");
props.put("jacorb.orb_initializer.fail_on_error", "off");
initORB((String[]) null, props);
}
@Test (expected=INITIALIZE.class)
public void testORBInitializerWrongClass2()
{
Properties props = new Properties();
props.put("org.omg.PortableInterceptor.ORBInitializerClass.xyinit",
"java.lang.String");
props.put("jacorb.orb_initializer.fail_on_error", "on");
initORB((String[]) null, props);
}
/**
* <code>testSetORBId_1</code>
*/
@Test
public void testSetORBId_1 ()
{
String args[] = new String[4];
args[0] = "-ORBInitRef";
args[1] = "NameService=foo.ior";
args[2] = "-ORBID";
args[3] = "jacorb: someOrbId_1";
// set ORBID by using commandline arguments
ORB orb = initORB(args, null);
assertTrue(orb != null);
assertEquals(args[3],orb.id());
}
/**
* <code>testSetORBId_3</code>
*/
@Test (expected=INITIALIZE.class)
public void testSetORBId_3 ()
{
String args[] = new String[3];
args[0] = "-ORBInitRef";
args[1] = "NameService=foo.ior";
args[2] = "-ORBID";
// args[3] = "jacorb: someOrbId_1";
// test for -ORBID missing value
ORB orb = initORB(args, null);
assertTrue(orb == null);
}
/**
* <code>testSetORBId_4</code>
*/
@Test
public void testSetORBId_4 ()
{
String args[] = new String[2];
args[0] = "-ORBInitRef";
args[1] = "NameService=foo.ior";
// set ORBID to default ORBID by setting third argument to null
// get default ORBID
ORB orb = initORB(args, null);
assertTrue (orb != null);
String def_id = new String(orb.id());
// run test
ORB orb2 = initORB(args, null);
assertTrue (orb2 != null);
assertEquals(def_id, orb2.id());
}
/**
* <code>testSetORBId_5</code>
*/
@Test
public void testSetORBId_5 ()
{
String args[] = new String[2];
args[0] = "-ORBInitRef";
args[1] = "NameService=foo.ior";
// set ORBID to an empty string
ORB orb = initORB(args, null);
assertTrue (orb != null);
String _id = new String(orb.id());
assertEquals("", _id);
}
/**
* <code>testSetORBId_6</code>
*/
@Test
public void testSetORBId_6 ()
{
String args[] = new String[4];
args[0] = "-ORBInitRef";
args[1] = "NameService=foo.ior";
args[2] = "-ORBID";
args[3] = "";
// set -ORBID to an empty string in an argument
ORB orb = initORB(args, null);
assertTrue(orb != null);
assertEquals("", orb.id());
}
/**
* <code>testSetORBId_7</code>
*/
@Test
public void testSetORBId_7() throws Exception
{
// ORBid is not set. ORB.id is set to an empty string.
// So, ORBid should be "jacorb"
try
{
createPropertiesFile("target/test-classes/jacorb.properties",
"jacorb.connection.client.connect_timeout=33099");
Properties props = new Properties();
props.put("org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB");
props.put("org.omg.CORBA.ORBSingletonClass",
"org.jacorb.orb.ORBSingleton");
// System.setProperty("ORBid", "");
ORB orb = initORB(new String[] {}, props);
assertTrue(orb != null);
assertEquals("", orb.id());
int timeout = ((org.jacorb.orb.ORB) orb).getConfiguration()
.getAttributeAsInteger(
"jacorb.connection.client.connect_timeout", 0);
assertEquals(33099, timeout);
}
finally
{
deletePropertiesFile ("target/test-classes/jacorb.properties");
}
}
private void createPropertiesFile (String name, String content) throws IOException
{
File file = new File(TestUtils.testHome(), name);
File parent = file.getParentFile();
parent.mkdirs();
PrintWriter out = new PrintWriter (new FileWriter (file));
out.println (content);
out.close();
}
private void deletePropertiesFile (String name)
{
File f = new File(TestUtils.testHome(), name);
f.delete();
}
}