|
@@ -0,0 +1,48 @@
|
|
|
+#!/bin/sh
|
|
|
+
|
|
|
+# To use this script, build Tor with coverage enabled, and then say:
|
|
|
+# ./scripts/test/cov-test-determinism.sh run
|
|
|
+#
|
|
|
+# Let it run for a long time so it can run the tests over and over. It
|
|
|
+# will put their coverage outputs in coverage-raw/coverage-*/.
|
|
|
+#
|
|
|
+# Then say:
|
|
|
+# ./scripts/test/cov-test-determinism.sh check
|
|
|
+#
|
|
|
+# It will diff the other coverage outputs to the first one, and put their
|
|
|
+# diffs in coverage-raw/diff-coverage-*.
|
|
|
+
|
|
|
+run=0
|
|
|
+check=0
|
|
|
+
|
|
|
+if test "$1" = run; then
|
|
|
+ run=1
|
|
|
+elif test "$1" = check; then
|
|
|
+ check=1
|
|
|
+else
|
|
|
+ echo "First use 'run' with this script, then use 'check'."
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+if test "$run" = 1; then
|
|
|
+ while true; do
|
|
|
+ make reset-gcov
|
|
|
+ CD=coverage-raw/coverage-$(date +%s)
|
|
|
+ make -j5 check
|
|
|
+ mkdir -p "$CD"
|
|
|
+ ./scripts/test/coverage "$CD"
|
|
|
+ done
|
|
|
+fi
|
|
|
+
|
|
|
+if test "$check" = 1; then
|
|
|
+ cd coverage-raw || exit 1
|
|
|
+
|
|
|
+ FIRST="$(find . -name "coverage-*" -type d | head -1)"
|
|
|
+ rm -f A
|
|
|
+ ln -sf "$FIRST" A
|
|
|
+ for dir in coverage-*; do
|
|
|
+ rm -f B
|
|
|
+ ln -sf "$dir" B
|
|
|
+ ../scripts/test/cov-diff A B > "diff-$dir"
|
|
|
+ done
|
|
|
+fi
|