Changeset: bb55959a22ab for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bb55959a22ab
Modified Files:
testing/Mtest.py.in
Branch: default
Log Message:
Merge with Aug2024 branch.
diffs (truncated from 747 to 300 lines):
diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -168,57 +168,6 @@ if os.path.exists('/usr/bin/coredumpctl'
# if we can't raise the limit, just forget it
pass
-def _configure(str):
- # expand configure variables in str and return result
- config = [
- ('{source}', '@QXSOURCE@'),
- ('${build}', '@QXBUILD@'),
-
- ('${bindir}', '@QXbindir@'),
-## ('${sbindir}', '@QXsbindir@'),
- ('${libexecdir}', '@QXlibexecdir@'),
- ('${datarootdir}', '@QXdatarootdir@'),
- ('${datadir}', '@QXdatadir@'),
- ('${sysconfdir}', '@QXsysconfdir@'),
- ('${localstatedir}', '@QXlocalstatedir@'),
- ('${libdir}', '@QXlibdir@'),
- ('${includedir}', '@QXincludedir@'),
-## ('${oldincludedir}', '@QXoldincludedir@'),
- ('${infodir}', '@QXinfodir@'),
- ('${mandir}', '@QXmandir@'),
- ('${Qbindir}', '@QXbindir@'),
-## ('${Qsbindir}', '@QXsbindir@'),
- ('${Qlibexecdir}', '@QXlibexecdir@'),
- ('${Qdatarootdir}', '@QXdatarootdir@'),
- ('${Qdatadir}', '@QXdatadir@'),
- ('${Qsysconfdir}', '@QXsysconfdir@'),
- ('${Qlocalstatedir}', '@QXlocalstatedir@'),
- ('${Qlibdir}', '@QXlibdir@'),
- ('${Qincludedir}', '@QXincludedir@'),
-## ('${Qoldincludedir}', '@QXoldincludedir@'),
- ('${Qinfodir}', '@QXinfodir@'),
- ('${Qmandir}', '@QXmandir@'),
- # put these at end (in this order!) for efficiency
- ('${exec_prefix}', '@QXexec_prefix@'),
- ('${Qexec_prefix}', '@QXexec_prefix@'),
- ('${prefix}', '@QXprefix@'),
- ('${Qprefix}', '@QXprefix@'),
- ]
- if os.name == 'nt':
- str = str.replace('%prefix%', '${prefix}')
- str = str.replace('%exec_prefix%', '${exec_prefix}')
- changed = True
- while '$' in str and changed:
- changed = False
- for key, val in config:
- if os.name == 'nt':
- val = val.replace('%prefix%', '${prefix}')
- val = val.replace('%exec_prefix%', '${exec_prefix}')
- nstr = str.replace(key, val)
- changed = changed or str != nstr
- str = nstr
- return str
-
# use our own process module (instead of subprocess) because it has
# _BufferedPipe
try:
@@ -227,7 +176,7 @@ except ImportError:
try:
import MonetDBtesting.process as process
except ImportError:
- p = _configure(os.path.join('@QXprefix@', '@QXPYTHON_LIBDIR@'))
+ p = os.path.join('@QXprefix@', '@QXPYTHON_LIBDIR@')
sys.path.insert(0, p)
import MonetDBtesting.process as process
if 'PYTHONPATH' in os.environ:
@@ -319,9 +268,9 @@ def remove(file):
if platform.system() in ('Windows', 'Darwin'):
shutil.rmtree(file, ignore_errors=True)
else:
- Warn('could not remove {}'.format(file))
+ Warn(f'could not remove {file}')
except:
- Warn('could not remove {}'.format(file))
+ Warn(f'could not remove {file}')
def isexecutable(TST, ext = '.sh') :
if os.name == "nt":
@@ -331,15 +280,10 @@ def isexecutable(TST, ext = '.sh') :
if os.path.isfile(TST+ext) or os.path.isfile(TST+ext+".src"):
return (True, ext)
elif os.name == "posix":
- #TODO:
- # check with "file", and set executable
TST += ext
if ( os.path.isfile(TST ) and os.access(TST ,os.X_OK) ) or
\
( os.path.isfile(TST+".src") and os.access(TST+".src",os.X_OK) ):
return (True, ext)
- #TODO:
- #else:
- # ???
return (False, '')
### isexecutable(TST, ext = '.sh') #
@@ -615,17 +559,6 @@ stylesheet = Element('style', None, Text
TIMES = []
-#TODO:
-#class TimeoutError:
-# def __init__(self, text):
-# self.text = text
-# def __str__(self):
-# return self.text
-#
-#def AlarmHandler(signum, frame) :
-# raise TimeoutError, "Timeout"
-#### AlarmHandler(signum, frame) #
-
def ErrMsg(TEXT) :
print(end='', flush=True)
print("\n%s: ERROR: %s\n" % (THISFILE, TEXT), file=sys.stderr,
flush=True)
@@ -651,12 +584,6 @@ def startswithpath(str,pre) :
return os.path.normcase(str[:len(pre)]) == os.path.normcase(pre)
### startswithpath(str,pre) #
-##def path(str) :
-## return str.replace('/', os.sep)
-### path(str) #
-##def url(str) :
-## return str.replace(os.sep, '/')
-### url(str) #
import urllib.request, urllib.parse
path = urllib.request.url2pathname
def url(str) :
@@ -951,9 +878,6 @@ def CreateTstWhatXhtml (env, TST, stable
html.write(f, True)
f.close()
-#TODO?
-# <A HREF='.Mtest.Slave.Log.OutErr'
TARGET='"""+DISTVER+"_"+TSTDIR+"_"+TST+"_"+WHAT[1:]+"""_body'>LOG</A>).
-### CreateTstWhatXhtml (env, TST, stableWHAT, EXT, results) #
def CreateSrcIndex (env, TST, EXT) :
TSTSRCDIR = env['TSTSRCDIR']
@@ -1314,8 +1238,6 @@ def PerformDir(env, testdir, testlist, t
raise
except:
Warn("database '%s` exists, but destroying it failed;
skipping tests in '%s`!" % (TSTDB, TSTSRCDIR))
- #TODO:
- # add "something" to HTML output
return td, elem, max(FdOut, FdErr), interrupted,
test_progress
keyfile = os.path.join(LogDBdir, '.vaultkey')
if os.path.isabs(LogDBdir) and not os.path.exists(LogDBdir):
@@ -1323,8 +1245,6 @@ def PerformDir(env, testdir, testlist, t
os.makedirs(LogDBdir)
except:
Warn("creating database '%s` failed; skipping tests in
'%s`!" % (TSTDB, TSTSRCDIR))
- #TODO:
- # add "something" to HTML output
return td, elem, max(FdOut, FdErr), interrupted,
test_progress
else:
if not initdb:
@@ -1338,8 +1258,6 @@ def PerformDir(env, testdir, testlist, t
z = zipfile.ZipFile(initdb)
except IOError:
Warn("initial database '%s` cannot be opened; skipping
tests in '%s`!" % (initdb, TSTSRCDIR))
- #TODO:
- # add "something" to HTML output
return td, elem, max(FdOut, FdErr), interrupted,
test_progress
try:
z.extractall(LogDBdir)
@@ -1347,20 +1265,17 @@ def PerformDir(env, testdir, testlist, t
raise
except:
Warn("initial database '%s` cannot be extracted; skipping
tests in '%s`!" % (initdb, TSTSRCDIR))
- #TODO:
- # add "something" to HTML output
return td, elem, max(FdOut, FdErr), interrupted,
test_progress
z.close()
if os.path.exists(keyfile):
- vaultopt = ['--set', 'monet_vault_key={}'.format(keyfile)]
+ vaultopt = ['--set', f'monet_vault_key={keyfile}']
else:
vaultopt = []
if not oneserver:
- pSrvr = ServerClass(splitcommand(env['exe']['mserver5'][1]
+[f'--dbpath={LogDBdir}'] + vaultopt + mserver5_opts), open(os.devnull, 'w'),
open(os.devnull, 'w'), par['TIMEOUT'], os.path.join(LogDBdir, '.started'),
TSTDB, dbg=env.get('DBG'))
+ pSrvr = ServerClass(env['exe']['mserver5'][1] +
[f'--dbpath={LogDBdir}'] + vaultopt + mserver5_opts, open(os.devnull, 'w'),
open(os.devnull, 'w'), par['TIMEOUT'], os.path.join(LogDBdir, '.started'),
TSTDB, dbg=env.get('DBG'))
pSrvr.LaunchIt()
pSrvr.terminate()
if not os.path.exists(TSTTRGDIR):
- #TODO: set mode to umask
os.makedirs(TSTTRGDIR)
body_good = []
@@ -1383,15 +1298,15 @@ def PerformDir(env, testdir, testlist, t
if o != 'nodrop':
opts.append(o)
if inmem:
- cmd = splitcommand(env['exe']['mserver5'][1]) +
['--set', 'gdk_dbname=%s' % TSTDB, '--in-memory'] + mserver5_opts + opts
+ cmd = env['exe']['mserver5'][1] + ['--set',
f'gdk_dbname={TSTDB}', '--in-memory'] + mserver5_opts + opts
pollfile = None
cmd.append('--set')
-
cmd.append('gdk_dbtrace={}'.format(os.path.join(LogDBdir, 'mdbtrace.log')))
+ cmd.append(f'gdk_dbtrace={os.path.join(LogDBdir,
"mdbtrace.log")}')
else:
- cmd = splitcommand(env['exe']['mserver5'][1]) +
['--dbpath=%s' % LogDBdir] + mserver5_opts + opts
+ cmd = env['exe']['mserver5'][1] +
[f'--dbpath={LogDBdir}'] + mserver5_opts + opts
pollfile = os.path.join(LogDBdir, '.started')
if os.path.exists(keyfile):
- cmd.extend(['--set',
'monet_vault_key={}'.format(keyfile)])
+ cmd.extend(['--set', f'monet_vault_key={keyfile}'])
if env.get('MULTIFARM'):
cmd.append('--dbextra=%s' %
os.path.join(env['GDK_DBFARM'], TSTPREF + '_transient'))
shutil.rmtree(os.path.join(env['GDK_DBFARM'], TSTPREF
+ '_transient'),
@@ -1476,7 +1391,7 @@ def PerformDir(env, testdir, testlist, t
for ext in ['out', 'err']:
o = openutf8(os.path.join(TSTTRGDIR,
f'SingleServer.{ext}.html'), 'w')
o.write('<html>\n')
- o.write('<head><title>{} standard
{}</title></head>\n'.format(TSTDIR, 'output' if ext == 'out' else 'error'))
+ o.write(f'<head><title>{TSTDIR} standard {"output" if
ext == "out" else "error"}</title></head>\n')
o.write('<body>\n')
empty = True
sigusr1 = False
@@ -1516,7 +1431,7 @@ def PerformDir(env, testdir, testlist, t
o.write(span1 + line.replace('&',
'&').replace('<', '<').replace('>', '>') + span2)
if nused + nfree != ntotal:
o.write(f'<span style="background-color:
rgb(100%,0%,0%);">Mismatch in free bats: total bats = {ntotal}, #free =
{nfree}, #used = {nused}</span>\n')
- o.write('{}\n</body>\n</html>\n'.format('<p>(nothing
to see here)</p>' if empty else '</pre>'))
+ o.write(f'{"<p>(nothing to see here)</p>" if empty
else "</pre>"}\n</body>\n</html>\n')
o.close()
else:
for ext in ['out', 'err']:
@@ -1550,7 +1465,7 @@ def PerformDir(env, testdir, testlist, t
print('\r', ' '*(ttywidth or 100), end='', sep='')
print('\r', end='', sep='')
prred('ERROR')
- print(' in directory {}'.format(TSTDIR))
+ print(f' in directory {TSTDIR}')
# remove extra files created by tests
for f in listdir(TSTTRGDIR):
@@ -1730,13 +1645,13 @@ def returnCode(proc, f = None):
def GetBitsAndModsAndThreads(env) :
global setpgrp
rtrn = 0
- cmd = splitcommand(env['exe']['mserver5'][1])
+ cmd = env['exe']['mserver5'][1].copy()
dbpath = os.path.join(env['GDK_DBFARM'], TSTPREF)
try:
os.unlink(os.path.join(dbpath, '.started'))
except OSError:
pass
- cmd.append('--dbpath=%s' % dbpath)
+ cmd.append(f'--dbpath={dbpath}')
os.environ['TSTDB'] = TSTPREF
cmd.extend(mserver5_opts)
if procdebug:
@@ -1998,9 +1913,6 @@ def RunTest(env, TST, COND, oktests, len
('.sql', '.sql', 'sql', 'SQL'),
('.R', '.R', 'R', 'SQL'),
('.rb', '.rb', 'ruby', 'SQL'),
- #TODO:
- # ('.java', '.java', 'Java', 'SQL'),
- # ('.odmg', '.odmg', 'odmg', 'SQL'),
)
for tst, ext, cll, srv in tests:
if os.path.isfile(TST + tst) or \
@@ -2013,8 +1925,6 @@ def RunTest(env, TST, COND, oktests, len
else:
if os.name == "nt":
reason = "test missing:
'"+os.path.join(TSTSRCDIR,TST)+".(exe|com|bat|cmd|py|sql)`"
- #TODO:
- #elif os.name == "posix":
else:
reason = "test missing:
'"+os.path.join(TSTSRCDIR,TST)+"[.py|.sql|.R|.rb]`"
if verbosity > 1:
@@ -2215,9 +2125,6 @@ def RunTest(env, TST, COND, oktests, len
elif EXT == ".malS" and not env['exe']['mserver5'][0]:
reason = "as %s is not available." % env['MSERVER'].split(None, 1)[0]
elem = SkipTest(env, TST, EXT, reason, length)
- #TODO:
- #elif [ "$EXT" = "java" -a ! "`type -path java`" ] ; then
- #elem = SkipTest(env, TST, EXT, "as java is not in $PATH.", length)
elif MissingMods:
reason = "as modules '%s` are missing." % str(MissingMods)
elem = SkipTest(env, TST, EXT, reason, length)
@@ -2381,21 +2288,6 @@ Password = {passwd or "monetdb"}-Wrong
else:
sockerr = F_OK
- #TODO:
- ##if [ ! -f $TSTTRGBASE/Tests/.old.left-over.tmp.bats. ] ; then touch
$TSTTRGBASE/Tests/.old.left-over.tmp.bats. ; fi
- ##LEFTOVERTMPBATS="`find $MONETDBFARM/dbfarm/*/bat/ -name tmp_\*
-print 2> /dev/null`"
- ##if [ "$LEFTOVERTMPBATS" ] ; then
- ## ls -alF $LEFTOVERTMPBATS 2> /dev/null >
.all.left-over.tmp.bats.
- ## diff -u0 $TSTTRGBASE/Tests/.old.left-over.tmp.bats.
.all.left-over.tmp.bats. | grep '^\+[^\+]' > .new.left-over.tmp.bats.
- ##fi
- ##if [ -s .new.left-over.tmp.bats. ] ; then
- ## echo -e "\n!ERROR: persistent temporary bats remained:" >>
$LOGFILE.err
- ## sed 's|^\+|! |g' .new.left-over.tmp.bats. >>
$LOGFILE.err
- ## echo >>
$LOGFILE.err
- ##fi
- ##rm -f .new.left-over.tmp.bats.
$TSTTRGBASE/Tests/.old.left-over.tmp.bats.
- ##if [ -f .all.left-over.tmp.bats. ] ; then mv -f
.all.left-over.tmp.bats. $TSTTRGBASE/Tests/.old.left-over.tmp.bats. ; fi
-
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]