62
testAttribute (test_TestFactory factory,
69
testSequenceHelpers (void)
72
test_BoundedLongSeq *lseq = NULL;
74
d_print ("Testing ORBit_sequence helpers...\n");
76
lseq = ORBit_sequence_alloc (TC_test_BoundedLongSeq, 2);
77
g_assert (lseq != NULL);
78
g_assert (lseq->_length == 2);
79
g_assert (lseq->_maximum >= 2);
81
ORBit_sequence_index (lseq, 0) = 0;
82
ORBit_sequence_index (lseq, 1) = 0;
85
ORBit_sequence_append (lseq, &l);
87
ORBit_sequence_append (lseq, &l);
89
g_assert (lseq->_length == 4);
90
g_assert (ORBit_sequence_index (lseq, 2) == 1);
91
g_assert (ORBit_sequence_index (lseq, 3) == 2);
93
ORBit_sequence_remove(lseq, 2);
94
g_assert (lseq->_length == 3);
95
g_assert (ORBit_sequence_index (lseq, 2) == 2);
97
ORBit_sequence_set_size (lseq, 100);
98
ORBit_sequence_set_size (lseq, 0);
102
/* test incremental reallocation of memory */
107
/* 16 times double capacity of buffer */
108
CORBA_long MAX_APPEND = 1<<16;
109
/* generic sequence<octet> test */
110
CORBA_sequence_CORBA_octet *oseq = NULL;
112
oseq = ORBit_sequence_alloc (TC_CORBA_sequence_CORBA_octet, 0);
114
g_assert (oseq != NULL);
115
g_assert (oseq->_length == 0);
116
g_assert (oseq->_maximum >= 0);
118
for (i = 0; i < MAX_APPEND; ++i)
120
CORBA_octet oct = (CORBA_octet) (i % 109);
121
/* _append does shallow copy */
122
ORBit_sequence_append (oseq, &oct); /* realloc */
123
g_assert (i+1==oseq->_length);
125
/* infrequent validation sequence values have
126
* been re-located correctly */
128
for (j = 0; j < oseq->_length; ++j /* prim */ )
130
CORBA_octet j_check = (CORBA_octet) (j % 109);
131
CORBA_octet j_value = ORBit_sequence_index (oseq, j);
132
g_assert (j_value==j_check);
139
/* test concat operation: concat two sequences of different
140
* size. The concatinated sequence must contain values of both
141
* in correct order. */
148
CORBA_sequence_CORBA_octet *aseq = NULL;
149
CORBA_sequence_CORBA_octet *bseq = NULL;
151
aseq = ORBit_sequence_alloc (TC_CORBA_sequence_CORBA_octet, 0);
152
bseq = ORBit_sequence_alloc (TC_CORBA_sequence_CORBA_octet, 0);
154
for (b = 0; b < 200; ++b) {
155
ORBit_sequence_concat (aseq, bseq);
158
for (i = 0; i < b; ++i)
159
for (j = 0; j < i; ++j, ++a)
160
g_assert (ORBit_sequence_index (aseq, a) == j % 128);
163
ORBit_sequence_append (bseq, &oct);
173
testAttribute (test_BasicServer objref,
63
174
CORBA_Environment *ev)
65
test_BasicServer objref;
69
179
d_print ("Testing attributes...\n");
70
objref = test_TestFactory_getBasicServer (factory, ev);
71
g_assert (ev->_major == CORBA_NO_EXCEPTION);
72
g_assert (objref != CORBA_OBJECT_NIL);
73
g_assert (CORBA_Object_is_a (objref, "IDL:orbit/test/BasicServer:1.0", ev));
74
g_assert (ev->_major == CORBA_NO_EXCEPTION);
76
181
val = test_BasicServer__get_foo (objref, ev);
77
182
g_assert (ev->_major == CORBA_NO_EXCEPTION);
84
189
lval = test_BasicServer__get_bah (objref, ev);
85
190
g_assert (ev->_major == CORBA_NO_EXCEPTION);
86
191
g_assert (lval == constants_LONG_RETN);
88
CORBA_Object_release (objref, ev);
89
g_assert (ev->_major == CORBA_NO_EXCEPTION);
93
testString (test_TestFactory factory,
195
testString (test_BasicServer objref,
94
196
CORBA_Environment *ev)
96
test_BasicServer objref;
97
198
const CORBA_char *in;
98
199
CORBA_char *inout, *out, *retn;
100
201
d_print ("Testing strings...\n");
101
objref = test_TestFactory_getBasicServer (factory, ev);
102
g_assert (ev->_major == CORBA_NO_EXCEPTION);
104
203
in = constants_STRING_IN;
105
204
inout = CORBA_string_dup (constants_STRING_INOUT_IN);
106
205
retn = test_BasicServer_opString (objref, in, &inout, &out, ev);
107
206
g_assert (ev->_major == CORBA_NO_EXCEPTION);
208
g_assert (strcmp (out, constants_STRING_OUT)==0);
209
g_assert (strcmp (retn, constants_STRING_RETN)==0);
109
210
g_assert (strcmp (in, constants_STRING_IN)==0);
110
211
g_assert (strcmp (inout, constants_STRING_INOUT_OUT)==0);
111
g_assert (strcmp (out, constants_STRING_OUT)==0);
112
g_assert (strcmp (retn, constants_STRING_RETN)==0);
114
213
test_BasicServer_opOneWay (objref, constants_STRING_IN, ev);
115
214
g_assert (ev->_major == CORBA_NO_EXCEPTION);
387
464
g_assert (find_tc (tcs, "IDL:orbit/test/Soup:1.0"));
388
465
g_assert (find_tc (tcs, "IDL:orbit/test/EnumUnion/Colour:1.0"));
389
466
g_assert (find_tc (tcs, "IDL:orbit/test/ArrayUnion:1.0"));
468
tc = find_tc (tcs, "IDL:orbit/test/StrSeq:1.0");
469
g_assert (!strcmp (tc->repo_id, "IDL:orbit/test/StrSeq:1.0"));
470
g_assert (tc->kind == CORBA_tk_alias);
471
g_assert (tc->subtypes[0]->kind);
390
473
CORBA_free (tcs);
475
/* test subnames for unions correctly handle multiple case
476
* labels pointing at the same sub type. */
477
tc = TC_test_FixedLengthUnion;
478
g_assert(tc->sub_parts == 5);
479
g_assert(!strcmp(tc->subnames[0], "x"));
480
g_assert(!strcmp(tc->subnames[1], "y"));
481
g_assert(!strcmp(tc->subnames[2], "z"));
482
g_assert(!strcmp(tc->subnames[3], "z"));
483
g_assert(!strcmp(tc->subnames[4], "v"));
487
testIsA (test_TestFactory factory,
488
CORBA_Environment *ev)
490
test_DerivedServer ds;
492
d_print ("Testing is_a ...\n");
494
g_assert (CORBA_Object_is_a (factory, "IDL:CORBA/Object:1.0", ev));
495
g_assert (ev->_major == CORBA_NO_EXCEPTION);
496
g_assert (CORBA_Object_is_a (factory, "IDL:omg.org/CORBA/Object:1.0", ev));
497
g_assert (ev->_major == CORBA_NO_EXCEPTION);
499
ds = test_TestFactory_getDerivedServer (factory, ev);
500
g_assert (ev->_major == CORBA_NO_EXCEPTION);
502
g_assert (CORBA_Object_is_a (ds, "IDL:orbit/test/DerivedServer:1.0", ev));
503
g_assert (ev->_major == CORBA_NO_EXCEPTION);
504
g_assert (CORBA_Object_is_a (ds, "IDL:orbit/test/C1:1.0", ev));
505
g_assert (ev->_major == CORBA_NO_EXCEPTION);
506
g_assert (CORBA_Object_is_a (ds, "IDL:orbit/test/B1:1.0", ev));
507
g_assert (ev->_major == CORBA_NO_EXCEPTION);
508
g_assert (CORBA_Object_is_a (ds, "IDL:orbit/test/B2:1.0", ev));
509
g_assert (ev->_major == CORBA_NO_EXCEPTION);
510
g_assert (CORBA_Object_is_a (ds, "IDL:orbit/test/BaseServer:1.0", ev));
511
g_assert (ev->_major == CORBA_NO_EXCEPTION);
512
g_assert (CORBA_Object_is_a (factory, "IDL:CORBA/Object:1.0", ev));
513
g_assert (ev->_major == CORBA_NO_EXCEPTION);
515
CORBA_Object_release (ds, ev);
609
testAlignHoleStruct (test_TestFactory factory,
610
CORBA_Environment *ev)
612
test_StructServer objref;
613
test_AlignHoleStruct inArg, inoutArg, outArg, retn;
614
d_print ("Testing structs with aligning holes...\n");
615
objref = test_TestFactory_getStructServer (factory, ev);
616
g_assert (ev->_major == CORBA_NO_EXCEPTION);
618
inArg.a.a = constants_DOUBLE_IN;
619
inArg.a.b = constants_OCTET_IN;
620
inArg.b = constants_CHAR_IN;
622
inoutArg.a.a = constants_DOUBLE_INOUT_IN;
623
inoutArg.a.b = constants_OCTET_INOUT_IN;
624
inoutArg.b = constants_CHAR_INOUT_IN;
626
memset(&outArg, 0, sizeof(outArg));
628
retn = test_StructServer_opAlignHole (objref, &inArg, &inoutArg, &outArg, ev);
629
g_assert (ev->_major == CORBA_NO_EXCEPTION);
631
g_assert (inArg.a.a == constants_DOUBLE_IN);
632
g_assert (inArg.a.b == constants_OCTET_IN);
633
g_assert (inArg.b == constants_CHAR_IN);
635
g_assert (inoutArg.a.a == constants_DOUBLE_INOUT_OUT);
636
g_assert (inoutArg.a.b == constants_OCTET_INOUT_OUT);
637
g_assert (inoutArg.b == constants_CHAR_INOUT_OUT);
639
g_assert (outArg.a.a == constants_DOUBLE_OUT);
640
g_assert (outArg.a.b == constants_OCTET_OUT);
641
g_assert (outArg.b == constants_CHAR_OUT);
643
g_assert (retn.a.a == constants_DOUBLE_RETN);
644
g_assert (retn.a.b == constants_OCTET_RETN);
645
g_assert (retn.b == constants_CHAR_RETN);
647
CORBA_Object_release (objref, ev);
648
g_assert (ev->_major == CORBA_NO_EXCEPTION);
484
652
testObjectStruct (test_TestFactory factory,
485
653
CORBA_Environment *ev)
566
735
for (i=0;i<retn->_length;i++)
567
736
g_assert (strcmp (retn->_buffer[i], constants_SEQ_STRING_RETN[i]) == 0);
738
g_warning ("FIXME: opMassiveSeq fails - due to max. size check");
739
/* long_retn = test_SequenceServer_opMassiveSeq(objref, ev);
740
g_assert (ev->_major == CORBA_NO_EXCEPTION);
741
CORBA_free (long_retn); */
569
743
CORBA_free (inArg._buffer);
570
744
CORBA_free (inoutArg._buffer);
571
745
CORBA_free (outArg);
572
746
CORBA_free (retn);
573
748
CORBA_Object_release (objref, ev);
574
749
g_assert (ev->_major == CORBA_NO_EXCEPTION);
753
testAnySequence (test_TestFactory factory,
754
CORBA_Environment *ev)
756
test_AnySeq *any_retn, *copy;
757
test_SequenceServer objref;
759
d_print ("Testing sequence<any>...\n");
760
objref = test_TestFactory_getSequenceServer (factory, ev);
761
g_assert (ev->_major == CORBA_NO_EXCEPTION);
763
any_retn = test_SequenceServer_opAnySeq (objref, ev);
764
g_assert (ev->_major == CORBA_NO_EXCEPTION);
765
copy = ORBit_copy_value (any_retn, TC_test_AnySeq);
766
CORBA_free (any_retn);
768
CORBA_Object_release (objref, ev);
769
g_assert (ev->_major == CORBA_NO_EXCEPTION);
578
773
testBoundedSequence (test_TestFactory factory,
579
774
CORBA_Environment *ev)
762
testFixedLengthArray (test_TestFactory factory,
763
CORBA_Environment *ev)
957
testLongArray (test_ArrayServer objref,
958
CORBA_Environment *ev)
766
test_ArrayServer objref;
767
961
test_LongArray inArg, inoutArg, outArg;
768
962
test_LongArray_slice *retn;
770
d_print ("Testing arrays with fixed length members...\n");
771
objref = test_TestFactory_getArrayServer (factory, ev);
772
g_assert (ev->_major == CORBA_NO_EXCEPTION);
774
for (i=0;i<constants_SEQLEN;i++)
964
for (i=0;i<test_SequenceLen;i++)
775
965
inArg[i] = constants_SEQ_LONG_IN[i];
777
for (i=0;i<constants_SEQLEN;i++)
967
for (i=0;i<test_SequenceLen;i++)
778
968
inoutArg[i] = constants_SEQ_LONG_INOUT_IN[i];
780
970
retn = test_ArrayServer_opLongArray (objref, inArg, inoutArg, outArg, ev);
781
971
g_assert (ev->_major == CORBA_NO_EXCEPTION);
783
for (i=0;i<constants_SEQLEN;i++)
973
for (i=0;i<test_SequenceLen;i++)
784
974
g_assert (inArg[i]==constants_SEQ_LONG_IN[i]);
785
for (i=0;i<constants_SEQLEN;i++)
975
for (i=0;i<test_SequenceLen;i++)
786
976
g_assert (inoutArg[i]==constants_SEQ_LONG_INOUT_OUT[i]);
787
for (i=0;i<constants_SEQLEN;i++)
977
for (i=0;i<test_SequenceLen;i++)
788
978
g_assert (outArg[i]==constants_SEQ_LONG_OUT[i]);
789
for (i=0;i<constants_SEQLEN;i++)
979
for (i=0;i<test_SequenceLen;i++)
790
980
g_assert (retn[i]==constants_SEQ_LONG_RETN[i]);
792
982
CORBA_free (retn);
986
testOctetArray (test_ArrayServer objref,
987
CORBA_Environment *ev)
990
test_OctetArray inArg, inoutArg, outArg;
991
test_OctetArray_slice *retn;
993
for (i=0;i<test_SequenceLen;i++)
994
inArg[i] = constants_SEQ_OCTET_IN[i];
996
for (i=0;i<test_SequenceLen;i++)
997
inoutArg[i] = constants_SEQ_OCTET_INOUT_IN[i];
999
retn = test_ArrayServer_opOctetArray (objref, inArg, inoutArg, outArg, ev);
1000
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1002
for (i=0;i<test_SequenceLen;i++)
1003
g_assert (inArg[i]==constants_SEQ_OCTET_IN[i]);
1004
for (i=0;i<test_SequenceLen;i++)
1005
g_assert (inoutArg[i]==constants_SEQ_OCTET_INOUT_OUT[i]);
1006
for (i=0;i<test_SequenceLen;i++)
1007
g_assert (outArg[i]==constants_SEQ_OCTET_OUT[i]);
1008
for (i=0;i<test_SequenceLen;i++)
1009
g_assert (retn[i]==constants_SEQ_OCTET_RETN[i]);
1015
testFixedLengthArray (test_TestFactory factory,
1016
CORBA_Environment *ev)
1019
test_ArrayServer objref;
1020
d_print ("Testing arrays with fixed length members...\n");
1021
objref = test_TestFactory_getArrayServer (factory, ev);
1022
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1024
testLongArray (objref, ev);
1025
testOctetArray (objref, ev);
793
1027
CORBA_Object_release (objref, ev);
794
1028
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1378
static int done = 0;
1626
testIOR (test_TestFactory factory,
1627
CORBA_Environment *ev)
1630
CORBA_Object objref;
1632
d_print ("Testing IOR marshalling ...\n");
1634
objref = test_TestFactory_getBasicServer (factory, ev);
1635
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1637
/* Check to see that the ORB correctly marshals various obj references */
1638
count = test_BasicServer_getObjectCount (objref, ev);
1639
for (i = 0; i < count; i++)
1641
CORBA_Object test_obj;
1642
test_obj = test_BasicServer_getObject (objref, i, ev);
1643
if (ev->_major != CORBA_NO_EXCEPTION)
1644
g_error ("Error demarshalling object number %d: %s",
1645
i, CORBA_exception_id (ev));
1648
CORBA_Object_release (objref, ev);
1649
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1653
testLifeCycle (test_TestFactory factory,
1654
CORBA_Environment *ev)
1656
test_LifeCycleServer objref;
1657
ORBit_IMethod *method;
1659
d_print ("Testing LifeCycle bits...\n");
1661
objref = test_TestFactory_createLifeCycleServer (factory, ev);
1662
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1664
d_print (" pre gnome 2.4 stubs ...\n");
1667
method = &test_LifeCycleServer__iinterface.methods._buffer[1];
1668
g_assert (!strcmp (method->name, "deactivateUnrefOnReturn"));
1670
method = &test_LifeCycleServer__iinterface.methods._buffer[0];
1671
g_assert (!strcmp (method->name, "deactivateOnReturn"));
1674
ORBit_small_invoke_stub (objref, method, NULL, NULL, NULL, ev);
1675
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1678
CORBA_Object_release (objref, ev);
1680
d_print (" post gnome 2.4 stubs ...\n");
1682
objref = test_TestFactory_createLifeCycleServer (factory, ev);
1683
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1685
test_LifeCycleServer_deactivateOnReturn (objref, ev);
1686
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1688
CORBA_Object_release (objref, ev);
1691
static volatile int done = 0;
1381
1694
test_BasicServer_opExceptionA_cb (CORBA_Object object,
1490
1817
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1492
1819
/* While waiting do some normal methods */
1493
testString (factory, ev);
1820
testString (objref, ev);
1496
linc_main_iteration (TRUE);
1499
1825
test_BasicServer_opExceptionA (objref, ev);
1500
1826
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1503
linc_main_iteration (TRUE);
1505
1830
CORBA_Object_release (objref, ev);
1506
1831
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1510
broken_cb (LINCConnection *connection, gboolean *broken)
1835
broken_cb (LinkConnection *connection, gboolean *broken)
1512
1837
*broken = TRUE;
1516
testPingPong (test_TestFactory factory,
1841
testPingPong (test_TestFactory factory,
1842
gboolean thread_tests,
1517
1843
CORBA_Environment *ev)
1519
1845
test_PingPongServer r_objref, l_objref, objref;
1520
1846
CORBA_unsigned_long before_remote_hash;
1521
1847
CORBA_unsigned_long after_remote_hash;
1851
static volatile int warned = 0;
1853
g_warning ("No thread available to handle incoming requests");
1523
1858
d_print ("Testing ping pong invocations ...\n");
1524
1859
r_objref = test_TestFactory_createPingPongServer (factory, ev);
1525
1860
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1628
dummy_cb (LINCConnection *connection, gboolean *invoked)
1981
testPolicy (test_TestFactory factory,
1982
gboolean thread_tests,
1983
CORBA_Environment *ev)
1985
ORBitPolicy *policy;
1986
test_PingPongServer r_objref, l_objref;
1988
if (thread_tests || !thread_safe)
1991
d_print ("Testing policy code ...\n");
1992
r_objref = test_TestFactory_createPingPongServer (factory, ev);
1993
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1995
l_objref = TestFactory_createPingPongServer (NULL, ev);
1996
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1997
CORBA_Object_release (l_objref, ev); /* only want 1 ref */
1998
g_assert (ORBit_small_get_servant (l_objref) != NULL);
1999
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2001
policy = ORBit_policy_new (ORBIT_TYPE_POLICY_EX,
2002
"allow", global_poa, NULL);
2003
ORBit_object_set_policy (r_objref, policy);
2004
test_PingPongServer_pingPong (r_objref, l_objref, 64, ev);
2005
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2006
ORBit_object_set_policy (r_objref, NULL);
2007
ORBit_policy_unref (policy);
2009
CORBA_Object_release (l_objref, ev);
2010
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2012
CORBA_Object_release (r_objref, ev);
2013
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2017
dummy_cb (LinkConnection *connection, gboolean *invoked)
1630
2019
*invoked = TRUE;
1634
2023
testSegv (test_TestFactory factory,
1635
2024
CORBA_Environment *ev)
2026
gboolean broken = FALSE;
2027
gboolean invoked = FALSE;
1637
2032
d_print ("Testing Fatal invocations ...\n");
1639
gboolean broken = FALSE;
1640
gboolean invoked = FALSE;
1642
g_assert (ORBit_small_listen_for_broken (
1643
factory, G_CALLBACK (broken_cb), &broken) ==
1644
ORBIT_CONNECTION_CONNECTED);
1646
g_assert (ORBit_small_listen_for_broken (
1647
factory, G_CALLBACK (dummy_cb), &invoked) ==
1648
ORBIT_CONNECTION_CONNECTED);
1650
g_assert (ORBit_small_unlisten_for_broken (
1651
factory, G_CALLBACK (dummy_cb)) ==
1652
ORBIT_CONNECTION_CONNECTED);
1654
test_TestFactory_segv (factory, "do it!", ev);
1655
#ifdef DO_HARDER_SEGV
1656
g_assert (ev->_major == CORBA_SYSTEM_EXCEPTION);
1657
g_assert (!strcmp (ev->_id, "IDL:CORBA/COMM_FAILURE:1.0"));
1658
CORBA_exception_free (ev);
1660
g_assert (ORBit_small_get_connection_status (factory) ==
1661
ORBIT_CONNECTION_DISCONNECTED);
1663
g_assert (!invoked);
2034
g_assert (ORBit_small_listen_for_broken (
2035
factory, G_CALLBACK (broken_cb), &broken) ==
2036
ORBIT_CONNECTION_CONNECTED);
2038
g_assert (ORBit_small_listen_for_broken (
2039
factory, G_CALLBACK (dummy_cb), &invoked) ==
2040
ORBIT_CONNECTION_CONNECTED);
2042
g_assert (ORBit_small_unlisten_for_broken (
2043
factory, G_CALLBACK (dummy_cb)) ==
2044
ORBIT_CONNECTION_CONNECTED);
2045
g_assert (!CORBA_Object_non_existent (factory, ev));
2047
test_TestFactory_segv (factory, "do it!", ev);
2049
#ifdef DO_HARDER_SEGV // unusual
2050
g_assert (ev->_major == CORBA_SYSTEM_EXCEPTION);
2051
g_assert (!strcmp (ev->_id, "IDL:omg.org/CORBA/COMM_FAILURE:1.0"));
2052
CORBA_exception_free (ev);
2054
g_assert (ORBit_small_get_connection_status (factory) ==
2055
ORBIT_CONNECTION_DISCONNECTED);
2057
g_assert (!invoked);
1665
if (ORBit_small_unlisten_for_broken (
1666
factory, G_CALLBACK (broken_cb)) !=
1667
ORBIT_CONNECTION_CONNECTED)
1668
g_warning ("Unusual race in unlisten");
1669
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2059
if (ORBit_small_unlisten_for_broken (factory, G_CALLBACK (broken_cb)) !=
2060
ORBIT_CONNECTION_CONNECTED)
2061
g_warning ("Unusual race in unlisten");
2062
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1708
2100
CORBA_free (list);
2103
#define TIME_TEST_RUNS 1000
2106
test_time_noop (test_TestFactory factory,
2107
CORBA_Environment *ev)
2113
timer = g_timer_new ();
2114
g_timer_start (timer);
2115
for (i = 0; i < TIME_TEST_RUNS; i++)
2116
test_TestFactory_noOp (factory, ev);
2117
g_timer_stop (timer);
2118
fprintf (stderr, "In proc (fast) took %g msecs\n",
2119
g_timer_elapsed (timer, NULL) * 1000);
2121
old_flags = ORBit_small_flags;
2122
ORBit_small_flags |= ORBIT_SMALL_FORCE_GENERIC_MARSHAL;
2123
g_timer_reset (timer);
2124
g_timer_start (timer);
2125
for (i = 0; i < TIME_TEST_RUNS; i++)
2126
test_TestFactory_noOp (factory, ev);
2127
g_timer_stop (timer);
2128
fprintf (stderr, "In proc (slow) took %g msecs\n",
2129
g_timer_elapsed (timer, NULL) * 1000);
2130
ORBit_small_flags = old_flags;
2132
g_timer_destroy (timer);
2136
test_basic_server (test_TestFactory factory,
2137
CORBA_Environment *ev)
2139
test_BasicServer objref;
2141
objref = test_TestFactory_getBasicServer (factory, ev);
2142
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2143
g_assert (objref != CORBA_OBJECT_NIL);
2144
g_assert (CORBA_Object_is_a (objref, "IDL:orbit/test/BasicServer:1.0", ev));
2145
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2147
testAttribute (objref, ev);
2148
testString (objref, ev);
2149
testLong (objref, ev);
2150
testLongLong (objref, ev);
2151
testFloat (objref, ev);
2152
testDouble (objref, ev);
2153
testLongDouble (objref, ev);
2154
testEnum (objref, ev);
2155
testException (objref, ev);
2156
testBoolAlign (objref, ev);
2158
CORBA_Object_release (objref, ev);
2159
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2163
testDerivedServer (test_TestFactory factory,
2164
CORBA_Environment *ev)
2167
PortableServer_ServantBase *servant;
2168
PortableServer_ObjectId *oid;
2169
ORBit_POAObject pobj;
2170
PortableServer_ServantBase__epv DerivedServer_base_epv = {NULL, simple_finalize, NULL};
2171
POA_test_BasicServer__vepv DerivedServer_vepv = { &DerivedServer_base_epv, NULL };
2173
d_print ("Testing DerivedServer ...\n");
2175
servant = SIMPLE_SERVANT_NEW (DerivedServer);
2176
obj = create_object (global_poa, servant, ev);
2177
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2179
g_assert (test_C1__classid != 0);
2180
g_assert (test_B1__classid != 0);
2181
g_assert (test_B2__classid != 0);
2182
g_assert (test_DerivedServer__classid != 0);
2184
pobj = (ORBit_POAObject) obj->adaptor_obj;
2185
g_assert (pobj->vepvmap_cache [test_DerivedServer__classid] != 0);
2186
g_assert (pobj->vepvmap_cache [test_C1__classid] != 0);
2187
g_assert (pobj->vepvmap_cache [test_B1__classid] != 0);
2188
g_assert (pobj->vepvmap_cache [test_B2__classid] != 0);
2190
CORBA_Object_release (obj, ev);
2191
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2193
oid = PortableServer_POA_servant_to_id (global_poa, servant, ev);
2194
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2195
PortableServer_POA_deactivate_object (global_poa, oid, ev);
2196
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2202
testNonExistent (test_TestFactory factory, CORBA_Environment *ev)
2204
CORBA_Object non_existent;
2205
const char *non_existent_ior =
2206
"IOR:010000001f00000049444c3a6f726269742f746573742f54657"
2207
"374466163746f72793a312e300000030000000054424f6400000001"
2208
"01020005000000554e495800000000160000006c6f63616c686f737"
2209
"42e6c6f63616c646f6d61696e0000002d0000002f746d702f6f7262"
2210
"69742d6d69636861656c2f6c696e632d363733322d302d373362323"
2211
"966373333316662390000000000000000caaedfba58000000010102"
2212
"002d0000002f746d702f6f726269742d6d69636861656c2f6c696e6"
2213
"32d363733322d302d37336232396637333331666239000000001c00"
2214
"000000000000331c40f8ba0fa828dc2928282828282808000000db7"
2215
"e269601000000480000000100000002000000050000001c00000000"
2216
"000000331c40f8ba0fa828dc2928282828282808000000db7e26960"
2217
"1000000140000000100000001000105000000000901010000000000";
2221
d_print ("Testing CORBA_Object_non_existent ...\n");
2223
non_existent = CORBA_ORB_string_to_object
2224
(global_orb, non_existent_ior, ev);
2225
g_assert (CORBA_Object_non_existent (non_existent, ev));
2226
CORBA_Object_release (non_existent, NULL);
2230
testWithException (test_TestFactory factory, CORBA_Environment *ev)
2233
CORBA_Object objref;
2235
CORBA_exception_set (ev, CORBA_SYSTEM_EXCEPTION,
2236
ex_CORBA_OBJECT_NOT_EXIST, NULL);
2237
objref = test_TestFactory_getBasicServer (factory, ev);
2238
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2239
CORBA_Object_release (objref, ev);
2240
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2242
old_flags = ORBit_small_flags;
2243
ORBit_small_flags |= ORBIT_SMALL_FORCE_GENERIC_MARSHAL;
2245
CORBA_exception_set (ev, CORBA_SYSTEM_EXCEPTION,
2246
ex_CORBA_OBJECT_NOT_EXIST, NULL);
2247
objref = test_TestFactory_getBasicServer (factory, ev);
2248
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2249
CORBA_Object_release (objref, ev);
2250
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2252
ORBit_small_flags = old_flags;
1712
2256
run_tests (test_TestFactory factory,
2257
gboolean thread_tests,
1713
2258
CORBA_Environment *ev)
1717
2262
for (i = 0; i < NUM_RUNS; i++) {
2263
testSequenceHelpers ();
1719
testAttribute (factory, ev);
1720
testString (factory, ev);
1721
testLong (factory, ev);
1722
testLongLong (factory, ev);
1723
testFloat (factory, ev);
1724
testDouble (factory, ev);
1725
testLongDouble (factory, ev);
1726
testEnum (factory, ev);
1727
testException (factory, ev);
2265
test_basic_server (factory, ev);
2266
testIsA (factory, ev);
1728
2267
testFixedLengthStruct (factory, ev);
1729
2268
testVariableLengthStruct (factory, ev);
1730
2269
testCompoundStruct (factory, ev);
2270
testAlignHoleStruct (factory, ev);
1731
2271
testObjectStruct (factory, ev);
1732
2272
testStructAny (factory, ev);
1733
2273
testUnboundedSequence (factory, ev);
1734
2274
testBoundedSequence (factory, ev);
2275
testAnySequence (factory, ev);
1735
2276
testFixedLengthUnion (factory, ev);
1736
2277
testVariableLengthUnion (factory, ev);
1737
2278
testMiscUnions (factory, ev);
1796
2384
main (int argc, char *argv [])
1798
CORBA_Environment ev;
1799
test_TestFactory factory;
1801
CORBA_exception_init (&ev);
1803
/* Tell linc we want a threaded ORB */
1804
linc_set_threaded (TRUE);
1806
global_orb = CORBA_ORB_init (&argc, argv, "", &ev);
1807
g_assert (ev._major == CORBA_NO_EXCEPTION);
1810
test_initial_references (global_orb, &ev);
2386
CORBA_Environment ev[1];
2387
test_TestFactory factory;
2388
ORBit_IInterfaces *interfaces = NULL;
2389
gboolean gen_imodule = FALSE;
2393
CORBA_exception_init (ev);
2395
/* FIXME - make this work nicely sometime.
2396
global_orb = CORBA_ORB_init (&argc, argv, "", ev);
2397
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2398
CORBA_Object_release (global_orb, ev);
2399
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2401
for (i = 0; i < argc; i++) {
2402
if (!strcmp (argv [i], "--gen-imodule"))
2404
if (!strcmp (argv [i], "--thread-safe"))
2406
if (!strcmp (argv [i], "--thread-tests")) {
2408
thread_tests = TRUE;
2413
orb_name = "orbit-local-orb";
2415
orb_name = "orbit-local-non-threaded-orb";
2417
global_orb = CORBA_ORB_init (&argc, argv, orb_name, ev);
2418
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2420
/* if (thread_tests) {
2421
g_warning ("FIXME: testing only");
2422
link_set_io_thread (TRUE);
2426
CORBA_sequence_CORBA_TypeCode *typecodes = NULL;
2428
interfaces = ORBit_iinterfaces_from_file (
2429
TEST_SRCDIR "/everything.idl", NULL, &typecodes);
2430
g_assert (interfaces != NULL);
2431
g_assert (typecodes != NULL);
2433
CORBA_free (typecodes);
2435
init_iinterfaces (interfaces, ev);
2439
test_initial_references (global_orb, ev);
1812
2441
free (malloc (8)); /* -lefence */
1840
2475
fclose (infile);
1841
2476
ior [size] = '\0'; /* insure that string is terminated correctly */
1843
factory = CORBA_ORB_string_to_object (global_orb, ior, &ev);
1844
g_assert (ev._major == CORBA_NO_EXCEPTION);
2478
factory = CORBA_ORB_string_to_object (global_orb, ior, ev);
2479
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1846
if (CORBA_Object_non_existent (factory, &ev))
1847
g_error ("Start the server before running the client");
1848
g_assert (ev._major == CORBA_NO_EXCEPTION);
2481
if (CORBA_Object_non_existent (factory, ev))
2482
g_error ("Can't contact the server");
2483
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1851
run_tests (factory, &ev);
1853
CORBA_Object_release (factory, &ev);
1854
g_assert (ev._major == CORBA_NO_EXCEPTION);
1856
g_warning ("released factory");
1858
CORBA_Object_release ((CORBA_Object) global_poa, &ev);
1859
g_assert (ev._major == CORBA_NO_EXCEPTION);
2485
run_tests (factory, FALSE, ev);
2487
run_threaded_tests (factory, ev);
2488
testSegv (factory, ev);
2490
CORBA_Object_release (factory, ev);
2491
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2494
CORBA_free (interfaces);
2496
CORBA_Object_release ((CORBA_Object) global_poa, ev);
2497
g_assert (ev->_major == CORBA_NO_EXCEPTION);
1861
CORBA_ORB_destroy (global_orb, &ev);
1862
CORBA_exception_free (&ev);
1864
CORBA_Object_release ((CORBA_Object) global_orb, &ev);
1865
g_assert (ev._major == CORBA_NO_EXCEPTION);
1867
CORBA_exception_free (&ev);
2499
CORBA_ORB_destroy (global_orb, ev);
2500
CORBA_exception_free (ev);
2502
CORBA_Object_release ((CORBA_Object) global_orb, ev);
2503
g_assert (ev->_major == CORBA_NO_EXCEPTION);
2505
CORBA_exception_free (ev);
1869
2507
d_print ("All tests passed successfully\n");