Changeset: 55acbb47e52e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=55acbb47e52e
Modified Files:
MonetDB.spec
Branch: default
Log Message:
Merge with Aug2011 branch.
diffs (truncated from 362 to 300 lines):
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -184,6 +184,7 @@ This package contains the MonetDB ODBC d
if [ "$1" -eq 1 ] || ! grep -q MonetDB /etc/odbcinst.ini; then
odbcinst -i -d -r <<EOF
[MonetDB]
+Description = ODBC for MonetDB
Driver = %{_exec_prefix}/lib/libMonetODBC.so
Setup = %{_exec_prefix}/lib/libMonetODBCs.so
Driver64 = %{_exec_prefix}/lib64/libMonetODBC.so
diff --git a/clients/odbc/driver/SQLDescribeCol.c
b/clients/odbc/driver/SQLDescribeCol.c
--- a/clients/odbc/driver/SQLDescribeCol.c
+++ b/clients/odbc/driver/SQLDescribeCol.c
@@ -114,6 +114,9 @@ SQLDescribeCol_(ODBCStmt *stmt,
case SQL_INTERVAL_MINUTE_TO_SECOND:
*DecimalDigitsPtr = rec->sql_desc_precision;
break;
+ default:
+ *DecimalDigitsPtr = 0;
+ break;
}
}
diff --git a/debian/libmonetdb-client-odbc.postinst
b/debian/libmonetdb-client-odbc.postinst
--- a/debian/libmonetdb-client-odbc.postinst
+++ b/debian/libmonetdb-client-odbc.postinst
@@ -7,6 +7,7 @@ if [ "$1" = configure ]; then
if [ ! "$2" ] || ! [ ! "`odbcinst -d -q | grep MonetDB`" ]; then
odbcinst -i -d -r <<EOF
[MonetDB]
+Description = ODBC for MonetDB
Driver = /usr/lib/libMonetODBC.so
Setup = /usr/lib/libMonetODBCs.so
EOF
diff --git a/testing/README b/testing/README
new file mode 100644
--- /dev/null
+++ b/testing/README
@@ -0,0 +1,322 @@
+
+This is the documentation of the MonetDB regression testing environment.
+
+For further information about the automatic nightly multi-platform regression
+testing of MonetDB, please also see
+http://monetdb.cwi.nl/Development/TestWeb/index.html
+
+
+- The testing environment consists of the following tools:
+ + Mtest.py a python script to run tests
+ + Mfilter.py a python script to filter the test output before running Mdiff
+ (see below)
+ + Mdiff a C program to show the differences of two files as HTML
document
+ + Mapprove.py a python script to approve recent test output (see
below)
+ + Mtimeout a C program to limit the resources of a program
+ (thanks to Tim Ruhl, [email protected])
+ + MkillUsers a bash script to kill test processes that are orphaned
+ (used "fuser" to detect such processes)
+ (Mtimeout and MkillUsers are currently available on Unix, only)
+
+ When called with command-line option "--help", each of these tools
+ provides the respective usage information.
+
+
+- In each directory of all MonetDB-related source trees, tests may be
+ provided in a subdirectory called "Tests". Of course, the tests should
+ deal with the part/modules where they are located and they should be
+ provided and maintained by the respective developer (see also below).
+
+
+- Each "Tests" directory must contain a file "All" that contains the names
+ of all tests in that directory (one name per line).
+
+
+- Each test named TST consists of
+ + a test script which is ONE of the following:
+ * an arbitrary executable (e.g., a shell script) (TST.sh)
(~,^)
+ on Windows, executables must be ".(exe|com)" (TST.(exe|com))
(~,^)
+ and scripts must be ".(bat|cmd)" (TST.(bat|cmd))
(~,^)
+ * a Python script (TST.py)
(~,^)
+ * a MAL script to be executed by mserver5 (TST.mal) (',^,`)
+ * a MAL script to be executed by mclient -lmal (TST.malC) (",^,`)
+ * a SQL script to be executed by mclient -lsql (TST.sql) (",^,`)
+ (~) In case the name of an arbitrary executable or Python script is
+ suffixed with ".MAL" (i.e., TST.MAL[.(sh|exe|com|bat|cmd|py)]),
+ Mtest.py starts an mserver5 with a MAL-listerner on MAPIPORT
+ in the background before executing the test. The test can then
+ connect via MAPI (on MAPIPORT) to that mserver5.
+ Similar,
+ with suffix ".SQL", an mserver5 with an SQL-listener on
+ MAPIPORT is started;
+ In both cases, Mtest.py stops the mserver5 again, once the test has
+ finished.
+ (') For mserver5, if several files are present named
+ TST_sXX.mal (XX={00,01,...,99})
+ these are executed by subsequently calling mserver5
+ (") For mclient, if several files are present named
+ (1) TST_sXX.(malC|sql) (XX={00,01,...,99})
+ these are executed subsequently using the same mserver5
+ (2) TST_pXX.(malC|sql) (XX={00,01,...,99})
+ these are executed concurrently using the same mserver5
+ (^) For each test file TST[.*] involved,
+ if a file called
+ TST[.*].src exists instead of TST[.*],
+ TST[.*].src is expected to contain a single line
+ giving the original location of the test file to be used.
+ (`) For each test file TST.* involved,
+ if a file called
+ TST.*.in exists instead of TST.*, all environment variables in
+ TST.*.in are replaced by their current value
+ when copying $TSTSRCDIR/TST.*.in to $TSTTRGDIR/TST.* .
+ + a MAL script to be used as prelude for mserver5
+ (optional) (TST.prelude5)
(^,`)
+ + for frontend tests with MonetDB5 (mserver5), a MAL script to be executed
+ by the server before stating the frontend
+ (optional) (TST.dbinit5) (^,`)
+ + for mclient tests, a MAL script to be used as
+ prologue for mserver5, i.e., a script that is executed by mserver5 after
+ dbinit is executed, but before (the first) mclient connects to mserver5
+ (optional)
(TST.prologue5)(^,`)
+ + for mclient tests, a MAL script to be used as
+ epilogue for mserver5, i.e., a script that is executed by mserver5 after
+ (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)
(^,`)
+ + a file that contains a list of tests (one per line) that must
+ have run successfully prior to the test (optional) (TST.reqtests)
+ + a set of files used by the arbitrary executable
+ (optional) (TST.*)
(^,`)
+ + stable (i.e. correct) versions of stdout and stderr
+ of the test
(TST.stable.{out,err})
+ operating system (OS) specific stable output can be
+ provided by adding the suffix ".<OSname>" (".`uname`"),
+ ".<OSname><OSversion>" (".`uanme``uname -r`"), or
+ ".<OSname><OSversion>.(64|32)bit"
+ to the respective filename
+ + a file that contains a single integer number which is used as a factor
+ to extend the default TIMEOUT for this test, only. (TST.timeout)
+
+ Using this naming conventions, the test environment can automatically
+ decide what to do when called as "Mtest.py TST" (see below), i.e. execute
+ one of the following:
+ * TST[.sh|.exe|.com|.bat|.cmd] TST [TST.prelude]
+ * python TST.py [TST.prelude]
+ * mserver5 --dbname=TSTDB [TST.prelude] < TST.mal
+ * mserver5 --dbname=TSTDB --set mapi_port=$MAPIPORT --set
xrpc_port=$XRPCPORT --dbinit="[<TST.dbinit5]" [TST.prologue5] &
+ mclient -lmal < TST[_(s|p)XX].malC
+ or TST.MAL.(sh|exe|com|bat|cmd) TST
+ or python TST.MAL.py
+ * mserver5 --dbname=TSTDB --set mapi_port=$MAPIPORT --set
xrpc_port=$XRPCPORT --dbinit="[<TST.dbinit5]" [TST.prologue5] &
+ mclient -lsql < TST[_(s|p)XX].sql
+ or TST.SQL.(sh|exe|com|bat|cmd) TST
+ or python TST..SQL.py
+
+ (On Unix, all M<tool>'s are started with "Mtimeout -timeout TIMEOUT
+ M<tool> ..." to kill (probably) hanging M<tool>'s after a certain
+ timeout. The default TIMEOUT value is 60 seconds, i.e. 1 minute.
+ The TIMEOUT can be changed globally using Mtest.py's "-t" option.
+ The TIMEOUT for a single test can be extended be a factor provided
+ in a file TST.timeout (see above).
+ Additionally, MkillUsers is scheduled as at-job to kill orphaned
+ processes that Mtimeout cannot reach any more.)
+
+ (mserver5 is called with "--debug=$GDK_DEBUG $setMONETDB_MOD_PATH --set
monet_prompt=".
+ See below and "mserver5 --help" for details.)
+
+ (mclient is called with "--port=$MAPIPORT".
+ See "mclient --help" for details.)
+
+
+- Mtest.py uses two directory trees based at TSTSRCBASE and TSTTRGBASE,
+ respectively. These trees have similar purpose as the SOURCE and PREFIX
+ trees when configuring and compiling MonetDB: the original tests are found
+ in TSTSRCBASE and Mtest.py writes the test output to TSTTRGBASE.
+ The default settings are as follows:
+ TSTSRCBASE=`<PACKAGE>-config --source` (where you checked out
<PACKAGE>'s source tree)
+ TSTTRGBASE=`<PACKAGE>-config --prefix` (where you told configure to
install <PACKAGE>)
+ You can over rule any of these defaults by setting the respective
+ environment variable, or by giving, e.g., --TSTTRGBASE=/tmp as command
+ line option to Mtest.py.
+
+ IMPORTANT NOTE:
+
+ In any case, all directories must be given as ABSOLUTE PHYSICAL PATHS,
+ i.e., starting with "/" on Unix (or "[<drive-letter>:]\" on Windows, and
+ not containing any symbolic link(s).
+ The latter is a restriction that might be released in the future, but for
+ the time being, using paths that contain symbolic links will cause
+ problems with Mtest.py.
+ Hence, if you compiled MonetDB in a path that contains a symbolic link,
+ e.g., ~/dev/monet -> /net/myhost/export/scratch1/myname/monet, you should
+ overrule the default settings of TSTSRCBASE and TSTTRGBASE (e.g.) as
+ follows
+ TSTSRCBASE=/net/myhost/export/scratch1/myname/monet
+ TSTTRGBASE=/net/myhost/export/scratch1/myname/monet/$SYSTVER
+ either by setting the respective environment variables or by using the
+ respective command line options to Mtest.py (see above).
+
+
+- Each test is identified by its name and its directory path relative to
+ TSTSRCBASE, but without the trailing "/Tests".
+
+
+- Running one or several tests is done by simply calling
+ + "Mtest.py <names...>" to run tests <names...> in
+ a) ".", if "." is a "Tests"-directory and
+ there is an "All"-file in "."
+ b) "./Tests", if "./Tests/All" exists
+ + "Mtest.py -r" to run all tests found in any subdirectory of "."
+
+ If Mtest.py is not called in (a subdirectory of) $TSTSRCBASE, Mtest.py
+ changes ("cd's") to $TSTSRCBASE before starting its work.
+ For more details call "Mtest.py --help".
+
+
+- Environment variables:
+ + Mtest.py doesn't need any special environment variables to be set.
+ + However, the following environment variables can be set to overrule the
+ default settings:
+ name default description
+ ---- ------- -----------
+ TSTSRCBASE `<PACKAGE>-config --source` base of test
source tree
+ TSTTRGBASE `<PACKAGE>-config --prefix` base for test
output
+ MALCLIENT mclient -lmal mal-client
program `)
+ SQLCLIENT mclient -lsql sql-client
program `)
+ SQLDUMP msqldump sql-dump
program `)
+
+ `) Alternative MAL & SQL client programs need to accept (or ignore)
+ "--config=", "--host=", & "--port=" options.
+
+ The following variables are currently still used legacy, but they will
disappear soon...
+ MONETDB_MOD_PATH `<PACKAGE>-config --modpath([45])`
+
+ The setting of all these environment variables may be overruled
+ by commandline options with the same names, e.g., "--MALCLIENT=mclient.py".
+
+ NOTE:
+ All paths must be given as ABSOLUTE PHYSICAL PATHS (see "IMPORTANT NOTE"
+ above).
+
+ + Further environment variables that Mtest.py exports (to be used in test
+ scripts) are:
+ name description
+ ---- -----------
+ HOST hostname
+ SYST `uname`
+ SYSTVER `uname``uname -r`
+ MTIMEOUT "Mtimeout -timeout $TIMEOUT"
+ MDIFF "$MTIMEOUT Mdiff"
+ MSERVER "$MTIMEOUT mserver5 --config=$MONETDB_CONF
--debug=$GDK_DEBUG $setMONETDB_MOD_PATH $setGDK_DBFARM --set
mapi_port=$MAPIPORT --set monet_prompt= --trace"
+ MAL_CLIENT "$MTIMEOUT $MALCLIENT --config=$MONETDB_CONF
--host=$HOST --port=$MAPIPORT"
+ SQL_CLIENT "$MTIMEOUT $SQLCLIENT -u monetdb -P monetdb
--host=$HOST --port=$MAPIPORT --trace"
+ SQL_DUMP "$MTIMEOUT $SQLDUMP -u monetdb -P monetdb --host=$HOST
--port=$MAPIPORT --trace"
+ MAPIPORT the MAPI port (random number between 30000 and 39999)
+ TST name of the current test
+ TSTDB name of default test database, unique for each directory
+ TSTDIR current test directory without $TSTSRCBASE/ & /Tests
+ TSTSRCDIR $TSTSRCBASE/$TSTDIR/Tests
+ TSTTRGDIR $TSTTRGBASE/mTests/$TSTDIR
+ GDK_DBFARM as read from $MONETDB_CONF or set by --dbfarm=<path>
+ GDK_DEBUG debug bitmask for mserver5 (default: 10)
+ MONETDB_MOD_PATH new module search path of mserver5 (if set via
--monet_mod_path=<pathlist>)
+ setMONETDB_MOD_PATH "--set monet_mod_path=$MONETDB_MOD_PATH"
(if --monet_mod_path=<pathlist> is used)
+ setGDK_DBFARM "--set gdk_dbfarm=$GDK_DBFARM" (if --dbfarm=<path> is
used)
+
+
+- For each directory, Mtest.py creates a database $TSTDB in $GDK_DBFARM
+ before running any test.
+
+
+- A test is skipped (i.e. not executed),
+ if $TST.modules exists and contains modules that are not available, or
+ if $TST.BATs exists and contains BATs that are not available in the
+ current database $TSTDB.
+
+
+- While executing test "$TSTSRCDIR/TST", Mtest.py uses $TSTTRGDIR as working
+ directory; for convenience, all files "$TSTSRCDIR/TST*" are copied to
+ $TSTTRGDIR.
+
+
+- Mtest.py stores the output of test "$TSTSRCDIR/TST" in
+ $TSTTRGDIR/TST.test.{out,err} and checks it against
+ $TSTSRCDIR/TST.stable.{out,err}. If system specific stable output files
+
($TSTSRCDIR/TST.stable.{out,err}[.($SYST|$SYSTVER)][.(64|32)bit][.oid(32|64)][.Five][.STATIC])
+ exist, the most specific stable output is used. Mtest.py stores the
+ respective Mdiff results in $TSTTRGDIR/TST.{out,err}.diff.html.
+ For each test directory, a common entry point to the test results is
+ created as $TSTTRGDIR/.index.html.
+ For the whole test run, a global entry point to the test results is
+ created as $TSTTRGBASE/mTests/index.html.
+
+
+- Mfilter.py is used to filter out variable date form the test output to
+ avoid no-error differences when running Mdiff. Mfilter.py prefixes all
+ lines enclosed in two line containing only "#~BeginVariableOutput~#" and
+ "#~EndVariableOutput~#", respectively, with "#~". These lines are then
+ ignored during Mdiff.
+
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list