diff options
author | Mark Spruiell <mes@zeroc.com> | 2003-08-05 22:22:01 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2003-08-05 22:22:01 +0000 |
commit | 221c52e161f0cb91df1711052dfa4400d0f54273 (patch) | |
tree | 98d457c7c4fa446a7879615366dc4f2d6f44731c /php/config/TestUtil.py | |
parent | initial check-in (diff) | |
download | ice-221c52e161f0cb91df1711052dfa4400d0f54273.tar.bz2 ice-221c52e161f0cb91df1711052dfa4400d0f54273.tar.xz ice-221c52e161f0cb91df1711052dfa4400d0f54273.zip |
adding test scripts
Diffstat (limited to 'php/config/TestUtil.py')
-rw-r--r-- | php/config/TestUtil.py | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/php/config/TestUtil.py b/php/config/TestUtil.py new file mode 100644 index 00000000000..d0a91c2f9cb --- /dev/null +++ b/php/config/TestUtil.py @@ -0,0 +1,249 @@ +#!/usr/bin/env python +# ********************************************************************** +# +# Copyright (c) 2003 +# ZeroC, Inc. +# Billerica, MA, USA +# +# All Rights Reserved. +# +# Ice is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# ********************************************************************** + +# +# Set protocol to "ssl" in case you want to run the tests with the SSL +# protocol. Otherwise TCP is used. +# + +#protocol = "" +protocol = "ssl" + +# +# Set compressed to 1 in case you want to run the tests with +# protocol compression. +# + +#compress = 0 +compress = 1 + +# +# Set the host to the host name the test servers are running on. If +# not set, Ice will try to find out the IP address for the +# hostname. If you DNS isn't set up propertly, you should therefore +# use "localhost". +# + +#host = "someotherhost" +host = "localhost" + +# +# Don't change anything below this line! +# + +import sys, os, re + +# +# Check for ICE_HOME +# +ice_home = os.environ["ICE_HOME"] +if len(ice_home) == 0: + print "ICE_HOME is not defined" + sys.exit(1) + +def getIceVersion(): + + config = open(os.path.join(ice_home, "include", "IceUtil", "Config.h"), "r") + return re.search("ICE_STRING_VERSION \"([0-9\.]*)\"", config.read()).group(1) + +def getIceSoVersion(): + config = open(os.path.join(ice_home, "include", "IceUtil", "Config.h"), "r") + intVersion = int(re.search("ICE_INT_VERSION ([0-9]*)", config.read()).group(1)) + majorVersion = intVersion / 10000 + minorVersion = intVersion / 100 - 100 * majorVersion + return '%d' % (majorVersion * 10 + minorVersion) + +def isCygwin(): + + # The substring on sys.platform is required because some cygwin + # versions return variations like "cygwin_nt-4.01". + if sys.platform[:6] == "cygwin": + return 1 + else: + return 0 + +def isWin32(): + + if sys.platform == "win32" or isCygwin(): + return 1 + else: + return 0 + +def isSolaris(): + + if sys.platform == "sunos5": + return 1 + else: + return 0 + +serverPids = [] +def killServers(): + + global serverPids + + for pid in serverPids: + if isCygwin(): + print "killServers(): not implemented for cygwin python." + sys.exit(1) + elif isWin32(): + try: + import win32api + handle = win32api.OpenProcess(1, 0, pid) + win32api.TerminateProcess(handle, 0) + except: + pass # Ignore errors, such as non-existing processes. + else: + try: + os.kill(pid, 9) + except: + pass # Ignore errors, such as non-existing processes. + + serverPids = [] + +def getServerPid(serverPipe): + + output = serverPipe.readline().strip() + + if not output: + print "failed!" + killServers() + sys.exit(1) + + serverPids.append(int(output)) + +def getAdapterReady(serverPipe): + + output = serverPipe.readline().strip() + + if not output: + print "failed!" + killServers() + sys.exit(1) + +def waitServiceReady(pipe, token): + + while 1: + + output = pipe.readline().strip() + + if not output: + print "failed!" + sys.exit(1) + + if output == token + " ready": + break + +def printOutputFromPipe(pipe): + while 1: + line = pipe.readline() + if not line: + break + os.write(1, line) + +for toplevel in [".", "..", "../..", "../../..", "../../../.."]: + toplevel = os.path.normpath(toplevel) + if os.path.exists(os.path.join(toplevel, "config", "TestUtil.py")): + break +else: + raise "can't find toplevel directory!" + +if isWin32(): + os.environ["PATH"] = os.path.join(ice_home, "bin") + ";" + os.getenv("PATH", "") +else: + os.environ["LD_LIBRARY_PATH"] = os.path.join(ice_home, "lib") + ":" + os.getenv("LD_LIBRARY_PATH", "") + os.environ["LD_LIBRARY_PATH_64"] = os.path.join(ice_home, "lib") + ":" + os.getenv("LD_LIBRARY_PATH_64", "") + +if protocol == "ssl": + plugin = " --Ice.Plugin.IceSSL=IceSSL:create" + clientProtocol = plugin + " --Ice.Default.Protocol=ssl" + \ + " --IceSSL.Client.CertPath=" + os.path.join(ice_home, "certs") + \ + " --IceSSL.Client.Config=client_sslconfig.xml" + serverProtocol = plugin + " --Ice.Default.Protocol=ssl" + \ + " --IceSSL.Server.CertPath=" + os.path.join(ice_home, "certs") + \ + " --IceSSL.Server.Config=server_sslconfig.xml" + clientServerProtocol = plugin + " --Ice.Default.Protocol=ssl" + \ + " --IceSSL.Client.CertPath=" + os.path.join(ice_home, "certs") + \ + " --IceSSL.Client.Config=sslconfig.xml" + \ + " --IceSSL.Server.CertPath=" + os.path.join(ice_home, "certs") + \ + " --IceSSL.Server.Config=sslconfig.xml" +else: + clientProtocol = "" + serverProtocol = "" + clientServerProtocol = "" + +if compress: + clientProtocol += " --Ice.Override.Compress" + serverProtocol += " --Ice.Override.Compress" + clientServerProtocol += " --Ice.Override.Compress" + +if host != "": + defaultHost = " --Ice.Default.Host=" + host +else: + defaultHost = "" + +commonServerOptions = " --Ice.PrintProcessId --Ice.PrintAdapterReady --Ice.ThreadPool.Server.Size=3" + \ + " --Ice.Warn.Connections " + +clientOptions = clientProtocol + defaultHost +serverOptions = serverProtocol + defaultHost + commonServerOptions +clientServerOptions = clientServerProtocol + defaultHost + commonServerOptions + +def clientServerTestWithOptionsAndNames(name, additionalServerOptions, additionalClientOptions, \ + serverName, clientName): + + testdir = os.path.join(toplevel, "test", name) + server = os.path.join(ice_home, "test", name, serverName) + client = "php -c . -f " + clientName + + cwd = os.getcwd() + os.chdir(testdir) + + print "starting " + serverName + "...", + serverPipe = os.popen(server + serverOptions + additionalServerOptions) + getServerPid(serverPipe) + getAdapterReady(serverPipe) + print "ok" + + print "starting " + clientName + "...", + clientPipe = os.popen(client + " -- " + clientOptions + additionalClientOptions) + print "ok" + + printOutputFromPipe(clientPipe) + + clientStatus = clientPipe.close() + serverStatus = serverPipe.close() + + if clientStatus or serverStatus: + killServers() + sys.exit(1) + + os.chdir(cwd) + +def clientServerTestWithOptions(name, additionalServerOptions, additionalClientOptions): + + clientServerTestWithOptionsAndNames(name, additionalServerOptions, additionalClientOptions, "server", "Client.php") + +def clientServerTest(name): + + clientServerTestWithOptions(name, "", "") + +def cleanDbDir(path): + + files = os.listdir(path) + + for filename in files: + if filename != "CVS" and filename != ".dummy": + fullpath = os.path.join(path, filename); + os.remove(fullpath) |