Changeset: a5c9679039d3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a5c9679039d3
Modified Files:
testing/Mtest.py.in
Branch: Sep2022
Log Message:
Get --dbg option working.
Use e.g. --dbg='gdb --args' and don't forget to add -t0 as well
(debugging will easily take lots of time).
The initial call to mserver5 in GetBitsAndModsAndThreads will not be
debugged.
diffs (110 lines):
diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -1355,7 +1355,7 @@ def PerformDir(env, testdir, testlist, t
else:
vaultopt = []
if not oneserver:
- pSrvr =
ServerClass(splitcommand(env['exe']['mserver5'][1]) + ['--dbpath=%s' %
LogDBdir] + vaultopt + mserver5_opts, open(os.devnull, 'w'), open(os.devnull,
'w'), par['TIMEOUT'], os.path.join(LogDBdir, '.started'))
+ pSrvr = ServerClass(splitcommand(env['exe']['mserver5'][1]
+['--dbpath=%s' % LogDBdir] + vaultopt + mserver5_opts), open(os.devnull, 'w'),
open(os.devnull, 'w'), par['TIMEOUT'], os.path.join(LogDBdir, '.started'),
dbg=env.get('DBG'))
pSrvr.LaunchIt()
pSrvr.terminate()
if not os.path.exists(TSTTRGDIR):
@@ -1401,7 +1401,8 @@ def PerformDir(env, testdir, testlist, t
openutf8(os.path.join(TSTTRGDIR,
'SingleServer.err'), 'a'),
0,
pollfile,
- inmem=inmem)
+ inmem=inmem,
+ dbg=env.get('DBG'))
os.chdir(TSTTRGDIR)
pSrvr.LaunchIt()
if pSrvr.port is None:
@@ -2574,7 +2575,7 @@ def killProc(proc, outfile = None, cmd =
killchildren(proc.pid)
class ServerClass:
- def __init__(self, cmd, TestOut, TestErr, TimeOut, pollfile, inmem=False):
+ def __init__(self, cmd, TestOut, TestErr, TimeOut, pollfile, inmem=False,
dbg=None):
self.proc = None
self.timer = None
self.outfile = TestOut
@@ -2585,6 +2586,7 @@ class ServerClass:
self.timeout = TimeOut
self.pollfile = pollfile
self.inmem = inmem
+ self.dbg = dbg
def poll(self):
return self.proc.poll()
@@ -2614,25 +2616,31 @@ class ServerClass:
if procdebug:
print('LaunchIt: starting process "%s" (inpipe)\n' % '"
"'.join(self.cmd))
setpgrp = True
- outfile = self.outfile
+ stdin = open(os.devnull)
+ stdout = self.outfile
+ stderr = self.errfile
+ cmd = self.cmd
if self.inmem:
- outfile = process.PIPE
+ stdout = process.PIPE
elif self.pollfile:
try:
os.unlink(self.pollfile)
except OSError:
pass
+ if self.dbg:
+ stdin = stdout = stderr = None
+ cmd = splitcommand(self.dbg) + self.cmd
else:
- outfile = process.PIPE
+ stdout = process.PIPE
if os.name == "nt":
- proc = process.Popen(self.cmd, stdin=open(os.devnull),
stdout=outfile,
- stderr=self.errfile, text=True,
+ proc = process.Popen(cmd, stdin=stdin, stdout=stdout,
+ stderr=stderr, text=True,
creationflags=process.CREATE_NEW_PROCESS_GROUP)
else:
- proc = process.Popen(self.cmd, stdin=open(os.devnull),
stdout=outfile,
- stderr=self.errfile, text=True)
+ proc = process.Popen(cmd, stdin=stdin, stdout=stdout,
+ stderr=stderr, text=True)
# maybe buffer output as it comes to avoid deadlock
- if outfile == process.PIPE:
+ if stdout == process.PIPE:
proc.stdout = process._BufferedPipe(proc.stdout)
if self.errfile == process.PIPE:
proc.stderr = process._BufferedPipe(proc.stderr)
@@ -2831,7 +2839,7 @@ def DoIt(env, SERVER, CALL, TST, EXT, Te
if os.path.isfile(TST + '.options5'):
Srvr.extend(openutf8(TST + '.options5').read().split())
Srvr.extend(mserver5_opts)
- pSrvr = ServerClass(Srvr, SrvrOut, SrvrErr, TIMEOUT,
os.path.join(dbpath, '.started'))
+ pSrvr = ServerClass(Srvr, SrvrOut, SrvrErr, TIMEOUT,
os.path.join(dbpath, '.started'), dbg=env.get('DBG'))
pSrvr.LaunchIt()
if pSrvr.port is None:
print('\nFailed to start server.\n')
@@ -3658,10 +3666,6 @@ def main(argv) :
env['setMONETDB_MOD_PATH'] = eval(dft['setMONETDB_MOD_PATH'])
else:
env['setMONETDB_MOD_PATH'] = ''
- if 'DBG' in env:
- env['setDBG'] = env['DBG']
- else:
- env['setDBG'] = ''
#TODO:
## in case of inconsistencies, try to fallback to "save" settings
@@ -3847,8 +3851,8 @@ def main(argv) :
SOCK = ""
exe = {}
- exe['mserver5'] = CheckExec('mserver5') , '%s mserver5
--debug=%s --set gdk_nr_threads=%s %s --set mapi_listenaddr=all --set
mapi_port=0 %s %s' % \
- (env['setDBG'],
env['GDK_DEBUG'], env['GDK_NR_THREADS'], env['setMONETDB_MOD_PATH'], SOCK, not
nomito and '--forcemito' or '')
+ exe['mserver5'] = CheckExec('mserver5') , 'mserver5
--debug=%s --set gdk_nr_threads=%s %s --set mapi_listenaddr=all --set
mapi_port=0 %s %s' % \
+
(env['GDK_DEBUG'], env['GDK_NR_THREADS'], env['setMONETDB_MOD_PATH'], SOCK, not
nomito and '--forcemito' or '')
exe['ruby_client'] = CheckExec(env['RUBYCLIENT'].split(None, 1)[0])
, '%s %s' % (env['RUBYCLIENT'], '${PORT}')
exe['MAL_Client'] = CheckExec(env['MALCLIENT'].split(None, 1)[0])
, '%s --host=%s --port=%s' % (env['MALCLIENT'], HOST, '${PORT}')
exe['SQL_Client'] = CheckExec(env['SQLCLIENT'].split(None, 1)[0])
, '%s -i -e --host=%s --port=%s' % (env['SQLCLIENT'], HOST, '${PORT}')
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]