How to approve current output as stable output

Preliminaries

  1. WHAT is one of MonetDB4, MonetDB5, template, sql, pathfinder.
  2. You need the check-out sources of WHAT in say ~/WHAT .
  3. In case you have no installed and working MonetDB
    (to be more precise: in case you don't have a working Mapprove.py and monetdb-config in your PATH):
    • add one of
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.32.32.d-Darwin8.2.0/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.32.32.d-Gentoo1.6.13/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.32.32.d-SuSE9.1/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.32.32.s-CYGWIN1.5.12/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.64.32.d-Fedora4/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.64.64.d-Debian3.0/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.64.64.d-Fedora3/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.64.64.d-Fedora4/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.64.64.d-IRIX646.5/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.64.64.d-RedHat4WS/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.64.64.d-SunOS5.8/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.GNU.64.64.d-SuSE9.3/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.ntv.64.32.d-Fedora4/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.ntv.64.64.d-Fedora3/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.ntv.64.64.d-Fedora4/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.ntv.64.64.d-RedHat4WS/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.ntv.64.64.d-SunOS5.8/bin/
      • /ufs/monet/Testing/Stable/MonetDB/.ntv.64.64.d-SuSE9.3/bin/
      to your PATH; as Mapprove.py and monetdb-config are supposed to be system independent, it shouldn't matter which one, provided Mapprove.py and monetdb-config do exist.
  4. Decide, from which test-run (i.e., SYSTEM & DEBUGMASK) you want to approve:
    • SYSTEM is .COMP.BITS.OIDS.LINK-SYSTVER, e.g., .GNU.64.64.d-Fedora4
    • DEBUGMASK is one of 0, 10, 8388618; usually, 10 should be used.
  5. Decide, whether you want to approve
    • stdout (-xout),
    • stderr (-xerr),
    • or both (default, no -x required)
    (see `Mapprove.py -?` for details).
  6. Decide, whether you want to approve
    • as default stable output or
    • as system-specific stable output
    (see the -S option in `Mapprove.py -?`).

Action

  1. cd to ~/WHAT
  2. set environment variables
    • TSTSRCBASE=`pwd`
    • TSTTRGBASE=/ufs/monet/Testing/Stable/WHAT/SYSTEM/TestsDEBUGMASK
      e.g.,
      TSTTRGBASE=/ufs/monet/Testing/Stable/MonetDB/.GNU.64.64.d-Fedora4/mTests10
    (alternatively, you can also add --TSTSRCBASE= and --TSTTRGBASE= whenever you run Mapprove.py)
  3. run
    `Mapprove.py [-x(out|err)] [-S...] TSTDIR TSTNAME`
    e.g.,
    `Mapprove.py -xout scripts/gold tst100`
    (see `Mapprove.py -?` for details).
  4. use
    `ls TSTDIR/Tests/TSTNAME.stable.out*`
    to check which specific outputs (already) exist
  5. use
    `diff -I'^#' -B -b TSTDIR/Tests/TSTNAME.stable.out TSTDIR/Tests/TSTNAME.stable.out.SYS`
    to check how a specific output differs from the default one
  6. repeat for each test that is to be approved
  7. follow instructions of Mapprove.py

Questions/Problems/Comments/...

Stefan Manegold, Stefan.Manegold@cwi.nl

`Mapprove.py -?`

Usage: Mapprove.py [options] ( [<dir>] [<tests>] | [<dirs>] )
Options are:
-c or --config config_file
	read options from the given file
-? or --help
	print usage message
-s or --set option=value
	set a named option
-r
	recurse into subdirectories (implies 'All')
--MONETDB_SOURCE <path>
	default: "/ufs/monet/Testing/Stable/MonetDB"
--MONETDB_BUILD <path>
	default: "/ufs/monet/Testing/Stable/MonetDB/.GNU.64.64.d-Fedora4"
--MONETDB_PREFIX <path>
	default: "/ufs/monet/Testing/Stable/MonetDB/.GNU.64.64.d-Fedora4"
--SQL_PREFIX <path>
	default: ""
--TSTSRCBASE <path>
	default: <MONETDB_SOURCE>
--TSTTRGBASE <path>
	default: <MONETDB_PREFIX>
-x <ext>
	approve only output files *.<ext><sys> (<ext> = 'out' or 'err')
	(default: <ext> = 'out' & 'err')
-S <sys>
	approve specific output *.<ext><sys>
	(<sys> = '[.<OS>[<RELEASE>]][.(32|64)bit][.STATIC]',
	(default: longest match for <sys> = '[.Linux[2.4.20-20.9perfctrsmp]][.32bit]')
-f
	force approval of error messages (i.e., lines starting with '!')

 <dir>   : if present, Mapprove.py behaves as if called in <dir>
 <tests> : list of tests to be processed; if none or 'All' is given,
            all tests listed in 'Tests/All' are processed
            (defaults to 'All' if -r is used)
 <dirs>  : list of directories to be processed; if present, Mapprove.py
            processes 'All' tests in each directory of <dirs>; -r may be used also

         See  /ufs/monet/Testing/Stable/testing/README
         for further details about  Mapprove.py.