/*
* JBoss, Home of Professional Open Source.
* Copyright 2006, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.test.iiop.test;
import java.rmi.Remote;
import javax.rmi.PortableRemoteObject;
import junit.framework.Assert;
import junit.framework.Test;
import org.jboss.test.JBossIIOPTestCase;
import org.jboss.test.iiop.interfaces.Boo;
import org.jboss.test.iiop.interfaces.Foo;
import org.jboss.test.iiop.interfaces.IdlInterface;
import org.jboss.test.iiop.interfaces.IdlInterfaceHelper;
import org.jboss.test.iiop.interfaces.NegativeArgumentException;
import org.jboss.test.iiop.interfaces.StatelessSession;
import org.jboss.test.iiop.interfaces.StatelessSessionHome;
import org.jboss.test.iiop.interfaces.Zoo;
import org.jboss.test.iiop.util.Util;
import org.omg.CORBA.ORB;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
/**
* @author reverbel@ime.usp.br
* @version $Revision: 65594 $
*/
public class ParameterPassingStressTestCase
extends JBossIIOPTestCase
{
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
public ParameterPassingStressTestCase(String name)
{
super(name);
}
// Public --------------------------------------------------------
public void test_getString()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
String s = session.getString();
assertEquals(Util.STRING, s);
//----------------------------------------------------------------------
session.remove();
}
public void test_PrimitiveTypes()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
String s;
s = session.testPrimitiveTypes(false,
'A',
Byte.MIN_VALUE,
Short.MIN_VALUE,
Integer.MIN_VALUE,
Long.MIN_VALUE,
Float.MIN_VALUE,
Double.MIN_VALUE);
assertEquals(Util.primitiveTypesToString(false,
'A',
Byte.MIN_VALUE,
Short.MIN_VALUE,
Integer.MIN_VALUE,
Long.MIN_VALUE,
Float.MIN_VALUE,
Double.MIN_VALUE),
s);
s = session.testPrimitiveTypes(true,
'Z',
Byte.MAX_VALUE,
Short.MAX_VALUE,
Integer.MAX_VALUE,
Long.MAX_VALUE,
Float.MAX_VALUE,
Double.MAX_VALUE);
assertEquals(Util.primitiveTypesToString(true,
'Z',
Byte.MAX_VALUE,
Short.MAX_VALUE,
Integer.MAX_VALUE,
Long.MAX_VALUE,
Float.MAX_VALUE,
Double.MAX_VALUE),
s);
//----------------------------------------------------------------------
session.remove();
}
public void test_String()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
String original = "0123456789";
String echoedBack = session.testString(original);
assertEquals(Util.echo(original), echoedBack);
//----------------------------------------------------------------------
session.remove();
}
public void test_StatelessSession()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
StatelessSession session2 =
session.testStatelessSession("the quick brown fox", session);
String s = session2.getString();
assertEquals(Util.STRING, s);
//----------------------------------------------------------------------
session.remove();
}
public void test_Remote()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
Remote r = session.testRemote("jumps over the lazy dog", session);
StatelessSession session2 =
(StatelessSession)PortableRemoteObject.narrow(r,
StatelessSession.class);
String s = session2.getString();
assertEquals(Util.STRING, s);
//----------------------------------------------------------------------
session.remove();
}
public void test_Serializable()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
Foo original = new Foo(7, "foo test");
Foo echoedBack = session.testSerializable(original);
assertEquals(Util.echoFoo(original), echoedBack);
//----------------------------------------------------------------------
session.remove();
}
public void test_intArray()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
int[] original= new int[10];
for (int i = 0; i < original.length; i++)
original[i] = 100 + i;
int[] echoedBack = session.testIntArray(original);
assertEquals(original.length, echoedBack.length);
for (int i = 0; i < echoedBack.length; i++)
assertEquals(original[i] + 1, echoedBack[i]);
//----------------------------------------------------------------------
session.remove();
}
public void test_valueArray()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
Foo[] original = new Foo[4];
for (int i = 0; i < original.length; i++)
original[i] = new Foo(100 + i, "foo array test");
Foo[] echoedBack = session.testValueArray(original);
assertEquals(original.length, echoedBack.length);
for (int i = 0; i < echoedBack.length; i++)
assertEquals(Util.echoFoo(original[i]), echoedBack[i]);
//----------------------------------------------------------------------
session.remove();
}
public void test_exception()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
assertEquals("#0", session.testException(0));
assertEquals("#1", session.testException(1));
assertEquals("#2", session.testException(2));
try
{
session.testException(-2);
fail("NegativeArgumentException expected but not thrown.");
}
catch (NegativeArgumentException na)
{
assertEquals(-2, na.getNegativeArgument());
}
try
{
session.testException(-1);
fail("NegativeArgumentException expected but not thrown.");
}
catch (NegativeArgumentException na)
{
assertEquals(-1, na.getNegativeArgument());
}
assertEquals("#0", session.testException(0));
//----------------------------------------------------------------------
session.remove();
}
public void test_FooValueToObject()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
Foo original = new Foo(9999, "foo test");
java.lang.Object echoedBack = session.fooValueToObject(original);
assertEquals(Util.echoFoo(original), echoedBack);
//----------------------------------------------------------------------
session.remove();
}
public void test_BooValueToObject()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
Boo original = new Boo("t1", "boo test");
java.lang.Object echoedBack = session.booValueToObject(original);
assertEquals(Util.echoBoo(original), echoedBack);
//----------------------------------------------------------------------
session.remove();
}
public void test_valueArrayToVector()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
Foo[] original = new Foo[4];
for (int i = 0; i < original.length; i++)
original[i] = new Foo(100 + i, "foo vector test");
java.util.Vector v = session.valueArrayToVector(original);
java.lang.Object[] echoedBack = v.toArray();
assertEquals(original.length, echoedBack.length);
for (int i = 0; i < echoedBack.length; i++)
assertEquals(Util.echoFoo(original[i]), echoedBack[i]);
//----------------------------------------------------------------------
session.remove();
}
public void test_vectorToValueArray()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
Foo[] original = new Foo[4];
for (int i = 0; i < original.length; i++)
original[i] = new Foo(100 + i, "foo vector test");
java.util.Vector v = session.valueArrayToVector(original);
Foo[] echoedBack = session.vectorToValueArray(v);
assertEquals(original.length, echoedBack.length);
for (int i = 0; i < echoedBack.length; i++)
assertEquals(Util.echoFoo(Util.echoFoo(original[i])),
echoedBack[i]);
//----------------------------------------------------------------------
session.remove();
}
public void test_getException()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
java.lang.Object obj = session.getException();
NegativeArgumentException na = (NegativeArgumentException)obj;
assertEquals(-7777, na.getNegativeArgument());
//----------------------------------------------------------------------
session.remove();
}
public void test_getZooValue()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
java.lang.Object obj = session.getZooValue();
Assert.assertEquals(new Zoo("outer_zoo!",
"returned by getZooValue",
new Zoo("inner_zoo!", "inner")),
obj);
//----------------------------------------------------------------------
session.remove();
}
public void test_referenceSharingWithinArray()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
int n = 100;
Object[] original = new Object[n];
for (int i = 0; i < n; i++)
original[i] = new Boo("t" + i, "boo array test");
Object[] echoedBack =
session.testReferenceSharingWithinArray(original);
assertEquals(2 * n, echoedBack.length);
for (int i = 0; i < n; i++)
{
assertEquals(original[i], echoedBack[i]);
assertEquals(original[i], echoedBack[i + n]);
assertSame(echoedBack[i], echoedBack[i + n]);
}
//----------------------------------------------------------------------
session.remove();
}
public void test_referenceSharingWithinCollection()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
java.util.Collection original = new java.util.ArrayList();
int n = 10;
for (int i = 0; i < n; i++)
original.add(new Foo(100 + i, "foo collection test"));
java.util.Collection echoedBack =
session.testReferenceSharingWithinCollection(original);
assertEquals(2 * n, echoedBack.size());
java.util.ArrayList originalList = (java.util.ArrayList)original;
java.util.ArrayList echoedList = (java.util.ArrayList)echoedBack;
for (int i = 0; i < n; i++)
{
assertEquals(originalList.get(i), echoedList.get(i));
assertEquals(originalList.get(i), echoedList.get(i + n));
assertSame(echoedList.get(i), echoedList.get(i + n));
}
//----------------------------------------------------------------------
session.remove();
}
public void test_bigVector()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
Foo[] original = new Foo[256];
for (int i = 0; i < original.length; i++)
original[i] = new Foo(100 + i, "foo vector test");
java.util.Vector v = session.valueArrayToVector(original);
Foo[] echoedBack = session.vectorToValueArray(v);
assertEquals(original.length, echoedBack.length);
for (int i = 0; i < echoedBack.length; i++)
assertEquals(Util.echoFoo(Util.echoFoo(original[i])),
echoedBack[i]);
//----------------------------------------------------------------------
session.remove();
}
public void test_CorbaObject()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
final ORB orb = ORB.init(new String[0], System.getProperties());
POA poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
IdlInterfaceServant servant = new IdlInterfaceServant();
org.omg.CORBA.Object original = servant._this_object(orb);
poa.the_POAManager().activate();
new Thread(
new Runnable() {
public void run() {
orb.run();
}
},
"ORB thread"
).start();
org.omg.CORBA.Object echoedBack = session.testCorbaObject(original);
assertEquals(orb.object_to_string(original),
orb.object_to_string(echoedBack));
//----------------------------------------------------------------------
session.remove();
}
public void test_IdlInterface()
throws Exception
{
StatelessSessionHome home =
(StatelessSessionHome)PortableRemoteObject.narrow(
getInitialContext().lookup(StatelessSessionHome.JNDI_NAME),
StatelessSessionHome.class);
StatelessSession session = home.create();
//----------------------------------------------------------------------
final ORB orb = ORB.init(new String[0], System.getProperties());
POA poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
IdlInterfaceServant servant = new IdlInterfaceServant();
org.omg.CORBA.Object obj = servant._this_object(orb);
poa.the_POAManager().activate();
new Thread(
new Runnable() {
public void run() {
orb.run();
}
},
"ORB thread"
).start();
IdlInterface original = IdlInterfaceHelper.narrow(obj);
IdlInterface echoedBack = session.testIdlInterface(original);
assertEquals(orb.object_to_string(original),
orb.object_to_string(echoedBack));
//----------------------------------------------------------------------
session.remove();
}
public static Test suite() throws Exception
{
return getDeploySetup(ParameterPassingStressTestCase.class, "iiop.jar");
}
}