Update of /cvsroot/monetdb/MonetDB/src/testing
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv13271/src/testing
Modified Files:
Tag: GDK-2
MkillUsers.in Mtest.py.in README
Log Message:
propagated changes of Tuesday Aug 21 2007 - Friday Aug 24 2007
from the development trunk to the GDK-2 branch
Index: README
===================================================================
RCS file: /cvsroot/monetdb/MonetDB/src/testing/README,v
retrieving revision 1.35
retrieving revision 1.35.4.1
diff -u -d -r1.35 -r1.35.4.1
--- README 20 Feb 2007 10:33:39 -0000 1.35
+++ README 24 Aug 2007 09:02:00 -0000 1.35.4.1
@@ -39,9 +39,9 @@
* a MIL script to be executed by Mserver -single (TST.milS) (',^,`)
(-single has been removed, so .milM & .milS are
treated equally, now)
- * a MIL script to be executed by MapiClient -lmil (TST.milC) (",^,`)
- * a SQL script to be executed by MapiClient -lsql (TST.sql) (",^,`)
- * a XQUERY script to be executed by MapiClient -lxquery (TST.xq) (",^,`)
+ * a MIL script to be executed by mclient -lmil (TST.milC) (",^,`)
+ * a SQL script to be executed by mclient -lsql (TST.sql) (",^,`)
+ * a XQUERY script to be executed by mclient -lxquery (TST.xq) (",^,`)
(~) In case the name of an arbitrary executable or Python script is
suffixed with ".MAPI" (i.e., TST.MAPI[.(exe|com|bat|cmd|py)]),
Mtest.py starts an Mserver with a MAPI-listerner on MAPIPORT
@@ -56,7 +56,7 @@
(') For Mserver, if several files are present named
TST_sXX.mil(M|S) (XX={00,01,...,99})
these are executed by subsequently calling Mserver
- (") For MapiClient, if several files are present named
+ (") For mclient, if several files are present named
(1) TST_sXX.(milC|sql|xq) (XX={00,01,...,99})
these are executed subsequently using the same Mserver
(2) TST_pXX.(milC|sql|xq) (XX={00,01,...,99})
@@ -82,23 +82,23 @@
+ for frontend tests, a MIL script to be used
instead of the frontends dbinit script.
(optional) (TST.dbinit) (^,`)
- + for MapiClient tests, a MIL script to be used as
+ + for mclient tests, a MIL script to be used as
prologue for Mserver, i.e., a script that is executed by Mserver after
dbinit is executed, but before (the first)
- MapiClient connects to Mserver
+ mclient connects to Mserver
(optional) (TST.prologue)
(^,`)
+ for SQL tests, a MAL script to be used as
prologue for mserver5, i.e., a script that is executed by mserver5 after
- "include sql;" is called and before (the first) SQL-MapiClient connects
+ "include sql;" is called and before (the first) SQL-mclient connects
to mserver5
(optional)
(TST.prologue5)(^,`)
- + for MapiClient tests, a MIL script to be used as
+ + for mclient tests, a MIL script to be used as
epilogue for Mserver, i.e., a script that is executed by Mserver after
- (all) MapiClient(s) have finished
+ (all) mclient(s) have finished
(optional) (TST.epilogue)
(^,`)
- + for MapiClient tests, a MAL script to be used as
+ + for mclient tests, a MAL script to be used as
epilogue for mserver5, i.e., a script that is executed by mserver5 after
- (all) MapiClient(s) have finished
+ (all) mclient(s) have finished
(optional)
(TST.epilogue5)(^,`)
+ a file that contains a list of modules (one per line)
required by the test (optional) (TST.modules)
(^,`)
@@ -124,15 +124,15 @@
* python TST.py [TST.prelude]
* Mserver --dbname=TSTDB [TST.prelude] < TST.mil(M|S)
* Mserver --dbname=TSTDB --set mapi_port=$MAPIPORT --set xrpc_port=$XRPCPORT
--dbinit="module(mapi); mil_start();" [TST.prologue] &
- MapiClient -lmil < TST[_(s|p)XX].milC
+ mclient -lmil < TST[_(s|p)XX].milC
or TST[.exe|.com|.bat|.cmd] TST [TST.prelude]
or python TST.py [TST.prelude]
* Mserver --dbname=TSTDB --set mapi_port=$MAPIPORT --set xrpc_port=$XRPCPORT
--dbinit="module(sql_server);" [TST.prologue] &
- MapiClient -lsql < TST[_(s|p)XX].sql
+ mclient -lsql < TST[_(s|p)XX].sql
or TST[.exe|.com|.bat|.cmd] TST [TST.prelude]
or python TST.py [TST.prelude]
* Mserver --dbname=TSTDB --set mapi_port=$MAPIPORT --set xrpc_port=$XRPCPORT
--dbinit="module(pathfinder);" [TST.prologue] &
- MapiClient -lxquery -oxml < TST[_(s|p)XX].xq
+ mclient -lxquery -oxml < TST[_(s|p)XX].xq
or TST[.exe|.com|.bat|.cmd] TST [TST.prelude]
or python TST.py [TST.prelude]
@@ -148,8 +148,8 @@
(Mserver is called with "--config=$MONETDB_CONF --debug=$GDK_DEBUG
$setMONETDB_MOD_PATH --set monet_prompt=".
See below and "Mserver --help" for details.)
- (MapiClient is called with "--port=$MAPIPORT".
- See "MapiClient --help" for details.)
+ (mclient is called with "--port=$MAPIPORT".
+ See "mclient --help" for details.)
- Mtest.py uses three directory trees based at TSTSRCBASE, TSTBLDBASE, and
@@ -227,10 +227,10 @@
TSTSRCBASE $MONETDB_SOURCE base of test
source tree
TSTBLDBASE $MONETDB_BUILD base of
extracted test tree
TSTTRGBASE $MONETDB_PREFIX base for test
output
- MAPICLIENT MapiClient -lmil mapi-client
program `)
- SQLCLIENT MapiClient -lsql sql-client
program `)
+ MAPICLIENT mclient -lmil mil-client
program `)
+ SQLCLIENT mclient -lsql sql-client
program `)
SQLDUMP msqldump sql-dump
program `)
- XQUERYCLIENT MapiClient -lxquery -oxml xquery-client
program `)
+ XQUERYCLIENT mclient -lxquery -oxml xquery-client
program `)
`) Alternative Mapi-, SQL-, & XQUERY- client programs need to accept (or
ignore)
"--config=", "--host=", & "--port=" options.
Index: Mtest.py.in
===================================================================
RCS file: /cvsroot/monetdb/MonetDB/src/testing/Mtest.py.in,v
retrieving revision 1.280.2.2
retrieving revision 1.280.2.3
diff -u -d -r1.280.2.2 -r1.280.2.3
--- Mtest.py.in 21 Aug 2007 13:25:14 -0000 1.280.2.2
+++ Mtest.py.in 24 Aug 2007 09:01:55 -0000 1.280.2.3
@@ -113,12 +113,16 @@
F_SKIP = -1
F_OK = 0
F_WARN = 1
-F_ERROR = 2
+F_SOCK = 2
+F_TIME = 3
+F_ERROR = 4
FAILURES = {
F_SKIP : "F_SKIP",
F_OK : "F_OK",
F_WARN : "F_WARN",
+ F_SOCK : "F_SOCK",
+ F_TIME : "F_TIME",
F_ERROR : "F_ERROR"
}
@@ -310,8 +314,11 @@
green = '#00aa00'
darkgreen = '#005500'
orange = '#ffaa00'
+purple = '#aa00aa'
stylesheet = Element('style', None, Text('''
.error { font-weight: bold; font-style: italic; color: red; }
+.timeout { font-weight: bold; font-style: italic; color: purple; }
+.socket { font-weight: bold; font-style: italic; color: purple; }
.warning { font-weight: bold; color: orange; }
.good { }
.header { font-family: helvetica, arial; text-align: center; }
@@ -491,7 +498,7 @@
os.chdir(BACK)
### CreateHtmlIndex (env, *body) #
-def CreateTstWhatXhtml (env, TST, stableWHAT, EXT) :
+def CreateTstWhatXhtml (env, TST, stableWHAT, EXT, SockTime) :
WHAT = stableWHAT[7:11]
TSTDIR = env['TSTDIR']
TSTSRCDIR = env['TSTSRCDIR']
@@ -528,6 +535,13 @@
f.close()
diffclass = 'error'
difftext = 'Major differences'
+ if diffclass == 'error' and SockTime in (F_SOCK, F_TIME):
+ if SockTime == F_SOCK:
+ diffclass = 'socket'
+ difftext = difftext + ' (Socket)'
+ if SockTime == F_TIME:
+ diffclass = 'timeout'
+ difftext = difftext + ' (Timeout)'
SYSTEM = OSVER+":"
if COMPILER:
SYSTEM = COMPILER+", "+SYSTEM
@@ -751,9 +765,13 @@
### CreateSrcIndex (env, TST, EXT) #
def AddHref (href, target, linktext, diff) :
- if diff == 2:
+ if diff == F_ERROR:
klass = 'error'
- elif diff == 1:
+ elif diff == F_TIME:
+ klass = 'timeout'
+ elif diff == F_SOCK:
+ klass = 'soket'
+ elif diff == F_WARN:
klass = 'warning'
else:
klass = 'good'
@@ -765,43 +783,49 @@
return [a]
### AddHref (TSTDIR, TST, WHAT, diff) #
-def AddTstToHtmlIndex (env, TST, STABLEout, STABLEerr, EXT) :
+def AddTstToHtmlIndex (env, TST, STABLEout, STABLEerr, EXT, SockTime) :
TSTDIR = env['TSTDIR']
- CreateTstWhatXhtml(env, TST, STABLEout, EXT)
- CreateTstWhatXhtml(env, TST, STABLEerr, EXT)
+ CreateTstWhatXhtml(env, TST, STABLEout, EXT, F_OK)
+ CreateTstWhatXhtml(env, TST, STABLEerr, EXT, SockTime)
for l in open(TST+".out.diff.html"):
pass
if l[:14] == '<!--NoDiffs-->':
- o = 0
+ o = F_OK
elif l[:17] == '<!--MinorDiffs-->':
- o = 1
+ o = F_WARN
elif l[:17] == '<!--MajorDiffs-->':
- o = 2
+ o = F_ERROR
else:
Warn("Unexpected last line in %s:\n%s" % (TST+".out.diff.html",l))
ff = open(TST+WHAT+".out.diff.html","a")
ff.write("\n<!--MajorDiffs-->\n")
ff.close()
- o = 2
+ o = F_ERROR
for l in open(TST+".err.diff.html"):
pass
if l[:14] == '<!--NoDiffs-->':
- e = 0
+ e = F_OK
elif l[:17] == '<!--MinorDiffs-->':
- e = 1
+ e = F_WARN
elif l[:17] == '<!--MajorDiffs-->':
- e = 2
+ e = F_ERROR
else:
Warn("Unexpected last line in %s:\n%s" % (TST+".err.diff.html",l))
ff = open(TST+WHAT+".err.diff.html","a")
ff.write("\n<!--MajorDiffs-->\n")
ff.close()
- e = 2
- if o == 2 or e == 2:
+ e = F_ERROR
+ if e == F_ERROR and SockTime in (F_SOCK, F_TIME):
+ e = SockTime
+ if o == F_ERROR or e == F_ERROR:
tstclass = 'error'
- elif o == 1 or e == 1:
+ elif e == F_TIME:
+ tstclass = 'timeout'
+ elif e == F_SOCK:
+ tstclass = 'socket'
+ elif o == F_WARN or e == F_WARN:
tstclass = 'warning'
else:
tstclass = 'good'
@@ -869,7 +893,7 @@
if not env.has_key('_'+TSTDIR+'_BODY_') or \
not env['_'+TSTDIR+'_BODY_'][0] or \
not env['_'+TSTDIR+'_BODY_'][1]:
- env['_'+TSTDIR+'_BODY_'] = ["."+TST+".SKIPPED", 1]
+ env['_'+TSTDIR+'_BODY_'] = ["."+TST+".SKIPPED", F_SKIP]
CreateSrcIndex(env, TST, EXT)
return td
### SkipTest(env, TST, EXT, REASON) #
@@ -891,8 +915,8 @@
def PerformDir(env, testdir, testlist, BusyPorts) :
td = 0
elem = None
- FdOut = -1
- FdErr = -1
+ FdOut = F_SKIP
+ FdErr = F_SKIP
TSTSRCBASE = env['TSTSRCBASE']
TSTPREF = env['TSTPREF']
if testdir == TSTSRCBASE:
@@ -1375,9 +1399,9 @@
### StableOutErr(env,par,TST,OS,RELEASE) #
def RunTest(env, TST, BusyPorts, COND) :
- Failed = -1
- FailedOut = -1
- FailedErr = -1
+ Failed = F_SKIP
+ FailedOut = F_SKIP
+ FailedErr = F_SKIP
TSTDB = env['TSTDB']
TSTDIR = env['TSTDIR']
TSTSRCDIR = env['TSTSRCDIR']
@@ -1505,7 +1529,7 @@
elem = SkipTest(env, TST, EXT, "as python is not available.")
#TODO:
#elif EXT == ".milC":
- #elem = SkipTest(env, TST, EXT, "as MapiClient-tests are temporary not
supported by "+THISFILE+".")
+ #elem = SkipTest(env, TST, EXT, "as mclient-tests are temporary not
supported by "+THISFILE+".")
#TODO:
#elif [ "$EXT" = "java" -a ! "`type -path java`" ] ; then
#elem = SkipTest(env, TST, EXT, "as java is not in $PATH.")
@@ -1514,7 +1538,7 @@
elif MissingBATs:
elem = SkipTest(env, TST, EXT, "as BATs '"+str(MissingBATs)+"` are
missing in database '"+TSTDB+"`.")
elif CALL == "milCXp":
- elem = SkipTest(env, TST, EXT, "as multiple MapiClients in parallel
are currently not supported by "+THISFILE+".")
+ elem = SkipTest(env, TST, EXT, "as multiple MIL clients in parallel
are currently not supported by "+THISFILE+".")
elif CALL == "sqlXp":
elem = SkipTest(env, TST, EXT, "as multiple SQL clients in parallel
are currently not supported by "+THISFILE+".")
elif CALL == "xqXp":
@@ -1717,8 +1741,9 @@
killed = 1
p.close()
- CheckSocket3(env, "MAPI", TestErrFile)
- CheckSocket3(env, "XRPC", TestErrFile)
+ sockerr = F_OK
+ sockerr = max(sockerr, CheckSocket3(env, "MAPI", TestErrFile))
+ sockerr = max(sockerr, CheckSocket3(env, "XRPC", TestErrFile))
#TODO:
##if [ ! -f $TSTTRGBASE/Tests/.old.left-over.tmp.bats. ] ; then touch
$TSTTRGBASE/Tests/.old.left-over.tmp.bats. ; fi
@@ -1735,13 +1760,13 @@
##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
- timeout = 0
+ timeout = F_OK
mto = re.compile("^!(Mtimeout:)? Timeout:", re.MULTILINE)
for l in open(TestErr.name):
if mto.match(l):
- timeout = 1
+ timeout = F_TIME
- if timeout:
+ if timeout == F_TIME:
if quiet:
STDOUT.write("\n%s : Timeout!\n" % TST)
else:
@@ -1815,7 +1840,7 @@
diff_html.write('<!--MajorDiffs-->\n')
diff_html.close()
timedout = 1
- if timeout: # test run timed out, expect major differences!
+ if timeout == F_TIME: # test run timed out, expect major
differences!
ACCURACYout = -1
while timedout and MDIFF == MDIFF1:
if ACCURACYout == -1:
@@ -1843,7 +1868,7 @@
diff_html.write('<!--MajorDiffs-->\n')
diff_html.close()
timedout = 1
- if timeout: # test run timed out, expect major differences!
+ if timeout == F_TIME: # test run timed out, expect major
differences!
ACCURACYerr = -1
while timedout and MDIFF == MDIFF1:
if ACCURACYerr == -1:
@@ -1855,7 +1880,7 @@
timedout = os.system('%s -q -I"%s" "%s" -A%d -r"%s"
"%s%s.FILTERED" "%s.test.err.FILTERED" "%s.err.diff.html"' % (MDIFF,
par['IGNORE'], par['CONTEXT'], ACCURACYerr, REVe, TST, STABLEerr, TST, TST))
ACCURACYerr = ACCURACYerr - 1
- FailedOut, FailedErr, elem = AddTstToHtmlIndex(env, TST,
STABLEout, STABLEerr, EXT)
+ FailedOut, FailedErr, elem = AddTstToHtmlIndex(env, TST,
STABLEout, STABLEerr, EXT, max(sockerr, timeout))
return TX,FailedOut,FailedErr,elem
### RunTest(env, TST, BusyPorts) #
@@ -1954,11 +1979,13 @@
### CheckSocket2(env,SERVER) #,SrvrErr) #
def CheckSocket3(env,SERVER,ErrFileName) :
+ res = F_OK
port = int(env[SERVER+'PORT'])
busy, host, Serrno, Serrstr, S = CheckPort(port)
S[0].close()
S[1].close()
if busy:
+ res = F_SOCK
Smsg = """
! Socket-Check failed for %sserver on <%s:%d> with #%d; '%s' !
! %sPORT was not properly released by Mserver !
@@ -1969,6 +1996,7 @@
ErrFile.write(Smsg)
ErrFile.flush()
ErrFile.close()
+ return res
### CheckSocket3(env,SERVER,ErrFileName) #
def prompt() :
@@ -2530,6 +2558,7 @@
'pathfinder': 'monetdb-xquery',
'xml': 'monetdb-xml',
'amdb': 'monetdb-amdb',
+ 'geom': 'monetdb-geom',
}
par = {}
@@ -2622,10 +2651,10 @@
dft['setXQUERY_LOGDIR'] = "'--set
\"xquery_logdir='+env['XQUERY_LOGDIR']+'\"'"
dft['MAPIPORT'] = "str(randomPort(30000,39999))"
dft['XRPCPORT'] = "str(randomPort(40000,49999))"
- dft['MAPICLIENT'] = "'MapiClient -lmil'"
- dft['SQLCLIENT'] = "'MapiClient -lsql'"
+ dft['MAPICLIENT'] = "'mclient -lmil'"
+ dft['SQLCLIENT'] = "'mclient -lsql'"
dft['SQLDUMP'] = "'msqldump'"
- dft['XQUERYCLIENT'] = "'MapiClient -lxquery -oxml'"
+ dft['XQUERYCLIENT'] = "'mclient -lxquery -oxml'"
dft['X100CLIENT'] = "'x100run_mapi'"
if THISFILE == "Mprofile.py":
dft['CMDLST'] = "FindCmdLst(env)"
@@ -2642,7 +2671,7 @@
cmd_options = [
# long name, short name, GDK option, argument, comment
('package', 'p', 'package', '<package>',
- "package to be tested, e.g.:\nmonetdb(|4|5),
[monetdb-](clients|template|sql|xquery|xml|amdb);\ndefault: %s" %
par['PACKAGE']),
+ "package to be tested, e.g.:\nmonetdb(|4|5),
[monetdb-](clients|template|sql|xquery|xml|amdb|geom);\ndefault: %s" %
par['PACKAGE']),
('MonetDB4', '4', 'MonetDB4', None,
"use Mserver of MonetDB Version 4 (default with <package> !=
monetdb5)"),
('MonetDB5', '5', 'MonetDB5', None,
@@ -3271,6 +3300,24 @@
if MissingMods:
ErrXit('Stopping Pathfinder testing as modules "%s" are
missing!' % str(MissingMods))
+ if par['PACKAGE'] == 'monetdb-geom':
+ MissingMods = CheckMods(env, '', 'SQL', '')
+ if par['M4'] and 'geom' not in env['TST_MODS']:
+ MissingMods.append('geom')
+ if MissingMods:
+ ErrXit('Stopping Geom testing as modules "%s" are missing!' %
str(MissingMods))
+
+ if par['PACKAGE'] == 'monetdb-amdb':
+ if not env['exe']['X100_Client'][0]:
+ ErrXit('Stopping X100/AmDB testing as "%s" is not available!'
% env['X100CLIENT'].split(None, 1)[0])
+ MissingMods = CheckMods(env, '', '', 'x100')
+ if MissingMods:
+ ErrXit('Stopping X100/AmDB testing as modules "%s" are
missing!' % str(MissingMods))
+
+ if par['PACKAGE'][:8] == 'monetdb-' and par['PACKAGE'][8:] in
('sql','geom','xquery','amdb'):
+ if not env['exe']['Mapi_Client'][0]:
+ ErrXit('Stopping %s testing as "%s" is not available!' %
(par['PACKAGE'][8:], env['MAPICLIENT'].split(None, 1)[0]))
+
for SRVR in 'MAPI', 'XRPC':
port = int(env[SRVR+'PORT'])
busy, host, Serrno, Serrstr, S = CheckPort(port)
@@ -3316,14 +3363,14 @@
if THISFILE in ["Mtest.py", "Mprofile.py"]:
fn = os.path.join(env['TSTTRGBASE'],TSTPREF,"times.")
fl = open(fn+"lst","w")
- Failure = [0,0,0,0]
+ Failure = [0,0,0,0,0,0]
for TSTDIR,TST,tt,ms,FtOut,FtErr in TIMES:
fl.write(url(os.path.join(TSTDIR,TST))+":\t"+tt+
"\t"+FAILURES[FtOut]+
- "\t"+FAILURES[FtErr]+"\n")
+ "\t"+FAILURES[FtErr]+"\t\n")
if TST != '':
Failure[max(FtOut,FtErr)] += 1
- fl.write(":\t%7.3f\n" % t_)
+ fl.write(":\t%7.3f\t\n" % t_)
fl.close()
fl = open(fn+"sql","w")
@@ -3361,7 +3408,7 @@
# we write in SQL the same codes as testweb uses in the HTML
# pages, for readability
- Fcodes = ['o', '-', 'x', 'X']
+ Fcodes = ['o', 'x', 'S', 'T', 'X', '-']
# we are not interested in the compiler, not its path, nor its
# options. We do store the options separately, though
@@ -3411,13 +3458,19 @@
how = ""
what = ""
if Failure[F_SKIP]:
- what += " %3d out of %3d tests could not be executed\n" %
(Failure[-1],num_tests)
+ what += " %3d out of %3d tests could not be executed\n" %
(Failure[F_SKIP],num_tests)
if Failure[F_WARN]:
how = "slightly"
- what += " %3d out of %3d tests produced %s different output\n" %
(Failure[1],num_tests,how)
+ what += " %3d out of %3d tests produced %s different output\n" %
(Failure[F_WARN],num_tests,how)
+ if Failure[F_TIME]:
+ how = "SIGNIFICANTLY"
+ what += " %3d out of %3d tests ran into timeout\n" %
(Failure[F_TIME],num_tests)
+ if Failure[F_SOCK]:
+ how = "SIGNIFICANTLY"
+ what += " %3d out of %3d tests did not properly release
socket(s)\n" % (Failure[F_SOCK],num_tests)
if Failure[F_ERROR]:
how = "SIGNIFICANTLY"
- what += " %3d out of %3d tests produced %s different output\n" %
(Failure[2],num_tests,how)
+ what += " %3d out of %3d tests produced %s different output\n" %
(Failure[F_ERROR],num_tests,how)
STDERR.flush()
if Failed:
print """\
Index: MkillUsers.in
===================================================================
RCS file: /cvsroot/monetdb/MonetDB/src/testing/MkillUsers.in,v
retrieving revision 1.25.6.1
retrieving revision 1.25.6.2
diff -u -d -r1.25.6.1 -r1.25.6.2
--- MkillUsers.in 15 Aug 2007 22:19:12 -0000 1.25.6.1
+++ MkillUsers.in 24 Aug 2007 09:01:53 -0000 1.25.6.2
@@ -93,7 +93,7 @@
if [ "$TEMPLATE_BUILD" ] ; then BINPATH="$BINPATH
$TEMPLATE_BUILD/src/tools $TEMPLATE_BUILD/src/tools/.libs" ; fi
if [ "$PATHFINDER_BUILD" ] ; then BINPATH="$BINPATH
$PATHFINDER_BUILD/src/tools $PATHFINDER_BUILD/src/tools/.libs" ; fi
for b in $BINPATH ; do
- files="$files `ls $b/* 2>/dev/null | egrep
'/(mserver5|Mserver|MapiClient|MapiClient\.py|Mdiff|Mlog|Mtimeout|pf)$'`"
+ files="$files `ls $b/* 2>/dev/null | egrep
'/(mserver5|Mserver|MapiClient|mclient|MapiClient\.py|Mdiff|Mlog|Mtimeout|pf)$'`"
done
case `uname` in
-------------------------------------------------------------------------
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