mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33:09 +00:00

Perform more complex verification and validation. - signature.sh : extract and optionally compare Bench/Signature/Node count. - perft.sh : verify perft counts for a number of positions. - instrumented.sh : run a few commands or uci sequences through valgrind/sanitizer instrumented binaries. - reprosearch.sh : verify reproducibility of search. These script can be used from directly from the command line in the src directory. Update travis script to use these shell scripts. No functional change.
82 lines
1.6 KiB
Bash
Executable file
82 lines
1.6 KiB
Bash
Executable file
#!/bin/bash
|
|
# check for errors under valgrind or sanitizers.
|
|
|
|
error()
|
|
{
|
|
echo "instrumented testing failed on line $1"
|
|
exit 1
|
|
}
|
|
trap 'error ${LINENO}' ERR
|
|
|
|
# define suitable post and prefixes for testing options
|
|
case $1 in
|
|
--valgrind)
|
|
echo "valgrind testing started"
|
|
prefix=''
|
|
exeprefix='valgrind --error-exitcode=42'
|
|
postfix='1>/dev/null'
|
|
;;
|
|
--sanitizer)
|
|
echo "sanitizer testing started"
|
|
prefix='!'
|
|
exeprefix=''
|
|
postfix='2>&1 | grep "runtime error:"'
|
|
;;
|
|
*)
|
|
echo "unknown testing started"
|
|
prefix=''
|
|
exeprefix=''
|
|
postfix=''
|
|
;;
|
|
esac
|
|
|
|
# simple command line testing
|
|
for args in "eval" \
|
|
"go nodes 1000" \
|
|
"go depth 10" \
|
|
"go movetime 1000" \
|
|
"go wtime 8000 btime 8000 winc 500 binc 500" \
|
|
"bench 128 1 10 default depth"
|
|
do
|
|
|
|
echo "$prefix $exeprefix ./stockfish $args $postfix"
|
|
eval "$prefix $exeprefix ./stockfish $args $postfix"
|
|
|
|
done
|
|
|
|
# more general testing, following an uci protocol exchange
|
|
cat << EOF > game.exp
|
|
set timeout 10
|
|
spawn $exeprefix ./stockfish
|
|
|
|
send "uci\n"
|
|
expect "uciok"
|
|
|
|
send "ucinewgame\n"
|
|
send "position startpos\n"
|
|
send "go nodes 1000\n"
|
|
expect "bestmove"
|
|
|
|
send "position startpos moves e2e4 e7e6\n"
|
|
send "go nodes 1000\n"
|
|
expect "bestmove"
|
|
|
|
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 exps in game.exp
|
|
do
|
|
|
|
echo "$prefix expect game.exp $postfix"
|
|
eval "$prefix expect game.exp $postfix"
|
|
|
|
done
|
|
|
|
rm game.exp
|
|
|
|
echo "instrumented testing OK"
|