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 -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org