Update of /cvsroot/monetdb/MonetDB/src/testing
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv17490/src/testing
Modified Files:
Tag: GDK-2
Mfilter.py.in Mtest.py.in
Log Message:
propagated changes since the creation of the GDK-2 branch (tag GDK-2_root) til
Monday Aug 13 2007
from the development trunk to the GDK-2 branch
resolved minor conflicts in src/gdk/gdk_relop.mx.
resolved major conflicts in src/gdk/gdk_batop.mx (BATordered())
(hopefully correctly)
compilation NOT tested!
Index: Mtest.py.in
===================================================================
RCS file: /cvsroot/monetdb/MonetDB/src/testing/Mtest.py.in,v
retrieving revision 1.280
retrieving revision 1.280.2.1
diff -u -d -r1.280 -r1.280.2.1
--- Mtest.py.in 12 Jun 2007 17:20:02 -0000 1.280
+++ Mtest.py.in 13 Aug 2007 22:42:42 -0000 1.280.2.1
@@ -108,6 +108,8 @@
# use private copy for old Python versions
import subprocess26 as subprocess
+randomPortRepeat = 9
+
F_SKIP = -1
F_OK = 0
F_WARN = 1
@@ -1522,10 +1524,13 @@
if test.match(f):
SymlinkOrCopy(os.path.join(RELSRCDIR,f),os.path.join(TSTTRGDIR,f))
- if SERVER in ["MAPI", "SQL", "XQUERY"]:
- CheckSocket2(env, "MAPI") #, SrvrErr)
- if SERVER == "XQUERY":
- CheckSocket2(env, "XRPC") #, SrvrErr)
+ # Check for available sockets and block them until we're ready to run
the actual test
+ MAPIsockets, reason = CheckSocket2(env, "MAPI") #, SrvrErr)
+ if MAPIsockets is not None:
+ XRPCsockets, reason = CheckSocket2(env, "XRPC") #, SrvrErr)
+ if None in (MAPIsockets, XRPCsockets):
+ elem = SkipTest(env, TST, EXT, "as "+reason)
+ return TX,Failed,Failed,elem
if os.path.isfile(TST+EXT+".src") and not os.path.isfile(TST+EXT):
f = open(TST+EXT+".src","r")
@@ -1535,6 +1540,11 @@
SymlinkOrCopy(TSTSRC,TST+EXT)
else:
elem = SkipTest(env, TST, EXT+".src", "as source file
'"+TSTSRC+"` is missing.")
+ # Release reserved sockets before bailing out
+ MAPIsockets[0].close()
+ MAPIsockets[1].close()
+ XRPCsockets[0].close()
+ XRPCsockets[1].close()
return TX,Failed,Failed,elem
test = re.compile("^"+TST+"((_[sp][0-9][0-9])?\..*)?\.src$",
re.MULTILINE)
for ff in os.listdir(TSTTRGDIR):
@@ -1666,7 +1676,7 @@
TestErr.close()
t0 = time.time()
- DoIt (env, SERVER, CALL, TST, EXT, PRELUDE, TestOutFile, TestErrFile,
STIMEOUT, CTIMEOUT, TIMEOUT, MkillUsersAT, ME)
+ DoIt (env, SERVER, CALL, TST, EXT, PRELUDE, TestOutFile, TestErrFile,
STIMEOUT, CTIMEOUT, TIMEOUT, MkillUsersAT, ME, MAPIsockets, XRPCsockets)
t1 = time.time()
TX = t1 - t0
if not quiet:
@@ -1700,10 +1710,8 @@
killed = 1
p.close()
- if SERVER in ["MAPI", "SQL", "XQUERY"]:
- CheckSocket3(env, "MAPI", TestErrFile)
- if SERVER == "XQUERY":
- CheckSocket3(env, "XRPC", TestErrFile)
+ CheckSocket3(env, "MAPI", TestErrFile)
+ CheckSocket3(env, "XRPC", TestErrFile)
#TODO:
##if [ ! -f $TSTTRGBASE/Tests/.old.left-over.tmp.bats. ] ; then touch
$TSTTRGBASE/Tests/.old.left-over.tmp.bats. ; fi
@@ -1845,70 +1853,71 @@
return TX,FailedOut,FailedErr,elem
### RunTest(env, TST, BusyPorts) #
-def CheckPort(host,port) :
+def CheckPort(port) :
+ # Since 'localhost' and $HOST (i.e., `hostname`) are usually different
interfaces,
+ # we check both, unless $HOST (`hostname`) appears to be merely an alias
for 'localhost'.
busy = 0
Serrno = 0
Serrstr = ""
- S = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ S0 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ S1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ host = 'localhost'
try:
- S.bind((host,port))
+ S0.bind((host,port))
except socket.error, (Serrno,Serrstr):
busy = 1
- S.close()
- return busy, Serrno, Serrstr
-### CheckPort(host,port) #
+ if not busy:
+ host = os.environ['HOST']
+ try:
+ S1.bind((host,port))
+ except socket.error, (Serrno,Serrstr):
+ # $HOST just alias for 'localhost'?
+ S0.close()
+ try:
+ S1.bind((host,port))
+ except socket.error, (Serrno,Serrstr):
+ busy = 1
+ return busy, host, Serrno, Serrstr, (S0, S1)
+### CheckPort(port) #
def randomPort(l,h) :
- repeat = 9
- host = 'localhost'
+ repeat = randomPortRepeat
port = 0
rpt = 0
while rpt < repeat:
port = random.randrange(l,h,1)
- if CheckPort(host,port)[0]:
+ busy, host, Serrno, Serrstr, S = CheckPort(port)
+ S[0].close()
+ S[1].close()
+ if busy:
rpt = rpt + 1
else:
break
return port
### randomPort(l,h) #
-def CheckSocket(env,SERVER,SrvrErr,LogLine) :
-# if OS == "SunOS":
-# wait = 241
-# else:
-# wait = 61
- wait = 61
- repeat = 5
- host = 'localhost'
+def CheckSocket2(env,SERVER) : #,SrvrErr) :
port = int(env[SERVER+'PORT'])
- rpt = 0
- while rpt < repeat:
- busy, Serrno, Serrstr = CheckPort(host,port)
+ newport = port
+ busy, host, Serrno, Serrstr, S = CheckPort(port)
+ if busy:
+ S[0].close()
+ S[1].close()
+ Smsg = """
+! Socket-Check failed for %sserver on <%s:%d> with #%d; '%s' !
+""" % (SERVER, host, port, Serrno, Serrstr)
+ newport = eval(dft[SERVER+'PORT'])
+ busy, host, Serrno, Serrstr, S = CheckPort(int(newport))
if busy:
- rpt = rpt + 1
- Smsg = """
+ S[0].close()
+ S[1].close()
+ Smsg = Smsg + """
! Socket-Check failed for %sserver on <%s:%d> with #%d; '%s' !
-! Waiting %d seconds (%d/%d) ... """ % (SERVER, host, port, Serrno, Serrstr,
wait, rpt, repeat)
-# STDERR.write(Smsg)
-# STDERR.flush()
-# SrvrErr.write(Smsg)
-# SrvrErr.flush()
- time.sleep(wait)
- else:
- break
- if rpt != 0:
- SrvrErr.write("Done.\n\n")
- SrvrErr.flush()
- STDERR.write("Done.\n"+prompt()+LogLine)
- STDERR.flush()
-### CheckSocket(env,SERVER,SrvrErr,LogLine) #
+! Giving up after %d attepts !
+""" % (SERVER, host, int(newport), Serrno, Serrstr, randomPortRepeat)
+ return None, Smsg
-def CheckSocket2(env,SERVER) : #,SrvrErr) :
- host = 'localhost'
- port = int(env[SERVER+'PORT'])
- busy, Serrno, Serrstr = CheckPort(host,port)
- if busy:
- env[SERVER+'PORT'] = eval(dft[SERVER+'PORT'])
+ env[SERVER+'PORT'] = newport
os.environ[SERVER+'PORT'] = env[SERVER+'PORT']
op = 'port=%d' % port
np = 'port=%s' % env[SERVER+'PORT']
@@ -1924,20 +1933,22 @@
os.environ['SQL_DUMP'] = os.environ['SQL_DUMP'].replace(op, np)
os.environ['XQUERY_CLIENT'] = os.environ['XQUERY_CLIENT'].replace(op,
np)
os.environ['X100_CLIENT'] = os.environ['X100_CLIENT'].replace(op, np)
- Smsg = """
-! Socket-Check failed for %sserver on <%s:%d> with #%d; '%s' !
+ Smsg = Smsg + """
! Using new %sPORT=%s !
-""" % (SERVER, host, port, Serrno, Serrstr, SERVER, env[SERVER+'PORT'])
+""" % (SERVER, env[SERVER+'PORT'])
# STDERR.write(Smsg)
# STDERR.flush()
# SrvrErr.write(Smsg)
# SrvrErr.flush()
+
+ return S, None
### CheckSocket2(env,SERVER) #,SrvrErr) #
def CheckSocket3(env,SERVER,ErrFileName) :
- host = 'localhost'
port = int(env[SERVER+'PORT'])
- busy, Serrno, Serrstr = CheckPort(host,port)
+ busy, host, Serrno, Serrstr, S = CheckPort(port)
+ S[0].close()
+ S[1].close()
if busy:
Smsg = """
! Socket-Check failed for %sserver on <%s:%d> with #%d; '%s' !
@@ -1945,10 +1956,10 @@
""" % (SERVER, host, port, Serrno, Serrstr, SERVER)
STDERR.write(Smsg)
STDERR.flush()
-# ErrFile = open(ErrFileName, 'a')
-# ErrFile.write(Smsg)
-# ErrFile.flush()
-# ErrFile.close()
+ ErrFile = open(ErrFileName, 'a')
+ ErrFile.write(Smsg)
+ ErrFile.flush()
+ ErrFile.close()
### CheckSocket3(env,SERVER,ErrFileName) #
def prompt() :
@@ -2033,7 +2044,7 @@
else:
devnull = '/dev/null'
-def DoIt(env, SERVER, CALL, TST, EXT, PRELUDE, TestOutFile, TestErrFile,
STIMEOUT, CTIMEOUT, TIMEOUT, MkillUsersAT, ME) :
+def DoIt(env, SERVER, CALL, TST, EXT, PRELUDE, TestOutFile, TestErrFile,
STIMEOUT, CTIMEOUT, TIMEOUT, MkillUsersAT, ME, MAPIsockets, XRPCsockets) :
quiet = env['QUIET']
ATJOB2 = ""
LogLine = os.path.join(env['TSTDIR'],TST+EXT)+' '+PRELUDE+' (<=%d,%d,%d)
...' % (TIMEOUT,CTIMEOUT,STIMEOUT)
@@ -2071,6 +2082,12 @@
else:
PRINTF = "printf"
+ # Release reserved sockets and run the actual test
+ MAPIsockets[0].close()
+ MAPIsockets[1].close()
+ XRPCsockets[0].close()
+ XRPCsockets[1].close()
+
ServerReady = True
if SERVER in ["MAPI", "SQL", "XQUERY"]:
SrvrOutFile = TST+".server.out"
@@ -2325,7 +2342,7 @@
TestErr.close()
-### DoIt(env, SERVER, CALL, TST, EXT, PRELUDE, TestOut, TestErr, STIMEOUT,
CTIMEOUT, TIMEOUT, MkillUsersAT, ME) #
+### DoIt(env, SERVER, CALL, TST, EXT, PRELUDE, TestOut, TestErr, STIMEOUT,
CTIMEOUT, TIMEOUT, MkillUsersAT, ME, MAPIsockets, XRPCsockets) #
def Check(command, input) :
proc = subprocess.Popen(command+" || echo ! Exit 1", shell = True, stdin =
subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE,
universal_newlines = True)
@@ -2981,10 +2998,10 @@
exe = {}
exe['Mtimeout'] = CheckExec('Mtimeout') , 'Mtimeout -timeout
%d ' % par['TIMEOUT']
if env['VERSION'] >= 49900:
- exe['Mserver'] = CheckExec('mserver5') , '%s mserver5
"--config=%s" --debug=%s %s %s %s %s --set mapi_open=true --set mapi_port=%s
--set xrpc_port=%s --set monet_prompt= --trace' % \
+ exe['Mserver'] = CheckExec('mserver5') , '%s mserver5
"--config=%s" --debug=%s %s %s %s %s --set mapi_open=true --set xrpc_open=true
--set mapi_port=%s --set xrpc_port=%s --set monet_prompt= --trace' % \
(env['setDBG'],
opts.config, env['GDK_DEBUG'], env['setMONETDB_MOD_PATH'],
env['setGDK_DBFARM'], env['setSQL_LOGDIR'], env['setXQUERY_LOGDIR'],
env['MAPIPORT'], env['XRPCPORT'])
else:
- exe['Mserver'] = CheckExec('Mserver') , '%s Mserver
"--config=%s" --debug=%s %s %s %s %s --set mapi_open=true --set mapi_port=%s
--set xrpc_port=%s --set monet_prompt= --trace' % \
+ exe['Mserver'] = CheckExec('Mserver') , '%s Mserver
"--config=%s" --debug=%s %s %s %s %s --set mapi_open=true --set xrpc_open=true
--set mapi_port=%s --set xrpc_port=%s --set monet_prompt= --trace' % \
(env['setDBG'],
opts.config, env['GDK_DEBUG'], env['setMONETDB_MOD_PATH'],
env['setGDK_DBFARM'], env['setSQL_LOGDIR'], env['setXQUERY_LOGDIR'],
env['MAPIPORT'], env['XRPCPORT'])
exe['Mdiff'] = CheckExec('Mdiff') , 'Mdiff'
exe['python'] = CheckExec(sys.executable) , sys.executable
@@ -3158,13 +3175,14 @@
if MissingMods:
ErrXit('Stopping Pathfinder testing as modules "%s" are
missing!' % str(MissingMods))
- host = 'localhost'
- for S in 'MAPI', 'XRPC':
- port = int(env[S+'PORT'])
- busy, Serrno, Serrstr = CheckPort(host,port)
+ for SRVR in 'MAPI', 'XRPC':
+ port = int(env[SRVR+'PORT'])
+ busy, host, Serrno, Serrstr, S = CheckPort(port)
+ S[0].close()
+ S[1].close()
if busy:
- Warn("Skipping %s tests as %sPORT=%s is not available (Error
#%d: '%s')!" % (S,S,env[S+'PORT'],Serrno,Serrstr))
- BusyPorts.append(S)
+ Warn("Skipping %s tests as %sPORT=%s is not available on %s
(Error #%d: '%s')!" % (SRVR,SRVR,env[SRVR+'PORT'],host,Serrno,Serrstr))
+ BusyPorts.append(SRVR)
# create '.Mapprove.rc'
env['OS'] = os.environ['OS']
Index: Mfilter.py.in
===================================================================
RCS file: /cvsroot/monetdb/MonetDB/src/testing/Mfilter.py.in,v
retrieving revision 1.146
retrieving revision 1.146.4.1
diff -u -d -r1.146 -r1.146.4.1
--- Mfilter.py.in 20 May 2007 08:45:40 -0000 1.146
+++ Mfilter.py.in 13 Aug 2007 22:42:41 -0000 1.146.4.1
@@ -66,7 +66,7 @@
## r"^server listening on port [0-9]*$",
## r"^SQL connected to database .* using schema .*$",
r"^MAPI = [EMAIL PROTECTED]:[0-9]*$",
- r'^QUERY = execute at { "localhost:[0-9]*" }$',
+ r'^QUERY = execute at { ".*:[0-9]*" }$',
r"^Pathfinder (?:XQuery Compiler|XML Shredder)
\(.Revision: .* .\)$",
## r"^SQL .* affected$",
## r": Symbol .(?:exit|_setjmp). causes overflow in
R_X86_64_PC32 relocation$",
@@ -211,11 +211,6 @@
r'^QUERY = (?:\-\-|select|insert|INSERT) ',
## # pathfinder: loader/usage (without BerkeleyDB):
## r'^ -c: compress node properties \(40% encoding
speed\)$',
- # Mtest warnings:
- r"^! Socket-Check failed for (?:SQL|MAPI)server on
<[a-zA-Z0-9]*:[0-9]+> with #[0-9]+; '.*' !$",
-## r'^! Waiting [0-9]+ seconds \([0-9]/[0-9]\) \.\.\.
(?:Done\.)?$',
- r'^! Using new (?:SQL|MAPI)PORT=[0-9]+ !$',
- r'^! (?:SQL|MAPI)PORT was not properly released by Mserver
!$',
# ld warnings on IRIX64:
r"^ld64: WARNING 84 : .*/common/.libs/libmutils.so is not
used for resolving any symbol.$",
# (extra) error messages that used to occur with M4/sql but
don't any more with M5/sql:
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins