111 lines · plain
1 ============2 LKMM SCRIPTS3 ============4 5 6These scripts are run from the tools/memory-model directory.7 8checkalllitmus.sh9 10 Run all litmus tests in the litmus-tests directory, checking11 the results against the expected results recorded in the12 "Result:" comment lines.13 14checkghlitmus.sh15 16 Run all litmus tests in the https://github.com/paulmckrcu/litmus17 archive that are C-language and that have "Result:" comment lines18 documenting expected results, comparing the actual results to19 those expected.20 21checklitmushist.sh22 23 Run all litmus tests having .litmus.out files from previous24 initlitmushist.sh or newlitmushist.sh runs, comparing the25 herd7 output to that of the original runs.26 27checklitmus.sh28 29 Check a single litmus test against its "Result:" expected result.30 Not intended to for manual use.31 32checktheselitmus.sh33 34 Check the specified list of litmus tests against their "Result:"35 expected results. This takes optional parseargs.sh arguments,36 followed by "--" followed by pathnames starting from the current37 directory.38 39cmplitmushist.sh40 41 Compare output from two different runs of the same litmus tests,42 with the absolute pathnames of the tests to run provided one43 name per line on standard input. Not normally run manually,44 provided instead for use by other scripts.45 46initlitmushist.sh47 48 Run all litmus tests having no more than the specified number49 of processes given a specified timeout, recording the results50 in .litmus.out files.51 52judgelitmus.sh53 54 Given a .litmus file and its herd7 output, check the output file55 against the .litmus file's "Result:" comment to judge whether56 the test ran correctly. Not normally run manually, provided57 instead for use by other scripts.58 59newlitmushist.sh60 61 For all new or updated litmus tests having no more than the62 specified number of processes given a specified timeout, run63 and record the results in .litmus.out files.64 65parseargs.sh66 67 Parse command-line arguments. Not normally run manually,68 provided instead for use by other scripts.69 70runlitmushist.sh71 72 Run the litmus tests whose absolute pathnames are provided one73 name per line on standard input. Not normally run manually,74 provided instead for use by other scripts.75 76README77 78 This file79 80Testing a change to LKMM might go as follows:81 82 # Populate expected results without that change, and83 # runs for about an hour on an 8-CPU x86 system:84 scripts/initlitmushist.sh --timeout 10m --procs 1085 # Incorporate the change:86 git am -s -3 /path/to/patch # Or whatever it takes.87 88 # Test the new version of LKMM as follows...89 90 # Runs in seconds, good smoke test:91 scripts/checkalllitmus.sh92 93 # Compares results to those produced by initlitmushist.sh,94 # and runs for about an hour on an 8-CPU x86 system:95 scripts/checklitmushist.sh --timeout 10m --procs 1096 97 # Checks results against Result tags, runs in minutes:98 scripts/checkghlitmus.sh --timeout 10m --procs 1099 100The checkghlitmus.sh should not report errors in cases where the101checklitmushist.sh script did not also report a change. However,102this check is nevertheless valuable because it can find errors in the103original version of LKMM. Note however, that given the above procedure,104an error in the original LKMM version that is fixed by the patch will105be reported both as a mismatch by checklitmushist.sh and as an error106by checkghlitmus.sh. One exception to this rule of thumb is when the107test fails completely on the original version of LKMM and passes on the108new version. In this case, checklitmushist.sh will report a mismatch109and checkghlitmus.sh will report success. This happens when the change110to LKMM introduces a new primitive for which litmus tests already existed.111