1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
import unittest
import CORBA
import BasicTestIDL, BasicTestIDL__POA,sys
class Foo(BasicTestIDL__POA.Foo):
pass
class Bar:
pass
class ORBPOATest(unittest.TestCase):
orb = CORBA.ORB_init([],CORBA.ORB_ID)
poa = orb.resolve_initial_references("RootPOA")
def test_P1_s2o_o2s(self):
# stress gives me a MARSHAL error?
f = Foo()
ref = f._this()
#assert(ref._is_equivalent(self.orb.string_to_object(self.orb.object_to_string(ref))))
#assert(ref._is_equivalent(self.orb.string_to_object(self.orb.object_to_string(ref))))
#self.orb.string_to_object(self.orb.object_to_string(ref))
# This leaks inside ORBit - O-P bug #4, GNOME bug #55907
self.orb.object_to_string(ref)
self.poa.deactivate_object(f)
def test_P2_bad_string_to_object(self):
# Catch stupid input
self.assertRaises(TypeError,self.orb.string_to_object,self.orb)
# The following exposes a bug in ORBit. No work-around available
# in O-P: http://bugzilla.gnome.org/show_bug.cgi?id=55729
#self.assertRaises(CORBA.MARSHAL,self.orb.string_to_object,"foo")
def test_P3_bad_object_to_string(self):
class Foo(BasicTestIDL__POA.Foo):
pass
f = Foo()
self.assertRaises(CORBA.BAD_PARAM,self.orb.object_to_string,f)
def test_P4_bad_resolve_refs(self):
# Causes segfault in ORBit (gnome bugzilla #55726)
# O-P implements a work-around
self.assertRaises(CORBA.BAD_PARAM,
self.orb.resolve_initial_references,"XXX")
def test_P5_resolve_ns(self):
# breaks on stress - but why?
ns = self.orb.resolve_initial_references("NameService")
# how do we import CosNaming and make this work?
def test_P6_bad_deactivate(self):
f = Foo()
self.assertRaises(CORBA.BAD_INV_ORDER, self.poa.deactivate_object,f)
def test_P7_bad_activate(self):
self.assertRaises(CORBA.BAD_PARAM,self.poa.activate_object,self.orb)
def test_P7_bad_activate(self):
self.assertRaises(CORBA.BAD_PARAM,self.poa.activate_object,"crack!")
def test_P8_activation(self):
g = Foo()
self.poa.activate_object(g)
# check implicit reference creation
assert(self.poa.servant_to_reference(g)._is_equivalent(g._this()))
assert(g._this()._is_equivalent(self.poa.servant_to_reference(g)))
self.poa.deactivate_object(g)
def test_P9_activation_equalities(self):
g = Foo()
g._this()
f = Foo()
f._this()
# check reference inequality
assert(self.poa.servant_to_reference(g) != f._this())
self.poa.deactivate_object(f)
self.poa.deactivate_object(g)
def test_P10_bad_serv_to_ref(self):
g = Foo()
self.assertRaises(CORBA.BAD_PARAM,
self.poa.servant_to_reference,"foo")
self.assertRaises(CORBA.BAD_PARAM,
self.poa.servant_to_reference,self.orb)
def test_P11_bad_ref_to_serv(self):
g = Foo()
# orb isn't a CORBA object ref
self.assertRaises(CORBA.BAD_PARAM,
self.poa.reference_to_servant,self.orb)
# neither is g - it's a servant
self.assertRaises(CORBA.BAD_PARAM,
self.poa.reference_to_servant,g)
# neither is crack - it's a drug
self.assertRaises(CORBA.BAD_PARAM,
self.poa.reference_to_servant,"crack!")
def test_P12_dead_ref_to_serv(self):
g = Foo()
r = g._this()
self.poa.deactivate_object(g)
# FIXME: SHOULD THIS FAIL?
self.poa.reference_to_servant(r)
def test_P13_r2s_s2r(self):
# check objref and back
g = Foo()
g._this()
assert(g == \
self.poa.reference_to_servant(self.poa.servant_to_reference(g)))
self.poa.deactivate_object(g)
def test_P14_activate_with_id(self):
# FIXME: test proper function when it's there
#self.poa.activate_object_with_id()
pass
def test_P15_deactivate(self):
f = Foo()
f._this()
self.poa.deactivate_object(f)
self.poa.activate_object(f)
self.poa.deactivate_object(f)
def test_P16_multiple_implicit_activation(self):
f = Foo()
f._this()
f._this()
f._this()
f._this()
# though implicit activation should allow multiple invocations,
# explicit activation through poa should not.
self.assertRaises(CORBA.BAD_INV_ORDER,
self.poa.activate_object,f)
self.poa.deactivate_object(f)
def test_P17_DoubleActivate(self):
f = Foo()
self.poa.activate_object(f)
self.assertRaises(CORBA.BAD_INV_ORDER, self.poa.activate_object,f)
self.poa.deactivate_object(f)
def test_P18_DoubleDeactivate(self):
f = Foo()
f._this()
self.poa.deactivate_object(f)
self.assertRaises(CORBA.BAD_INV_ORDER,self.poa.deactivate_object,f)
def test_P19_ActivatePOAManager(self):
mgr = self.poa._get_the_POAManager()
mgr.activate()
suite = unittest.makeSuite(ORBPOATest,'test')
if __name__ == "__main__":
runner = unittest.TextTestRunner()
runner.run(suite)
|