#!/bin/bash snum="unknown" case "$#" in 1) case "$1" in "-?"|"--help") echo "Usage: $0 [serial]" exit 0 ;; esac snum="$1" serial="--serial $1" ;; 0) snum=`sudo dmesg -t | awk '/usb.*Product:/ { ck = index($0, "ChaosKey"); } /usb.*SerialNumber:/ { if (ck) print $4; }' | tail -1` case "$snum" in "") serial="" ;; *) serial="--serial $snum" ;; esac ;; *) echo "Usage: $0 [serial]" exit 1 ;; esac echo -e '\e[34mTesting ChaosKey' $snum '\e[39m' tests="0:100 1:100 2:100 3:100 12:10 13:100 15:10000 16:250 202:1000 203:100 204:500 206:20 207:1000:32 209:1000" PASS=0 FAIL=0 WEAK=0 ../ao-tools/ao-chaosread/ao-chaosread $serial --infinite --bytes | for test in $tests done; do case $test in *:*:*) dnum=`echo $test | sed 's/:.*$//'` tnum=`echo $test | sed 's/^[^:]*://'` tnum=`echo $test | sed 's/^[^:]*://' | sed 's/:.*$//'` nnum=`echo $test | sed 's/^.*://'` opts="-d $dnum -t $tnum -n $nnum" ;; *:*) dnum=`echo $test | sed 's/:.*$//'` tnum=`echo $test | sed 's/^.*://'` opts="-d $dnum -t $tnum" ;; *) dnum=$test opts="-d $dnum" ;; esac case $dnum in done) echo DONE ;; *) echo TEST $dnum dieharder -g 200 $opts ;; esac done | while read result; do case "$result" in TEST*) testnum=`echo $result | sed 's/TEST //'` ;; *PASSED*) PASS=`expr $PASS + 1` ;; *WEAK*) WEAK=`expr $WEAK + 1` ;; *FAILED*) echo test $testnum failed FAIL=`expr $FAIL + 1` ;; DONE) echo pass $PASS weak $WEAK fail $FAIL case $PASS:$FAIL in [1-9]*:0) echo -e '\e[32m'ChaosKey $snum is ready to ship'\e[39m' exit 0 ;; *) echo -e '\e[31m'ChaosKey $snum failed'\e[39m' exit 1 ;; esac ;; esac done