Selaa lähdekoodia

Merge branch 'tor-github/pr/695'

David Goulet 6 vuotta sitten
vanhempi
commit
59c3910bec

+ 3 - 0
changes/ticket29435

@@ -0,0 +1,3 @@
+  o Minor bugfixes (testing):
+    - Fix our gcov wrapper script to look for object files at the
+      correct locations. Fixes bug 29435; bugfix on 0.3.5.1-alpha.

+ 4 - 0
changes/ticket29436

@@ -0,0 +1,4 @@
+  o Minor features (testing):
+    - We now have a script, cov-test-determinism.sh, to identify places
+      where our unit test coverage has become nondeterministic.
+      Closes ticket 29436.

+ 1 - 2
scripts/test/cov-diff

@@ -16,6 +16,5 @@ for B in "$DIRB"/*; do
   fi
   perl -pe 's/^\s*\!*\d+(\*?):/        1$1:/; s/^([^:]+:)[\d\s]+:/$1/; s/^ *-:(Runs|Programs):.*//;' "$B" > "$B.tmp"
   diff -u "$A.tmp" "$B.tmp" |perl -pe 's/^((?:\+\+\+|---)(?:.*tmp))\s+.*/$1/;'
-  rm "$A.tmp" "$B.tmp"
+  rm -f "$A.tmp" "$B.tmp"
 done
-

+ 48 - 0
scripts/test/cov-test-determinism.sh

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

+ 2 - 2
scripts/test/coverage

@@ -13,8 +13,8 @@ for fn in src/core/*/*.c src/feature/*/*.c src/app/*/*.c src/lib/*/*.c; do
     F=$(echo "$BN" | sed -e 's/\.c$//;')
     GC="${BN}.gcov"
     # Figure out the object file names
-    ONS=$(echo "${DN}"/src_*-"${F}".o)
-    ONS_WILDCARD_LITERAL="${DN}/src_*-${F}.o"
+    ONS=$(echo "${DN}"/*testing_a-"${F}".o)
+    ONS_WILDCARD_LITERAL="${DN}/*testing_a-${F}.o"
     # If the wildcard didn't expand, no files
     if [ "$ONS" != "${ONS_WILDCARD_LITERAL}" ]
     then