summaryrefslogtreecommitdiff
path: root/rb/config/TestUtil.py
diff options
context:
space:
mode:
Diffstat (limited to 'rb/config/TestUtil.py')
-rw-r--r--rb/config/TestUtil.py418
1 files changed, 0 insertions, 418 deletions
diff --git a/rb/config/TestUtil.py b/rb/config/TestUtil.py
deleted file mode 100644
index ce999429286..00000000000
--- a/rb/config/TestUtil.py
+++ /dev/null
@@ -1,418 +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
-
-#
-# 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"
-
-#
-# To print the commands that are being run.
-#
-
-debug = 0
-#debug = 1
-
-#
-# Don't change anything below this line!
-#
-import sys, os, errno, getopt
-from threading import Thread
-
-def usage():
- print "usage: " + sys.argv[0] + " --debug --protocol PROT --compress --host HOST --threadPerConnection"
- sys.exit(2)
-
-try:
- opts, args = getopt.getopt(sys.argv[1:], "", ["debug", "protocol=", "compress", "host=", "threadPerConnection"])
-except getopt.GetoptError:
- usage()
-
-for o, a in opts:
- if o == "--debug":
- debug = 1
- if o == "--protocol":
- protocol = a
- if o == "--compress":
- compress = 1
- if o == "--threadPerConnection":
- threadPerConnection = 1
- if o == "--host":
- host = a
-
-#
-# Check for ICE_HOME.
-#
-ice_home = os.getenv("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".
- return sys.platform[:6] == "cygwin"
-
-def isWin32():
-
- return sys.platform == "win32" or isCygwin()
-
-def isSolaris():
-
- return sys.platform == "sunos5"
-
-def isHpUx():
-
- return sys.platform == "hp-ux11"
-
-def isAIX():
- return sys.platform in ['aix4', 'aix5']
-
-def isDarwin():
-
- return sys.platform == "darwin"
-
-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
- else:
- raise
-
- return status
-
-class ReaderThread(Thread):
- def __init__(self, pipe):
- self.pipe = pipe
- Thread.__init__(self)
-
- def run(self):
-
- #print "started: " + str(self) + ": " + str(thread.get_ident())
- 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 "server: " + line,
- except IOError:
- pass
-
- self.status = closePipe(self.pipe)
- #print "terminating: " + str(self)
-
- 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:
- print "server " + str(t) + " status: " + str(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):
- global serverThreads
-
- output = pipe.readline().strip()
-
- 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() and threadPerConnection:
- print "Error: thread-per-connection is not currently supported on Windows."
- sys.exit(1)
-
-abstoplevel = os.path.abspath(toplevel)
-
-if isWin32():
- if isCygwin():
- os.environ["PATH"] = os.path.join(abstoplevel, "bin") + ":" + os.path.join(ice_home, "bin") + ":" + \
- os.getenv("PATH", "")
- else:
- os.environ["PATH"] = os.path.join(abstoplevel, "bin") + ";" + os.path.join(ice_home, "bin") + ";" + \
- os.getenv("PATH", "")
-else:
- os.environ["PATH"] = os.path.join(ice_home, "bin") + ":" + os.getenv("PATH", "")
- if isHpUx():
- os.environ["SHLIB_PATH"] = os.path.join(abstoplevel, "lib") + ":" + os.path.join(ice_home, "lib") + ":" + \
- os.getenv("SHLIB_PATH", "")
- elif isDarwin():
- os.environ["DYLD_LIBRARY_PATH"] = os.path.join(abstoplevel, "lib") + ":" + os.path.join(ice_home, "lib") + ":" + \
- os.getenv("DYLD_LIBRARY_PATH", "")
- elif isAIX():
- os.environ["LIBPATH"] = os.path.join(abstoplevel, "lib") + ":" + os.path.join(ice_home, "lib") + ":" + \
- os.getenv("LIBPATH", "")
- else:
- os.environ["LD_LIBRARY_PATH"] = os.path.join(abstoplevel, "lib") + ":" + os.path.join(ice_home, "lib") + ":" + \
- os.getenv("LD_LIBRARY_PATH", "")
- os.environ["LD_LIBRARY_PATH_64"] = os.path.join(abstoplevel, "lib") + ":" + os.path.join(ice_home, "lib") + ":" + \
- os.getenv("LD_LIBRARY_PATH_64", "")
-
-if protocol == "ssl":
- certs = os.path.abspath(os.path.join(toplevel, "certs"))
- plugin = " --Ice.Plugin.IceSSL=IceSSL:createIceSSL"
- clientProtocol = plugin + " --Ice.Default.Protocol=ssl" + \
- " --IceSSL.DefaultDir=" + certs + \
- " --IceSSL.CertFile=c_rsa1024_pub.pem" + \
- " --IceSSL.KeyFile=c_rsa1024_priv.pem" + \
- " --IceSSL.CertAuthFile=cacert.pem"
- serverProtocol = plugin + " --Ice.Default.Protocol=ssl" + \
- " --IceSSL.DefaultDir=" + certs + \
- " --IceSSL.CertFile=s_rsa1024_pub.pem" + \
- " --IceSSL.KeyFile=s_rsa1024_priv.pem" + \
- " --IceSSL.CertAuthFile=cacert.pem"
- clientServerProtocol = clientProtocol
-else:
- clientProtocol = ""
- serverProtocol = ""
- clientServerProtocol = ""
-
-if compress:
- clientProtocol += " --Ice.Override.Compress"
- serverProtocol += " --Ice.Override.Compress"
- clientServerProtocol += " --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=30" + \
- " --Ice.ThreadPool.Server.Size=1 --Ice.ThreadPool.Server.SizeMax=3" + \
- " --Ice.ThreadPool.Server.SizeWarn=0"
-
-commonCollocatedOptions = " --Ice.ThreadPool.Server.Size=1 --Ice.ThreadPool.Server.SizeMax=3" + \
- " --Ice.ThreadPool.Server.SizeWarn=0"
-
-clientOptions = clientProtocol + defaultHost + commonClientOptions
-serverOptions = serverProtocol + defaultHost + commonServerOptions
-clientServerOptions = clientServerProtocol + defaultHost + commonServerOptions
-collocatedOptions = clientServerProtocol + defaultHost + commonCollocatedOptions
-
-def clientServerTestWithOptionsAndNames(name, additionalServerOptions, additionalClientOptions, \
- serverName, clientName):
-
- testdir = os.path.join(toplevel, "test", name)
- server = os.path.join(ice_home, "test", name, serverName)
- client = clientName
-
- cwd = os.getcwd()
- os.chdir(testdir)
-
- print "starting " + serverName + "...",
- serverCmd = server + serverOptions + additionalServerOptions
- if debug:
- print "(" + serverCmd + ")",
- serverPipe = os.popen(serverCmd + " 2>&1")
- getServerPid(serverPipe)
- getAdapterReady(serverPipe)
- print "ok"
-
- print "starting " + clientName + "...",
- clientCmd = "ruby " + 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)
-
- os.chdir(cwd)
-
-def clientServerTestWithOptions(name, additionalServerOptions, additionalClientOptions):
-
- clientServerTestWithOptionsAndNames(name, additionalServerOptions, additionalClientOptions, "server", "Client.rb")
-
-def clientServerTest(name):
-
- clientServerTestWithOptions(name, "", "")
-
-def cleanDbDir(path):
- for filename in [ os.path.join(path, f) for f in os.listdir(path) if f != ".gitignore"]:
- os.remove(filename)