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 java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
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.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.omg.CORBA.BooleanHolder;
import org.omg.CORBA.ByteHolder;
import org.omg.CORBA.DoubleHolder;
import org.omg.CORBA.FloatHolder;
import org.omg.CORBA.IntHolder;
import org.omg.CORBA.LongHolder;
import org.omg.CORBA.Policy;
import org.omg.CORBA.PolicyListHolder;
import org.omg.CORBA.ShortHolder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class BasicTest extends ClientServerTestCase
{
private BasicServer server;
@Before
public void setUp() throws Exception
{
server = BasicServerHelper.narrow( setup.getServerObject() );
}
@BeforeClass
public static void setUpBeforeClass() throws Exception
{
setup = new ClientServerSetup ("org.jacorb.test.orb.BasicServerImpl" );
}
@Test
public void test_ping()
{
server.ping();
}
// short parameters
@Test
public void test_pass_in_short()
{
server.pass_in_short( ( short ) 14 );
}
@Test
public void test_pass_out_short()
{
ShortHolder x = new ShortHolder();
server.pass_out_short( x );
assertEquals( 82, x.value );
}
@Test
public void test_pass_inout_short()
{
ShortHolder x = new ShortHolder( ( short ) -4 );
server.pass_inout_short( x );
assertEquals( ( short ) -3, x.value );
}
@Test
public void test_return_short()
{
short result = server.return_short();
assertEquals( ( short ) -4, result );
}
@Test
public void test_bounce_short()
{
short result = server.bounce_short( ( short ) 14 );
assertEquals( ( short ) 14, result );
}
@Test
public void test_min_short()
{
short result = server.bounce_short( ( short ) 0x8000 );
assertEquals( ( short ) 0x8000, result );
}
@Test
public void test_max_short()
{
short result = server.bounce_short( ( short ) 0xffff );
assertEquals( ( short ) 0xffff, result );
}
@Test
public void test_zero_short()
{
short result = server.bounce_short( ( short ) 0 );
assertEquals( ( short ) 0, result );
}
// unsigned short parameters
@Test
public void test_pass_in_unsigned_short()
{
server.pass_in_unsigned_short( ( short ) 14 );
}
@Test
public void test_pass_out_unsigned_short()
{
ShortHolder x = new ShortHolder();
server.pass_out_unsigned_short( x );
assertEquals( 79, x.value );
}
@Test
public void test_pass_inout_unsigned_short()
{
ShortHolder x = new ShortHolder( ( short ) 88 );
server.pass_inout_unsigned_short( x );
assertEquals( 89, x.value );
}
@Test
public void test_return_unsigned_short()
{
short result = server.return_unsigned_short();
assertEquals( 87, result );
}
@Test
public void test_bounce_unsigned_short()
{
short result = server.bounce_unsigned_short( ( short ) 14 );
assertEquals( 14, result );
}
@Test
public void test_max_unsigned_short()
{
short result = server.bounce_unsigned_short( ( short ) 0xffff );
assertEquals( ( short ) 0xffff, result );
}
@Test
public void test_zero_unsigned_short()
{
short result = server.bounce_unsigned_short( ( short ) 0 );
assertEquals( ( short ) 0, result );
}
// long parameters
@Test
public void test_pass_in_long()
{
server.pass_in_long( 14 );
}
@Test
public void test_pass_out_long()
{
IntHolder x = new IntHolder();
server.pass_out_long( x );
assertEquals( 83, x.value );
}
@Test
public void test_pass_inout_long()
{
IntHolder x = new IntHolder( -4 );
server.pass_inout_long( x );
assertEquals( -3, x.value );
}
@Test
public void test_return_long()
{
int result = server.return_long();
assertEquals( -17, result );
}
@Test
public void test_bounce_long()
{
int result = server.bounce_long( 14 );
assertEquals( 14, result );
}
@Test
public void test_min_long()
{
int result = server.bounce_long( 0x8000000 );
assertEquals( 0x8000000, result );
}
@Test
public void test_max_long()
{
int result = server.bounce_long( 0xffffffff );
assertEquals( 0xffffffff, result );
}
@Test
public void test_zero_long()
{
int result = server.bounce_long( 0 );
assertEquals( 0, result );
}
// unsigned long parameters
@Test
public void test_pass_in_unsigned_long()
{
server.pass_in_unsigned_long( 76542 );
}
@Test
public void test_pass_out_unsigned_long()
{
IntHolder x = new IntHolder();
server.pass_out_unsigned_long( x );
assertEquals( 80, x.value );
}
@Test
public void test_pass_inout_unsigned_long()
{
IntHolder x = new IntHolder( 5 );
server.pass_inout_unsigned_long( x );
assertEquals( 6, x.value );
}
@Test
public void test_return_unsigned_long()
{
int result = server.return_unsigned_long();
assertEquals( 43, result );
}
@Test
public void test_bounce_unsigned_long()
{
int result = server.bounce_unsigned_long( 123456 );
assertEquals( 123456, result );
}
@Test
public void test_max_unsigned_long()
{
int result = server.bounce_unsigned_long( 0xffffffff );
assertEquals( 0xffffffff, result );
}
@Test
public void test_zero_unsigned_long()
{
int result = server.bounce_unsigned_long( 0 );
assertEquals( 0, result );
}
// long long parameters
@Test
public void test_pass_in_long_long()
{
server.pass_in_long_long( 14L );
}
@Test
public void test_pass_out_long_long()
{
LongHolder x = new LongHolder();
server.pass_out_long_long( x );
assertEquals( 84L, x.value );
}
@Test
public void test_pass_inout_long_long()
{
LongHolder x = new LongHolder( -12345678889L );
server.pass_inout_long_long( x );
assertEquals( -12345678888L, x.value );
}
@Test
public void test_return_long_long()
{
long result = server.return_long_long();
assertEquals( 0xffeeddccbbaa0099L, result );
}
@Test
public void test_bounce_long_long()
{
long result = server.bounce_long_long( 14 );
assertEquals( 14L, result );
}
@Test
public void test_min_long_long()
{
long result = server.bounce_long_long( 0x8000000000000000L );
assertEquals( 0x8000000000000000L, result );
}
@Test
public void test_max_long_long()
{
long result = server.bounce_long_long( 0xffffffffffffffffL );
assertEquals( 0xffffffffffffffffL, result );
}
@Test
public void test_zero_long_long()
{
long result = server.bounce_long_long( 0L );
assertEquals( 0L, result );
}
// unsigned long long parameters
@Test
public void test_pass_in_unsigned_long_long()
{
server.pass_in_unsigned_long_long( 14L );
}
@Test
public void test_pass_out_unsigned_long_long()
{
LongHolder x = new LongHolder();
server.pass_out_unsigned_long_long( x );
assertEquals( 81L, x.value );
}
@Test
public void test_pass_inout_unsigned_long_long()
{
LongHolder x = new LongHolder( 9876543210L );
server.pass_inout_unsigned_long_long( x );
assertEquals( 9876543211L, x.value );
}
@Test
public void test_return_unsigned_long_long()
{
long result = server.return_unsigned_long_long();
assertEquals( 0xffeeddccbbaa0088L, result );
}
@Test
public void test_bounce_unsigned_long_long()
{
long result = server.bounce_unsigned_long_long( 14L );
assertEquals( 14L, result );
}
@Test
public void test_max_unsigned_long_long()
{
long result = server.bounce_unsigned_long_long( 0xffffffffffffffffL );
assertEquals( 0xffffffffffffffffL, result );
}
@Test
public void test_zero_unsigned_long_long()
{
long result = server.bounce_unsigned_long_long( 0L );
assertEquals( 0L, result );
}
// boolean parameters
@Test
public void test_pass_in_boolean()
{
server.pass_in_boolean ( false );
}
@Test
public void test_pass_out_boolean()
{
BooleanHolder x = new BooleanHolder( false );
server.pass_out_boolean( x );
assertEquals( true, x.value );
}
@Test
public void test_pass_inout_boolean()
{
BooleanHolder x = new BooleanHolder( true );
server.pass_inout_boolean( x );
assertEquals( false, x.value );
}
@Test
public void test_return_boolean()
{
boolean result = server.return_boolean();
assertEquals( true, result );
}
@Test
public void test_bounce_boolean()
{
boolean result = server.bounce_boolean( false );
assertEquals( false, result );
result = server.bounce_boolean( true );
assertEquals( true, result );
}
// octet parameters
@Test
public void test_pass_in_octet()
{
server.pass_in_octet ( (byte)127 );
}
@Test
public void test_pass_out_octet()
{
ByteHolder x = new ByteHolder( (byte) -1 );
server.pass_out_octet( x );
assertEquals( (byte)23, x.value );
}
@Test
public void test_pass_inout_octet()
{
ByteHolder x = new ByteHolder( (byte) -1 );
server.pass_inout_octet( x );
assertEquals( (byte)0, x.value );
}
@Test
public void test_return_octet()
{
byte result = server.return_octet();
assertEquals( (byte)0xf0, result );
}
@Test
public void test_bounce_octet()
{
byte result = server.bounce_octet( (byte)0xff );
assertEquals( (byte)0xff, result );
}
// float parameters
@Test
public void test_pass_in_float()
{
server.pass_in_float ( 1.234F );
}
@Test
public void test_pass_out_float()
{
FloatHolder x = new FloatHolder( 1.0F );
server.pass_out_float( x );
assertEquals( 0.005F, x.value, 0 );
}
@Test
public void test_pass_inout_float()
{
FloatHolder x = new FloatHolder( -23.4F );
server.pass_inout_float( x );
assertEquals( -22.4F, x.value, 0 );
}
@Test
public void test_return_float()
{
float result = server.return_float();
assertEquals( 1.5E-1F, result, 0 );
}
@Test
public void test_bounce_float()
{
float result = server.bounce_float( 0.0F );
assertEquals( 0.0F, result, 0 );
result = server.bounce_float( -1234.56F );
assertEquals( -1234.56F, result, 0 );
result = server.bounce_float( Float.MIN_VALUE );
assertEquals( Float.MIN_VALUE, result, 0 );
result = server.bounce_float( Float.MAX_VALUE );
assertEquals( Float.MAX_VALUE, result, 0 );
result = server.bounce_float( Float.NaN );
assertTrue( Float.isNaN( result ) );
result = server.bounce_float( Float.NEGATIVE_INFINITY );
assertEquals( Float.NEGATIVE_INFINITY, result, 0 );
result = server.bounce_float( Float.POSITIVE_INFINITY );
assertEquals( Float.POSITIVE_INFINITY, result, 0 );
}
// double parameters
@Test
public void test_pass_in_double()
{
server.pass_in_double ( 1.234 );
}
@Test
public void test_pass_out_double()
{
DoubleHolder x = new DoubleHolder( 1.0 );
server.pass_out_double( x );
assertEquals( 1234E12, x.value, 0 );
}
@Test
public void test_pass_inout_double()
{
DoubleHolder x = new DoubleHolder( -23.4 );
server.pass_inout_double( x );
assertEquals( -22.4, x.value, 0 );
}
@Test
public void test_return_double()
{
double result = server.return_double();
assertEquals( 1E-100, result, 0 );
}
@Test
public void test_bounce_double()
{
double result = server.bounce_double( 0.0 );
assertEquals( 0.0F, result, 0 );
result = server.bounce_double( -1234.56789 );
assertEquals( -1234.56789, result, 0 );
result = server.bounce_double( Double.MIN_VALUE );
assertEquals( Double.MIN_VALUE, result, 0 );
result = server.bounce_double( Double.MAX_VALUE );
assertEquals( Double.MAX_VALUE, result, 0 );
result = server.bounce_double( Double.NaN );
assertTrue( Double.isNaN( result ) );
result = server.bounce_double( Double.NEGATIVE_INFINITY );
assertEquals( Double.NEGATIVE_INFINITY, result, 0 );
result = server.bounce_double( Double.POSITIVE_INFINITY );
assertEquals( Double.POSITIVE_INFINITY, result, 0 );
}
@Test
public void test_validate_connection()
{
try
{
PolicyListHolder h = new PolicyListHolder(new Policy[2]);
boolean result = server._validate_connection(h);
assertTrue(result);
}
catch (Exception e)
{
// not expected
fail(e.getMessage());
}
}
@Test
public void testSimpleMultiThread() throws Exception
{
final int SIZE = 3;
ExecutorService executor = Executors.newFixedThreadPool(SIZE);
class SimpleRequestor implements Callable<Boolean>
{
BasicServer server;
SimpleRequestor(BasicServer server)
{
this.server = server;
}
@Override
public Boolean call() throws Exception
{
for (int i = 0; i < 100; ++i)
{
TestUtils.getLogger().debug(this.toString() + ": iteration " + i);
server.pass_in_long(1000);
assertEquals(47, server.bounce_long(47));
}
return true;
}
}
try
{
List<Future<Boolean>> list = new ArrayList<Future<Boolean>>();
for (int i = 0; i < SIZE; i++)
{
list.add(executor.submit(new SimpleRequestor(server)));
}
for (Future<Boolean> b : list)
{
try
{
b.get();
}
catch (ExecutionException e)
{
fail (e.getCause().toString());
}
}
}
finally
{
executor.shutdown();
}
}
}