diff options
author | Matthew Newhook <matthew@zeroc.com> | 2015-03-21 15:35:40 -0230 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2015-03-21 15:35:40 -0230 |
commit | 630a37d2fe66f24518299e705f958b571803c522 (patch) | |
tree | 969723791bdc4d73bb099c19d45554d0ca241ad9 /python/test/Ice/servantLocator/TestI.py | |
parent | Fix some README.md markdown formatting (diff) | |
download | ice-630a37d2fe66f24518299e705f958b571803c522.tar.bz2 ice-630a37d2fe66f24518299e705f958b571803c522.tar.xz ice-630a37d2fe66f24518299e705f958b571803c522.zip |
py -> python
rb -> ruby
objc -> objective-c
cs -> csharp
Diffstat (limited to 'python/test/Ice/servantLocator/TestI.py')
-rw-r--r-- | python/test/Ice/servantLocator/TestI.py | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/python/test/Ice/servantLocator/TestI.py b/python/test/Ice/servantLocator/TestI.py new file mode 100644 index 00000000000..19e724fd5d0 --- /dev/null +++ b/python/test/Ice/servantLocator/TestI.py @@ -0,0 +1,158 @@ +# ********************************************************************** +# +# 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 os, sys, traceback, time +import Ice, Test + +def test(b): + if not b: + raise RuntimeError('test assertion failed') + +class TestI(Test.TestIntf): + + def requestFailedException(self, current=None): + pass + + def unknownUserException(self, current=None): + pass + + def unknownLocalException(self, current=None): + pass + + def unknownException(self, current=None): + pass + + def localException(self, current=None): + pass + + def userException(self, current=None): + pass + + def pythonException(self, current=None): + pass + + def unknownExceptionWithServantException(self, current=None): + raise Ice.ObjectNotExistException() + + def impossibleException(self, throw, current=None): + if throw: + raise Test.TestImpossibleException() + # + # Return a value so we can be sure that the stream position + # is reset correctly if finished() throws. + # + return "Hello" + + def intfUserException(self, throw, current=None): + if throw: + raise Test.TestIntfUserException() + # + # Return a value so we can be sure that the stream position + # is reset correctly if finished() throws. + # + return "Hello" + + def asyncResponse(self, current=None): + # + # Only relevant for AMD. + # + pass + + def asyncException(self, current=None): + # + # Only relevant for AMD. + # + pass + + def shutdown(self, current=None): + current.adapter.deactivate() + +class CookieI(Test.Cookie): + def message(self): + return 'blahblah' + +class ServantLocatorI(Ice.ServantLocator): + def __init__(self, category): + self._deactivated = False + self._category = category + self._requestId = -1 + + def __del__(self): + test(self._deactivated) + + def locate(self, current): + test(not self._deactivated) + + test(current.id.category == self._category or self._category == "") + + if current.id.name == "unknown": + return None + + test(current.id.name == "locate" or current.id.name == "finished") + if current.id.name == "locate": + self.exception(current) + + # + # Ensure locate() is only called once per request. + # + test(self._requestId == -1) + self._requestId = current.requestId + + return (TestI(), CookieI()) + + def finished(self, current, servant, cookie): + test(not self._deactivated) + + # + # Ensure finished() is only called once per request. + # + test(self._requestId == current.requestId) + self._requestId = -1 + + test(current.id.category == self._category or self._category == "") + test(current.id.name == "locate" or current.id.name == "finished") + + if current.id.name == "finished": + self.exception(current) + + test(isinstance(cookie, Test.Cookie)) + test(cookie.message() == 'blahblah') + + def deactivate(self, category): + test(not self._deactivated) + + self._deactivated = True + + def exception(self, current): + if current.operation == "ice_ids": + raise Test.TestIntfUserException() + elif current.operation == "requestFailedException": + raise Ice.ObjectNotExistException() + elif current.operation == "unknownUserException": + raise Ice.UnknownUserException("reason") + elif current.operation == "unknownLocalException": + raise Ice.UnknownLocalException("reason") + elif current.operation == "unknownException": + raise Ice.UnknownException("reason") + elif current.operation == "userException": + raise Test.TestIntfUserException() + elif current.operation == "localException": + raise Ice.SocketException(0) + elif current.operation == "pythonException": + raise RuntimeError("message") + elif current.operation == "unknownExceptionWithServantException": + raise Ice.UnknownException("reason") + elif current.operation == "impossibleException": + raise Test.TestIntfUserException() # Yes, it really is meant to be TestIntfUserException. + elif current.operation == "intfUserException": + raise Test.TestImpossibleException() # Yes, it really is meant to be TestImpossibleException. + elif current.operation == "asyncResponse": + raise Test.TestImpossibleException() + elif current.operation == "asyncException": + raise Test.TestImpossibleException() |