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