summaryrefslogtreecommitdiff
path: root/cs/config/TestUtil.py
diff options
context:
space:
mode:
authorBrent Eagles <brent@zeroc.com>2007-11-07 14:59:34 -0330
committerBrent Eagles <brent@zeroc.com>2007-11-07 14:59:34 -0330
commit676286717393ad5a1dfecac80022ce85cd503711 (patch)
treefbf5f846218fcac6de115bea01fe1572d309d0c2 /cs/config/TestUtil.py
parent- Fixing bug 2522 for Python. This involved adding the C++ class (diff)
downloadice-676286717393ad5a1dfecac80022ce85cd503711.tar.bz2
ice-676286717393ad5a1dfecac80022ce85cd503711.tar.xz
ice-676286717393ad5a1dfecac80022ce85cd503711.zip
- Moved cpp/slice to slice
- Merged all TestUtil.py modules to config/TestUtil.py - Moved all certs to config/certs - Updated test scripts to refer to new TestUtil.py module and use new interfaces - Updated build systems to refer to new slice location - Moved cpp/install to distribution - Moved and merged all IceGridAdmin.py modules to config. - Modified build system to deal with new build logic. That is there are 3 basic ways to find the slice translators and runtime: ICE_HOME, an RPM install and the source distribution. Automatically detecting Ice in a default install location is now problematic and no longer done.
Diffstat (limited to 'cs/config/TestUtil.py')
-rw-r--r--cs/config/TestUtil.py503
1 files changed, 0 insertions, 503 deletions
diff --git a/cs/config/TestUtil.py b/cs/config/TestUtil.py
deleted file mode 100644
index 6ce600ef1dd..00000000000
--- a/cs/config/TestUtil.py
+++ /dev/null
@@ -1,503 +0,0 @@
-#!/usr/bin/env python
-# **********************************************************************
-#
-# Copyright (c) 2003-2007 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.
-#
-# **********************************************************************
-
-#
-# 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 threadPerConnection to 1 in case you want to run the tests in
-# thread per connection mode.
-#
-
-threadPerConnection = 0
-#threadPerConnection = 1
-
-#
-# To print the commands that are being run.
-#
-debug = 0
-#debug = 1
-
-#
-# Don't change anything below this line!
-#
-import sys, os, re, errno, getopt
-from threading import Thread
-
-def isCygwin():
- # The substring on sys.platform is required because some cygwin
- # versions return variations like "cygwin_nt-4.01".
- return sys.platform[:6] == "cygwin"
-
-def isWin32():
- return sys.platform == "win32" or isCygwin()
-
-def usage():
- print "usage: " + sys.argv[0] + " -m|--mono --debug --protocol protocol --compress --host host "\
- "--threadPerConnection"
- sys.exit(2)
-
-try:
- opts, args = getopt.getopt(sys.argv[1:], "m",\
- ["mono", "debug", "protocol=", "compress", "host=", "threadPerConnection"])
-except getopt.GetoptError:
- usage()
-
-mono = 0
-
-for o, a in opts:
- if o in ( "-m", "--mono" ):
- mono = 1
- if o == "--debug":
- debug = 1
- if o == "--protocol":
- if a not in ( "tcp", "ssl"):
- usage()
- protocol = a
- if o == "--compress":
- compress = 1
- if o == "--threadPerConnection":
- threadPerConnection = 1
- if o == "--host":
- host = a
-
-if protocol == "ssl":
- threadPerConnection = 1
-
-if not isWin32():
- mono = 1
-
-#
-# If you don't set "host" below, then the Ice library will try to find
-# out the IP address of this host. For the Ice test suite, it's best
-# to set the IP address explicitly to 127.0.0.1. This avoid problems
-# with incorrect DNS or hostname setups.
-#
-
-host = "127.0.0.1"
-
-#
-# Don't change anything below this line!
-#
-
-def closePipe(pipe):
-
- try:
- status = pipe.close()
- except IOError, ex:
- # TODO: There's a waitpid problem on CentOS, so we have to ignore ECHILD.
- if ex.errno == errno.ECHILD:
- status = 0
- # This happens with the C# fault tolerance test. Ignore this error.
- elif ex.errno == 0:
- status = 0
- else:
- raise
-
- return status
-
-class ReaderThread(Thread):
- def __init__(self, pipe):
- self.pipe = pipe
- Thread.__init__(self)
-
- def run(self):
-
- try:
- while 1:
- line = self.pipe.readline()
- if not line: break
- # Suppress "adapter ready" messages. Under windows the eol isn't \n.
- if not line.endswith(" ready\n") and not line.endswith(" ready\r\n"):
- print line,
- except IOError:
- print "IOError"
- pass
-
- self.status = closePipe(self.pipe)
-
- def getStatus(self):
- return self.status
-
-serverPids = []
-serverThreads = []
-allServerThreads = []
-
-def joinServers():
- global serverThreads
- global allServerThreads
- for t in serverThreads:
- t.join()
- allServerThreads.append(t)
- serverThreads = []
-
-def serverStatus():
- global allServerThreads
- joinServers()
- for t in allServerThreads:
- status = t.getStatus()
- if status:
- return status
- return 0
-
-def killServers():
-
- global serverPids
- global serverThreads
-
- for pid in serverPids:
-
- if isWin32():
- try:
- import win32api
- handle = win32api.OpenProcess(1, 0, pid)
- win32api.TerminateProcess(handle, 0)
- except ImportError, ex:
- print "Sorry: you must install the win32all package for killServers to work."
- return
- 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 = []
-
- #
- # Now join with all the threads
- #
- joinServers()
-
-def getServerPid(pipe):
- global serverPids
- global serverThreads
-
- while 1:
- output = pipe.readline().strip()
- if not output:
- print "failed!"
- killServers()
- sys.exit(1)
- if output.startswith("warning: "):
- continue
- break
-
- try:
- serverPids.append(int(output))
- except ValueError:
- print "Output is not a PID: " + output
- raise
-
-def ignorePid(pipe):
-
- while 1:
- output = pipe.readline().strip()
- if not output:
- print "failed!"
- killServers()
- sys.exit(1)
- if output.startswith("warning: "):
- continue
- break
-
-def getAdapterReady(pipe, createThread = True, count = 1):
- global serverThreads
-
- while count > 0:
- output = pipe.readline().strip()
- count = count - 1
-
- if not output:
- print "failed!"
- killServers()
- sys.exit(1)
-
- # Start a thread for this server.
- if createThread:
- serverThread = ReaderThread(pipe)
- serverThread.start()
- serverThreads.append(serverThread)
-
-def waitServiceReady(pipe, token, createThread = True):
- global serverThreads
-
- while 1:
- output = pipe.readline().strip()
- if not output:
- print "failed!"
- sys.exit(1)
- if output == token + " ready":
- break
-
- # Start a thread for this server.
- if createThread:
- serverThread = ReaderThread(pipe)
- serverThread.start()
- serverThreads.append(serverThread)
-
-def printOutputFromPipe(pipe):
-
- while 1:
- c = pipe.read(1)
- if c == "":
- break
- os.write(1, c)
-
-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():
- if isCygwin():
- os.environ["PATH"] = os.path.join(toplevel, "bin") + ":" + os.getenv("PATH", "")
- else:
- os.environ["PATH"] = os.path.join(toplevel, "bin") + ";" + os.getenv("PATH", "")
-
-if protocol == "ssl":
- plugin = " --Ice.Plugin.IceSSL=" + os.path.join(toplevel, "bin", "icesslcs.dll") + \
- ":IceSSL.PluginFactory"
- clientProtocol = plugin + " --Ice.Default.Protocol=ssl" + \
- " --IceSSL.CertFile=" + os.path.join(toplevel, "certs", "c_rsa1024.pfx") + \
- " --IceSSL.Password=password" + \
- " --IceSSL.CheckCertName=0"
- serverProtocol = plugin + " --Ice.Default.Protocol=ssl" + \
- " --IceSSL.ImportCert.CurrentUser.Root=" + \
- os.path.join(toplevel, "certs", "cacert.pem") + \
- " --IceSSL.CertFile=" + os.path.join(toplevel, "certs", "s_rsa1024.pfx") + \
- " --IceSSL.Password=password"
- clientServerProtocol = plugin + " --Ice.Default.Protocol=ssl" + \
- " --IceSSL.ImportCert.CurrentUser.Root=" + \
- os.path.join(toplevel, "certs", "cacert.pem") + \
- " --IceSSL.CertFile=" + os.path.join(toplevel, "certs", "c_rsa1024.pfx") + \
- " --IceSSL.Password=password" + \
- " --IceSSL.CheckCertName=0"
- cppPlugin = " --Ice.Plugin.IceSSL=IceSSL:createIceSSL"
- cppClientProtocol = cppPlugin + " --Ice.Default.Protocol=ssl" + \
- " --IceSSL.DefaultDir=" + os.path.join(toplevel, "certs") + \
- " --IceSSL.CertAuthFile=cacert.pem" + \
- " --IceSSL.CertFile=c_rsa1024_pub.pem" + \
- " --IceSSL.KeyFile=c_rsa1024_priv.pem"
- cppServerProtocol = cppPlugin + " --Ice.Default.Protocol=ssl" + \
- " --IceSSL.DefaultDir=" + os.path.join(toplevel, "certs") + \
- " --IceSSL.CertAuthFile=cacert.pem" + \
- " --IceSSL.CertFile=s_rsa1024_pub.pem" + \
- " --IceSSL.KeyFile=s_rsa1024_priv.pem"
- cppClientServerProtocol = cppClientProtocol
-else:
- clientProtocol = ""
- serverProtocol = ""
- clientServerProtocol = ""
- cppClientProtocol = ""
- cppServerProtocol = ""
- cppClientServerProtocol = ""
-
-if compress:
- clientProtocol += " --Ice.Override.Compress"
- serverProtocol += " --Ice.Override.Compress"
- clientServerProtocol += " --Ice.Override.Compress"
- cppClientProtocol += " --Ice.Override.Compress"
- cppServerProtocol += " --Ice.Override.Compress"
- cppClientServerProtocol += " --Ice.Override.Compress"
-
-if threadPerConnection:
- clientProtocol += " --Ice.ThreadPerConnection"
- serverProtocol += " --Ice.ThreadPerConnection"
- clientServerProtocol += " --Ice.ThreadPerConnection"
-
-if host != "":
- defaultHost = " --Ice.Default.Host=" + host
-else:
- defaultHost = ""
-
-commonClientOptions = " --Ice.NullHandleAbort --Ice.Warn.Connections"
-
-commonServerOptions = " --Ice.PrintProcessId --Ice.PrintAdapterReady --Ice.NullHandleAbort" + \
- " --Ice.Warn.Connections --Ice.ServerIdleTime=10" + \
- " --Ice.ThreadPool.Server.Size=1 --Ice.ThreadPool.Server.SizeMax=3" + \
- " --Ice.ThreadPool.Server.SizeWarn=0"
-
-cppCommonClientOptions = " --Ice.NullHandleAbort --Ice.Warn.Connections"
-
-cppCommonServerOptions = " --Ice.PrintProcessId --Ice.PrintAdapterReady --Ice.NullHandleAbort" + \
- " --Ice.Warn.Connections --Ice.ServerIdleTime=30"
-
-cppClientOptions = cppClientProtocol + defaultHost + cppCommonClientOptions
-cppServerOptions = cppServerProtocol + defaultHost + cppCommonServerOptions
-cppClientServerOptions = cppClientServerProtocol + defaultHost + cppCommonServerOptions
-
-clientOptions = clientProtocol + defaultHost + commonClientOptions
-serverOptions = serverProtocol + defaultHost + commonServerOptions
-clientServerOptions = clientServerProtocol + defaultHost + commonServerOptions
-collocatedOptions = clientServerProtocol + defaultHost
-
-def createMsg(name):
- msg = "starting "
- if mono:
- msg += "mono "
- msg += name
- if mono:
- msg += ".exe"
- msg += "..."
-
- return msg
-
-def createCmd(bin):
-
- if mono:
- return "mono --debug " + bin + ".exe"
- else:
- return bin
-
-def clientServerTestWithOptionsAndNames(name, additionalServerOptions, additionalClientOptions, \
- serverName, clientName):
-
- testdir = os.path.join(toplevel, "test", name)
- server = os.path.join(testdir, serverName)
- client = os.path.join(testdir, clientName)
-
- print createMsg(serverName),
- serverCmd = createCmd(server) + serverOptions + " " + additionalServerOptions
- if debug:
- print "(" + serverCmd + ")",
- serverPipe = os.popen(serverCmd + " 2>&1")
- getServerPid(serverPipe)
- getAdapterReady(serverPipe)
- print "ok"
-
- print createMsg(clientName),
- clientCmd = createCmd(client) + clientOptions + " " + additionalClientOptions
- if debug:
- print "(" + clientCmd + ")",
- clientPipe = os.popen(clientCmd + " 2>&1")
- print "ok"
-
- printOutputFromPipe(clientPipe)
-
- clientStatus = closePipe(clientPipe)
- if clientStatus:
- killServers()
-
- if clientStatus or serverStatus():
- sys.exit(1)
-
-def clientServerTestWithOptions(name, additionalServerOptions, additionalClientOptions):
-
- clientServerTestWithOptionsAndNames(name, additionalServerOptions, additionalClientOptions, "server", \
- "client")
-
-def clientServerTest(name):
-
- clientServerTestWithOptions(name, "", "")
-
-def mixedClientServerTestWithOptions(name, additionalServerOptions, additionalClientOptions):
-
- testdir = os.path.join(toplevel, "test", name)
- server = os.path.join(testdir, "server")
- client = os.path.join(testdir, "client")
-
- print createMsg("server"),
- serverCmd = createCmd(server) + clientServerOptions + " " + additionalServerOptions
- if debug:
- print "(" + serverCmd + ")",
- serverPipe = os.popen(serverCmd + " 2>&1")
- getServerPid(serverPipe)
- getAdapterReady(serverPipe)
- print "ok"
-
- print createMsg("client"),
- clientCmd = createCmd(client) + clientServerOptions + " " + additionalClientOptions
- if debug:
- print "(" + clientCmd + ")",
- clientPipe = os.popen(clientCmd + " 2>&1")
- ignorePid(clientPipe)
- getAdapterReady(clientPipe, False)
- print "ok"
-
- printOutputFromPipe(clientPipe)
-
- clientStatus = closePipe(clientPipe)
- if clientStatus:
- killServers()
-
- if clientStatus or serverStatus():
- sys.exit(1)
-
-def mixedClientServerTest(name):
-
- mixedClientServerTestWithOptions(name, "", "")
-
-def collocatedTestWithOptions(name, additionalOptions):
-
- testdir = os.path.join(toplevel, "test", name)
- collocated = os.path.join(testdir, "collocated")
-
- print createMsg("collocated"),
- command = createCmd(collocated) + collocatedOptions + " " + additionalOptions
- if debug:
- print "(" + command + ")",
- collocatedPipe = os.popen(command + " 2>&1")
- print "ok"
-
- printOutputFromPipe(collocatedPipe)
-
- collocatedStatus = closePipe(collocatedPipe)
-
- if collocatedStatus:
- killServers()
- sys.exit(1)
-
-def collocatedTest(name):
-
- collocatedTestWithOptions(name, "")
-
-def clientTestWithOptions(name, additionalOptions):
-
- testdir = os.path.join(toplevel, "test", name)
- client = os.path.join(testdir, "client")
-
- print createMsg("client"),
- command = createCmd(client) + clientOptions + " " + additionalOptions
- if debug:
- print "(" + command + ")",
- clientPipe = os.popen(command + " 2>&1")
- print "ok"
-
- printOutputFromPipe(clientPipe)
-
- clientStatus = closePipe(clientPipe)
-
- if clientStatus:
- killServers()
- sys.exit(1)
-
-def clientTest(name):
-
- clientTestWithOptions(name, "")
-
-def cleanDbDir(path):
- for filename in [ os.path.join(path, f) for f in os.listdir(path) if f != ".gitignore"]:
- os.remove(filename)