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