summaryrefslogtreecommitdiff
path: root/python/test/Ice/exceptions/AllTests.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/test/Ice/exceptions/AllTests.py')
-rw-r--r--python/test/Ice/exceptions/AllTests.py721
1 files changed, 721 insertions, 0 deletions
diff --git a/python/test/Ice/exceptions/AllTests.py b/python/test/Ice/exceptions/AllTests.py
new file mode 100644
index 00000000000..4522a0de731
--- /dev/null
+++ b/python/test/Ice/exceptions/AllTests.py
@@ -0,0 +1,721 @@
+# **********************************************************************
+#
+# Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+import Ice, Test, threading, sys, array
+
+def test(b):
+ if not b:
+ raise RuntimeError('test assertion failed')
+
+class EmptyI(Test.Empty):
+ pass
+
+class ServantLocatorI(Ice.ServantLocator):
+ def locate(self, current):
+ return None
+
+ def finished(self, current, servant, cookie):
+ pass
+
+ def deactivate(self, category):
+ pass
+
+class ObjectFactoryI(Ice.ObjectFactory):
+ def create(id):
+ return None
+
+ def destroy():
+ pass
+
+class CallbackBase:
+ def __init__(self):
+ self._called = False
+ self._cond = threading.Condition()
+
+ def check(self):
+ self._cond.acquire()
+ try:
+ while not self._called:
+ self._cond.wait()
+ self._called = False
+ finally:
+ self._cond.release()
+
+ def called(self):
+ self._cond.acquire()
+ self._called = True
+ self._cond.notify()
+ self._cond.release()
+
+class Callback(CallbackBase):
+ def __init__(self, communicator=None):
+ CallbackBase.__init__(self)
+ self._communicator = communicator
+
+ def response(self):
+ test(False)
+
+ def exception_AasA(self, ex):
+ test(isinstance(ex, Test.A))
+ test(ex.aMem == 1)
+ self.called()
+
+ def exception_AorDasAorD(self, ex):
+ try:
+ raise ex
+ except Test.A as ex:
+ test(ex.aMem == 1)
+ except Test.D as ex:
+ test(ex.dMem == -1)
+ except:
+ test(False)
+ self.called()
+
+ def exception_BasB(self, ex):
+ try:
+ raise ex
+ except Test.B as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ except:
+ test(False)
+ self.called()
+
+ def exception_CasC(self, ex):
+ try:
+ raise ex
+ except Test.C as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ test(ex.cMem == 3)
+ except:
+ test(False)
+ self.called()
+
+ def exception_ModA(self, ex):
+ try:
+ raise ex
+ except Test.Mod.A as ex:
+ test(ex.aMem == 1)
+ test(ex.a2Mem == 2)
+ except Ice.OperationNotExistException:
+ #
+ # This operation is not supported in Java.
+ #
+ pass
+ except:
+ test(False)
+ self.called()
+
+ def exception_BasA(self, ex):
+ try:
+ raise ex
+ except Test.B as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ except:
+ test(False)
+ self.called()
+
+ def exception_CasA(self, ex):
+ try:
+ raise ex
+ except Test.C as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ test(ex.cMem == 3)
+ except:
+ test(False)
+ self.called()
+
+ def exception_CasB(self, ex):
+ try:
+ raise ex
+ except Test.C as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ test(ex.cMem == 3)
+ except:
+ test(False)
+ self.called()
+
+ def exception_UndeclaredA(self, ex):
+ try:
+ raise ex
+ except Ice.UnknownUserException:
+ pass
+ except:
+ test(False)
+ self.called()
+
+ def exception_UndeclaredB(self, ex):
+ try:
+ raise ex
+ except Ice.UnknownUserException:
+ pass
+ except:
+ test(False)
+ self.called()
+
+ def exception_UndeclaredC(self, ex):
+ try:
+ raise ex
+ except Ice.UnknownUserException:
+ pass
+ except:
+ test(False)
+ self.called()
+
+ def exception_AasAObjectNotExist(self, ex):
+ try:
+ raise ex
+ except Ice.ObjectNotExistException as ex:
+ id = self._communicator.stringToIdentity("does not exist")
+ test(ex.id == id)
+ except:
+ test(False)
+ self.called()
+
+ def exception_AasAFacetNotExist(self, ex):
+ try:
+ raise ex
+ except Ice.FacetNotExistException as ex:
+ test(ex.facet == "no such facet")
+ except:
+ test(False)
+ self.called()
+
+ def exception_noSuchOperation(self, ex):
+ try:
+ raise ex
+ except Ice.OperationNotExistException as ex:
+ test(ex.operation == "noSuchOperation")
+ except:
+ test(False)
+ self.called()
+
+ def exception_LocalException(self, ex):
+ try:
+ raise ex
+ except Ice.UnknownLocalException as ex:
+ pass
+ except Ice.OperationNotExistException as ex:
+ pass
+ except:
+ test(False)
+ self.called()
+
+ def exception_NonIceException(self, ex):
+ try:
+ raise ex
+ except Ice.UnknownException as ex:
+ pass
+ except:
+ test(False)
+ self.called()
+
+def allTests(communicator):
+ sys.stdout.write("testing servant registration exceptions... ")
+ sys.stdout.flush()
+ communicator.getProperties().setProperty("TestAdapter1.Endpoints", "default")
+ adapter = communicator.createObjectAdapter("TestAdapter1")
+ obj = EmptyI()
+ adapter.add(obj, communicator.stringToIdentity("x"))
+ try:
+ adapter.add(obj, communicator.stringToIdentity("x"))
+ test(false)
+ except Ice.AlreadyRegisteredException:
+ pass
+
+ try:
+ adapter.add(obj, communicator.stringToIdentity(""))
+ test(false)
+ except Ice.IllegalIdentityException as ex:
+ test(ex.id.name == "")
+
+ try:
+ adapter.add(None, communicator.stringToIdentity("x"))
+ test(false)
+ except Ice.IllegalServantException:
+ pass
+
+
+ adapter.remove(communicator.stringToIdentity("x"))
+ try:
+ adapter.remove(communicator.stringToIdentity("x"))
+ test(false)
+ except Ice.NotRegisteredException:
+ pass
+
+ adapter.deactivate()
+ print("ok")
+
+ sys.stdout.write("testing servant locator registrations exceptions... ")
+ sys.stdout.flush()
+ communicator.getProperties().setProperty("TestAdapter2.Endpoints", "default")
+ adapter = communicator.createObjectAdapter("TestAdapter2")
+ loc = ServantLocatorI()
+ adapter.addServantLocator(loc, "x")
+ try:
+ adapter.addServantLocator(loc, "x")
+ test(false)
+ except Ice.AlreadyRegisteredException:
+ pass
+
+ adapter.deactivate()
+ print("ok")
+
+ sys.stdout.write("testing object factory registration exception... ")
+ sys.stdout.flush()
+ of = ObjectFactoryI()
+ communicator.addObjectFactory(of, "x")
+ try:
+ communicator.addObjectFactory(of, "x")
+ test(false)
+ except Ice.AlreadyRegisteredException:
+ pass
+ print("ok")
+
+ sys.stdout.write("testing stringToProxy... ")
+ sys.stdout.flush()
+ ref = "thrower:default -p 12010"
+ base = communicator.stringToProxy(ref)
+ test(base)
+ print("ok")
+
+ sys.stdout.write("testing checked cast... ")
+ sys.stdout.flush()
+ thrower = Test.ThrowerPrx.checkedCast(base)
+ test(thrower)
+ test(thrower == base)
+ print("ok")
+
+ sys.stdout.write("catching exact types... ")
+ sys.stdout.flush()
+
+ try:
+ thrower.throwAasA(1)
+ test(False)
+ except Test.A as ex:
+ test(ex.aMem == 1)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwAorDasAorD(1)
+ test(False)
+ except Test.A as ex:
+ test(ex.aMem == 1)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwAorDasAorD(-1)
+ test(False)
+ except Test.D as ex:
+ test(ex.dMem == -1)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwBasB(1, 2)
+ test(False)
+ except Test.B as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwCasC(1, 2, 3)
+ test(False)
+ except Test.C as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ test(ex.cMem == 3)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwModA(1, 2)
+ test(False)
+ except Test.Mod.A as ex:
+ test(ex.aMem == 1)
+ test(ex.a2Mem == 2)
+ except Ice.OperationNotExistException:
+ #
+ # This operation is not supported in Java.
+ #
+ pass
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ print("ok")
+
+ sys.stdout.write("catching base types... ")
+ sys.stdout.flush()
+
+ try:
+ thrower.throwBasB(1, 2)
+ test(False)
+ except Test.A as ex:
+ test(ex.aMem == 1)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwCasC(1, 2, 3)
+ test(False)
+ except Test.B as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwModA(1, 2)
+ test(False)
+ except Test.A as ex:
+ test(ex.aMem == 1)
+ except Ice.OperationNotExistException:
+ #
+ # This operation is not supported in Java.
+ #
+ pass
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ print("ok")
+
+ sys.stdout.write("catching derived types... ")
+ sys.stdout.flush()
+
+ try:
+ thrower.throwBasA(1, 2)
+ test(False)
+ except Test.B as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwCasA(1, 2, 3)
+ test(False)
+ except Test.C as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ test(ex.cMem == 3)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwCasB(1, 2, 3)
+ test(False)
+ except Test.C as ex:
+ test(ex.aMem == 1)
+ test(ex.bMem == 2)
+ test(ex.cMem == 3)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ print("ok")
+
+ if thrower.supportsUndeclaredExceptions():
+ sys.stdout.write("catching unknown user exception... ")
+ sys.stdout.flush()
+
+ try:
+ thrower.throwUndeclaredA(1)
+ test(False)
+ except Ice.UnknownUserException:
+ pass
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwUndeclaredB(1, 2)
+ test(False)
+ except Ice.UnknownUserException:
+ pass
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwUndeclaredC(1, 2, 3)
+ test(False)
+ except Ice.UnknownUserException:
+ pass
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ print("ok")
+
+
+ if thrower.ice_getConnection():
+ sys.stdout.write("testing memory limit marshal exception...");
+ sys.stdout.flush();
+
+ try:
+ thrower.throwMemoryLimitException(array.array('B'));
+ test(False)
+ except Ice.MemoryLimitException:
+ pass
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwMemoryLimitException(bytearray(20 * 1024)) # 20KB
+ test(False)
+ except Ice.ConnectionLostException:
+ pass
+ except:
+ test(False)
+
+ print("ok");
+
+ sys.stdout.write("catching object not exist exception... ")
+ sys.stdout.flush()
+
+ id = communicator.stringToIdentity("does not exist")
+ try:
+ thrower2 = Test.ThrowerPrx.uncheckedCast(thrower.ice_identity(id))
+ thrower2.throwAasA(1)
+# thrower2.ice_ping()
+ test(False)
+ except Ice.ObjectNotExistException as ex:
+ test(ex.id == id)
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ print("ok")
+
+ sys.stdout.write("catching facet not exist exception... ")
+ sys.stdout.flush()
+
+ try:
+ thrower2 = Test.ThrowerPrx.uncheckedCast(thrower, "no such facet")
+ try:
+ thrower2.ice_ping()
+ test(False)
+ except Ice.FacetNotExistException as ex:
+ test(ex.facet == "no such facet")
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ print("ok")
+
+ sys.stdout.write("catching operation not exist exception... ")
+ sys.stdout.flush()
+
+ try:
+ thrower2 = Test.WrongOperationPrx.uncheckedCast(thrower)
+ thrower2.noSuchOperation()
+ test(False)
+ except Ice.OperationNotExistException as ex:
+ test(ex.operation == "noSuchOperation")
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ print("ok")
+
+ sys.stdout.write("catching unknown local exception... ")
+ sys.stdout.flush()
+
+ try:
+ thrower.throwLocalException()
+ test(False)
+ except Ice.UnknownLocalException:
+ pass
+ except:
+ print(sys.exc_info())
+ test(False)
+ try:
+ thrower.throwLocalExceptionIdempotent()
+ test(False)
+ except Ice.UnknownLocalException:
+ pass
+ except Ice.OperationNotExistException:
+ pass
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ print("ok")
+
+ sys.stdout.write("catching unknown non-Ice exception... ")
+ sys.stdout.flush()
+
+ try:
+ thrower.throwNonIceException()
+ test(False)
+ except Ice.UnknownException:
+ pass
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ print("ok")
+
+ sys.stdout.write("testing asynchronous exceptions... ")
+ sys.stdout.flush()
+
+ try:
+ thrower.throwAfterResponse()
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ try:
+ thrower.throwAfterException()
+ except Test.A:
+ pass
+ except:
+ print(sys.exc_info())
+ test(False)
+
+ print("ok")
+
+ sys.stdout.write("catching exact types with AMI mapping... ")
+ sys.stdout.flush()
+
+ cb = Callback()
+ thrower.begin_throwAasA(1, cb.response, cb.exception_AasA)
+ cb.check()
+
+ cb = Callback()
+ thrower.begin_throwAorDasAorD(1, cb.response, cb.exception_AorDasAorD)
+ cb.check()
+
+ cb = Callback()
+ thrower.begin_throwAorDasAorD(-1, cb.response, cb.exception_AorDasAorD)
+ cb.check()
+
+ cb = Callback()
+ thrower.begin_throwBasB(1, 2, cb.response, cb.exception_BasB)
+ cb.check()
+
+ cb = Callback()
+ thrower.begin_throwCasC(1, 2, 3, cb.response, cb.exception_CasC)
+ cb.check()
+
+ cb = Callback()
+ thrower.begin_throwModA(1, 2, cb.response, cb.exception_ModA)
+ cb.check()
+
+ print("ok")
+
+ sys.stdout.write("catching derived types with AMI mapping... ")
+ sys.stdout.flush()
+
+ cb = Callback()
+ thrower.begin_throwBasA(1, 2, cb.response, cb.exception_BasA)
+ cb.check()
+
+ cb = Callback()
+ thrower.begin_throwCasA(1, 2, 3, cb.response, cb.exception_CasA)
+ cb.check()
+
+ cb = Callback()
+ thrower.begin_throwCasB(1, 2, 3, cb.response, cb.exception_CasB)
+ cb.check()
+
+ print("ok")
+
+ if thrower.supportsUndeclaredExceptions():
+ sys.stdout.write("catching unknown user exception with AMI mapping... ")
+ sys.stdout.flush()
+
+ cb = Callback()
+ thrower.begin_throwUndeclaredA(1, cb.response, cb.exception_UndeclaredA)
+ cb.check()
+
+ cb = Callback()
+ thrower.begin_throwUndeclaredB(1, 2, cb.response, cb.exception_UndeclaredB)
+ cb.check()
+
+ cb = Callback()
+ thrower.begin_throwUndeclaredC(1, 2, 3, cb.response, cb.exception_UndeclaredC)
+ cb.check()
+
+ print("ok")
+
+ sys.stdout.write("catching object not exist exception with AMI mapping... ")
+ sys.stdout.flush()
+
+ id = communicator.stringToIdentity("does not exist")
+ thrower2 = Test.ThrowerPrx.uncheckedCast(thrower.ice_identity(id))
+ cb = Callback(communicator)
+ thrower2.begin_throwAasA(1, cb.response, cb.exception_AasAObjectNotExist)
+ cb.check()
+
+ print("ok")
+
+ sys.stdout.write("catching facet not exist exception with AMI mapping... ")
+ sys.stdout.flush()
+
+ thrower2 = Test.ThrowerPrx.uncheckedCast(thrower, "no such facet")
+ cb = Callback()
+ thrower2.begin_throwAasA(1, cb.response, cb.exception_AasAFacetNotExist)
+ cb.check()
+
+ print("ok")
+
+ sys.stdout.write("catching operation not exist exception with AMI mapping... ")
+ sys.stdout.flush()
+
+ cb = Callback()
+ thrower4 = Test.WrongOperationPrx.uncheckedCast(thrower)
+ thrower4.begin_noSuchOperation(cb.response, cb.exception_noSuchOperation)
+ cb.check()
+
+ print("ok")
+
+ sys.stdout.write("catching unknown local exception with AMI mapping... ")
+ sys.stdout.flush()
+
+ cb = Callback()
+ thrower.begin_throwLocalException(cb.response, cb.exception_LocalException)
+ cb.check()
+
+ cb = Callback()
+ thrower.begin_throwLocalExceptionIdempotent(cb.response, cb.exception_LocalException)
+ cb.check()
+
+ print("ok")
+
+ sys.stdout.write("catching unknown non-Ice exception with AMI mapping... ")
+ sys.stdout.flush()
+
+ cb = Callback()
+ thrower.begin_throwNonIceException(cb.response, cb.exception_NonIceException)
+ cb.check()
+
+ print("ok")
+
+ return thrower