111 lines
3.6 KiB
Plaintext
111 lines
3.6 KiB
Plaintext
|
============
|
||
|
LKMM SCRIPTS
|
||
|
============
|
||
|
|
||
|
|
||
|
These scripts are run from the tools/memory-model directory.
|
||
|
|
||
|
checkalllitmus.sh
|
||
|
|
||
|
Run all litmus tests in the litmus-tests directory, checking
|
||
|
the results against the expected results recorded in the
|
||
|
"Result:" comment lines.
|
||
|
|
||
|
checkghlitmus.sh
|
||
|
|
||
|
Run all litmus tests in the https://github.com/paulmckrcu/litmus
|
||
|
archive that are C-language and that have "Result:" comment lines
|
||
|
documenting expected results, comparing the actual results to
|
||
|
those expected.
|
||
|
|
||
|
checklitmushist.sh
|
||
|
|
||
|
Run all litmus tests having .litmus.out files from previous
|
||
|
initlitmushist.sh or newlitmushist.sh runs, comparing the
|
||
|
herd7 output to that of the original runs.
|
||
|
|
||
|
checklitmus.sh
|
||
|
|
||
|
Check a single litmus test against its "Result:" expected result.
|
||
|
Not intended to for manual use.
|
||
|
|
||
|
checktheselitmus.sh
|
||
|
|
||
|
Check the specified list of litmus tests against their "Result:"
|
||
|
expected results. This takes optional parseargs.sh arguments,
|
||
|
followed by "--" followed by pathnames starting from the current
|
||
|
directory.
|
||
|
|
||
|
cmplitmushist.sh
|
||
|
|
||
|
Compare output from two different runs of the same litmus tests,
|
||
|
with the absolute pathnames of the tests to run provided one
|
||
|
name per line on standard input. Not normally run manually,
|
||
|
provided instead for use by other scripts.
|
||
|
|
||
|
initlitmushist.sh
|
||
|
|
||
|
Run all litmus tests having no more than the specified number
|
||
|
of processes given a specified timeout, recording the results
|
||
|
in .litmus.out files.
|
||
|
|
||
|
judgelitmus.sh
|
||
|
|
||
|
Given a .litmus file and its herd7 output, check the output file
|
||
|
against the .litmus file's "Result:" comment to judge whether
|
||
|
the test ran correctly. Not normally run manually, provided
|
||
|
instead for use by other scripts.
|
||
|
|
||
|
newlitmushist.sh
|
||
|
|
||
|
For all new or updated litmus tests having no more than the
|
||
|
specified number of processes given a specified timeout, run
|
||
|
and record the results in .litmus.out files.
|
||
|
|
||
|
parseargs.sh
|
||
|
|
||
|
Parse command-line arguments. Not normally run manually,
|
||
|
provided instead for use by other scripts.
|
||
|
|
||
|
runlitmushist.sh
|
||
|
|
||
|
Run the litmus tests whose absolute pathnames are provided one
|
||
|
name per line on standard input. Not normally run manually,
|
||
|
provided instead for use by other scripts.
|
||
|
|
||
|
README
|
||
|
|
||
|
This file
|
||
|
|
||
|
Testing a change to LKMM might go as follows:
|
||
|
|
||
|
# Populate expected results without that change, and
|
||
|
# runs for about an hour on an 8-CPU x86 system:
|
||
|
scripts/initlitmushist.sh --timeout 10m --procs 10
|
||
|
# Incorporate the change:
|
||
|
git am -s -3 /path/to/patch # Or whatever it takes.
|
||
|
|
||
|
# Test the new version of LKMM as follows...
|
||
|
|
||
|
# Runs in seconds, good smoke test:
|
||
|
scripts/checkalllitmus.sh
|
||
|
|
||
|
# Compares results to those produced by initlitmushist.sh,
|
||
|
# and runs for about an hour on an 8-CPU x86 system:
|
||
|
scripts/checklitmushist.sh --timeout 10m --procs 10
|
||
|
|
||
|
# Checks results against Result tags, runs in minutes:
|
||
|
scripts/checkghlitmus.sh --timeout 10m --procs 10
|
||
|
|
||
|
The checkghlitmus.sh should not report errors in cases where the
|
||
|
checklitmushist.sh script did not also report a change. However,
|
||
|
this check is nevertheless valuable because it can find errors in the
|
||
|
original version of LKMM. Note however, that given the above procedure,
|
||
|
an error in the original LKMM version that is fixed by the patch will
|
||
|
be reported both as a mismatch by checklitmushist.sh and as an error
|
||
|
by checkghlitmus.sh. One exception to this rule of thumb is when the
|
||
|
test fails completely on the original version of LKMM and passes on the
|
||
|
new version. In this case, checklitmushist.sh will report a mismatch
|
||
|
and checkghlitmus.sh will report success. This happens when the change
|
||
|
to LKMM introduces a new primitive for which litmus tests already existed.
|