| ============ |
| 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. |