summaryrefslogtreecommitdiff
path: root/python/test/Ice/asyncio/AllTests.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/test/Ice/asyncio/AllTests.py')
-rw-r--r--python/test/Ice/asyncio/AllTests.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/python/test/Ice/asyncio/AllTests.py b/python/test/Ice/asyncio/AllTests.py
new file mode 100644
index 00000000000..604d8b8aeb7
--- /dev/null
+++ b/python/test/Ice/asyncio/AllTests.py
@@ -0,0 +1,87 @@
+#
+# Copyright (c) ZeroC, Inc. All rights reserved.
+#
+
+import sys
+import asyncio
+import Ice
+import Test
+
+
+def test(b):
+ if not b:
+ raise RuntimeError('test assertion failed')
+
+
+async def allTestsAsync(helper, communicator):
+
+ sref = "test:{0}".format(helper.getTestEndpoint(num=0))
+ obj = communicator.stringToProxy(sref)
+ test(obj)
+
+ p = Test.TestIntfPrx.uncheckedCast(obj)
+
+ sys.stdout.write("testing invocation... ")
+ sys.stdout.flush()
+ test(await Ice.wrap_future(p.opAsync()) == 5)
+ await Ice.wrap_future(p.sleepAsync(0))
+ await Ice.wrap_future(p.sleepAsync(20))
+ test(await Ice.wrap_future(p.callOpOnAsync(p)) == 5)
+ print("ok")
+
+ sys.stdout.write("testing exceptions... ")
+ sys.stdout.flush()
+ try:
+ await Ice.wrap_future(p.throwUserException1())
+ test(False)
+ except Test.TestException:
+ pass
+ try:
+ await Ice.wrap_future(p.throwUserException2())
+ test(False)
+ except Test.TestException:
+ pass
+ try:
+ await Ice.wrap_future(p.throwUnhandledException1())
+ test(False)
+ except Ice.UnknownException:
+ pass
+ try:
+ await Ice.wrap_future(p.throwUnhandledException2())
+ test(False)
+ except Ice.UnknownException:
+ pass
+ print("ok")
+
+ sys.stdout.write("testing cancellation... ")
+ sys.stdout.flush()
+
+ future = p.sleepAsync(500)
+ asyncioFuture = Ice.wrap_future(future)
+ future.cancel()
+ try:
+ await asyncioFuture
+ test(False)
+ except asyncio.CancelledError:
+ test(future.cancelled() and asyncioFuture.cancelled())
+
+ future = p.sleepAsync(500)
+ asyncioFuture = Ice.wrap_future(future)
+ asyncioFuture.cancel()
+ try:
+ await asyncioFuture
+ test(False)
+ except asyncio.CancelledError:
+ # Wait a little to ensure the cancellation propagates to the Ice future
+ await asyncio.sleep(0.01)
+ test(future.cancelled() and asyncioFuture.cancelled())
+
+ # Try to cancel a done future
+ future = p.opAsync()
+ while not future.done():
+ await asyncio.sleep(0.01)
+ Ice.wrap_future(future).cancel()
+
+ print("ok")
+
+ await Ice.wrap_future(p.shutdownAsync())