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]

Reply via email to