torture: Use file-based protocol to mark batch's runs complete
authorPaul E. McKenney <paulmck@kernel.org>
Thu, 11 Feb 2021 00:28:44 +0000 (16:28 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 8 Mar 2021 22:23:01 +0000 (14:23 -0800)
Currently, the script generated by kvm.sh does a "wait" to wait on both
the current batch's guest OSes and any jitter.sh scripts.  This works,
but makes it hard to abstract the jittering so that common code can be
used for both local and distributed runs.  This commit therefore uses
"build.run" files in scenario directories, and these files are removed
after the corresponding scenario's guest OS has completed.

Note that --build-only runs do not create build.run files because they
also do not create guest OSes and do not run any jitter.sh scripts.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
tools/testing/selftests/rcutorture/bin/kvm.sh

index 91578d3af2199385d3fd973d14a6b2cbcef6bc41..fed6f10a7b6080d0741691ac16e41dfd90dcd4c3 100755 (executable)
@@ -345,4 +345,7 @@ then
        echo Unknown PID, cannot kill qemu command
 fi
 
+# Tell the script that this run is done.
+rm -f $resdir/build.run
+
 parse-console.sh $resdir/console.log $title
index 7944510f8c24be9e5e5a837eec92b908f2c50672..1f5f8720cacc737e0fb7f1c363d160f6e3726422 100755 (executable)
@@ -469,9 +469,15 @@ function dump(first, pastlast, batchnum)
                print "echo ", cfr[jn], cpusr[jn] ovf ": Build complete. `date` | tee -a " rd "log";
                jn++;
        }
+       print "runfiles="
        for (j = 1; j < jn; j++) {
                builddir=rd cfr[j] "/build";
-               print "rm -f " builddir ".ready"
+               if (TORTURE_BUILDONLY)
+                       print "rm -f " builddir ".ready"
+               else
+                       print "mv " builddir ".ready " builddir ".run"
+                       print "runfiles=\"$runfiles " builddir ".run\""
+               fi
                print "if test -f \"" rd cfr[j] "/builtkernel\""
                print "then"
                print "\techo ----", cfr[j], cpusr[j] ovf ": Kernel present. `date` | tee -a " rd "log";
@@ -501,7 +507,10 @@ function dump(first, pastlast, batchnum)
                print "\tjitter.sh " j " " dur " " ja[2] " " ja[3] "&"
                print "\techo $! >> " rd "jitter_pids"
        }
-       print "\twait"
+       print "\twhile ls $runfiles > /dev/null 2>&1"
+       print "\tdo"
+       print "\t\t:"
+       print "\tdone"
        print "\techo ---- All kernel runs complete. `date` | tee -a " rd "log";
        print "else"
        print "\twait"