Integrate syzygy in automated testing (v2).
authorJoost VandeVondele <Joost.VandeVondele@gmail.com>
Fri, 30 Mar 2018 08:21:59 +0000 (10:21 +0200)
committerStéphane Nicolet <cassio@free.fr>
Fri, 30 Mar 2018 08:23:48 +0000 (10:23 +0200)
Extends valgrind/sanitizer testing to cover syzygy code.

The script downloads 4 man syzygy as needed. The time needed for the
additional testing is small (in fact hard to see a difference compared
to the large fluctuations in testing time in travis).

Possible follow-ups:

 * include more TB sensitive positions in bench.
 * include the test script of recent commit "Refactor tbprobe.cpp".
 * verify unchanged bench with TB (with a long run).
 * make the TB part of the continuation integration tests optional.

Closes https://github.com/official-stockfish/Stockfish/pull/1518
and    https://github.com/official-stockfish/Stockfish/pull/1490

No functional change.

.travis.yml
tests/instrumented.sh

index 1168664..ded29e4 100644 (file)
@@ -9,7 +9,7 @@ matrix:
       addons:
         apt:
           sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-7', 'g++-7-multilib', 'g++-multilib', 'valgrind', 'expect']
+          packages: ['g++-7', 'g++-7-multilib', 'g++-multilib', 'valgrind', 'expect', 'curl']
       env:
         - COMPILER=g++-7
         - COMP=gcc
@@ -19,7 +19,7 @@ matrix:
       addons:
         apt:
           sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
-          packages: ['clang-5.0', 'llvm-5.0-dev', 'g++-multilib', 'valgrind', 'expect']
+          packages: ['clang-5.0', 'llvm-5.0-dev', 'g++-multilib', 'valgrind', 'expect', 'curl']
       env:
         - COMPILER=clang++-5.0
         - COMP=clang
index 2cae793..137d0e4 100755 (executable)
@@ -108,13 +108,34 @@ cat << EOF > game.exp
  exit \$value
 EOF
 
-for exps in game.exp
+#download TB as needed
+if [ ! -d ../tests/syzygy ]; then
+   curl -sL https://api.github.com/repos/niklasf/python-chess/tarball/9b9aa13f9f36d08aadfabff872882f4ab1494e95 | tar -xzf -
+   mv niklasf-python-chess-9b9aa13 ../tests/syzygy
+fi
+
+cat << EOF > syzygy.exp
+ set timeout 240
+ spawn $exeprefix ./stockfish
+ send "uci\n"
+ send "setoption name SyzygyPath value ../tests/syzygy/\n"
+ expect "info string Found 35 tablebases" {} timeout {exit 1}
+ send "bench 128 1 10 default depth\n"
+ send "quit\n"
+ expect eof
+
+ # return error code of the spawned program, useful for valgrind
+ lassign [wait] pid spawnid os_error_flag value
+ exit \$value
+EOF
+
+for exp in game.exp syzygy.exp
 do
 
-  echo "$prefix expect $exps $postfix"
-  eval "$prefix expect $exps $postfix"
+  echo "$prefix expect $exp $postfix"
+  eval "$prefix expect $exp $postfix"
 
-  rm $exps
+  rm $exp
 
 done