xref: /OK3568_Linux_fs/kernel/tools/memory-model/scripts/checklitmushist.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0+
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# Reruns the C-language litmus tests previously run that match the
5*4882a593Smuzhiyun# specified criteria, and compares the result to that of the previous
6*4882a593Smuzhiyun# runs from initlitmushist.sh and/or newlitmushist.sh.
7*4882a593Smuzhiyun#
8*4882a593Smuzhiyun# sh checklitmushist.sh
9*4882a593Smuzhiyun#
10*4882a593Smuzhiyun# Run from the Linux kernel tools/memory-model directory.
11*4882a593Smuzhiyun# See scripts/parseargs.sh for list of arguments.
12*4882a593Smuzhiyun#
13*4882a593Smuzhiyun# Copyright IBM Corporation, 2018
14*4882a593Smuzhiyun#
15*4882a593Smuzhiyun# Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun. scripts/parseargs.sh
18*4882a593Smuzhiyun
19*4882a593SmuzhiyunT=/tmp/checklitmushist.sh.$$
20*4882a593Smuzhiyuntrap 'rm -rf $T' 0
21*4882a593Smuzhiyunmkdir $T
22*4882a593Smuzhiyun
23*4882a593Smuzhiyunif test -d litmus
24*4882a593Smuzhiyunthen
25*4882a593Smuzhiyun	:
26*4882a593Smuzhiyunelse
27*4882a593Smuzhiyun	echo Run scripts/initlitmushist.sh first, need litmus repo.
28*4882a593Smuzhiyun	exit 1
29*4882a593Smuzhiyunfi
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun# Create the results directory and populate it with subdirectories.
32*4882a593Smuzhiyun# The initial output is created here to avoid clobbering the output
33*4882a593Smuzhiyun# generated earlier.
34*4882a593Smuzhiyunmkdir $T/results
35*4882a593Smuzhiyunfind litmus -type d -print | ( cd $T/results; sed -e 's/^/mkdir -p /' | sh )
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun# Create the list of litmus tests already run, then remove those that
38*4882a593Smuzhiyun# are excluded by this run's --procs argument.
39*4882a593Smuzhiyun( cd $LKMM_DESTDIR; find litmus -name '*.litmus.out' -print ) |
40*4882a593Smuzhiyun	sed -e 's/\.out$//' |
41*4882a593Smuzhiyun	xargs -r grep -L "^P${LKMM_PROCS}"> $T/list-C-already
42*4882a593Smuzhiyunxargs < $T/list-C-already -r grep -L "^P${LKMM_PROCS}" > $T/list-C-short
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun# Redirect output, run tests, then restore destination directory.
45*4882a593Smuzhiyundestdir="$LKMM_DESTDIR"
46*4882a593SmuzhiyunLKMM_DESTDIR=$T/results; export LKMM_DESTDIR
47*4882a593Smuzhiyunscripts/runlitmushist.sh < $T/list-C-short > $T/runlitmushist.sh.out 2>&1
48*4882a593SmuzhiyunLKMM_DESTDIR="$destdir"; export LKMM_DESTDIR
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun# Move the newly generated .litmus.out files to .litmus.out.new files
51*4882a593Smuzhiyun# in the destination directory.
52*4882a593Smuzhiyuncdir=`pwd`
53*4882a593Smuzhiyunddir=`awk -v c="$cdir" -v d="$LKMM_DESTDIR" \
54*4882a593Smuzhiyun	'END { if (d ~ /^\//) print d; else print c "/" d; }' < /dev/null`
55*4882a593Smuzhiyun( cd $T/results; find litmus -type f -name '*.litmus.out' -print |
56*4882a593Smuzhiyun  sed -e 's,^.*$,cp & '"$ddir"'/&.new,' | sh )
57*4882a593Smuzhiyun
58*4882a593Smuzhiyunsed < $T/list-C-short -e 's,^,'"$LKMM_DESTDIR/"',' |
59*4882a593Smuzhiyun	sh scripts/cmplitmushist.sh
60*4882a593Smuzhiyunexit $?
61