summaryrefslogtreecommitdiff
path: root/src/run_tests.sh
blob: d5905e41e9c9bb594a857b818e40a165bef966dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env bash

set -e

LOGDIR="/tmp/typhoon/manual"
HEAD_LOGDIR="../head_reference/logs"
TESTS="../tests"

/bin/rm -rf "${LOGDIR}/*"

clear
echo -n "Launching all test suites @ sn=5M and sd=10 in parallel (expect ~5-6 min)... "
_start_time=$(date +%s)
for suite in ecm_ringers ecm_confident_quick ecm_hard_quick; do
   ./typhoon \
       --cpus 1 \
       --hash 256m \
       --logfile "$LOGDIR/sd10_${suite}.log" \
       --batch \
       --command "force; book name /nonexistent.book.bin; sd 10; script $TESTS/${suite}.ep_" \
       > "$LOGDIR/sd10_${suite}.out" 2>&1 &
   ./typhoon \
       --cpus 1 \
       --hash 256m \
       --logfile "$LOGDIR/sn5m_${suite}.log" \
       --batch \
       --command "force; book name /nonexistent.book.bin; sn 5000000; script $TESTS/${suite}.ep_" \
       > "$LOGDIR/sn5m_${suite}.out" 2>&1 &
done
wait
_elapsed=$(( $(date +%s) - _start_time ))
echo "DONE! (${_elapsed}s)"
echo

print_stats_table() {
    # $1 = head .out file, $2 = candidate .out file
    # Extracts the "Final statistics" block (correct solutions .. script time)
    # from each and prints a HEAD/CANDIDATE table with a numeric diff column.
    local headfile="$1" candfile="$2"
    awk -F: '
        NR==FNR {
            n++; lbl[n]=$1; val1[n]=$2; next
        }
        {
            m++; val2[m]=$2
        }
        END {
            printf("  %-22s %-35s %-35s\n", "", "HEAD", "CANDIDATE")
            for (i = 1; i <= n; i++) {
                label = lbl[i]; gsub(/^ +| +$/, "", label)
                v1 = val1[i]; gsub(/^ +| +$/, "", v1)
                v2 = (i <= m ? val2[i] : ""); gsub(/^ +| +$/, "", v2)
                if (label == "leftover") {
                    gsub(/^[0-9.]+% alpha, +/, "", v1)
                    gsub(/^[0-9.]+% alpha, +/, "", v2)
                }
                n1 = v1 + 0; n2 = v2 + 0
                diff = n2 - n1
                if (diff == 0) {
                    dstr = ""
                } else if (diff == int(diff)) {
                    dstr = sprintf(" (%+d)", diff)
                } else {
                    dstr = sprintf(" (%+.2f)", diff)
                }
                printf("  %-22s %-35s %-35s\n", label ":", v1, v2 dstr)
            }
        }
    ' "$headfile" "$candfile"
}

for suite in ecm_ringers ecm_confident_quick ecm_hard_quick; do
    echo "----[ $suite sd=10 ]----"
    print_stats_table \
        <(sed -n '/correct solutions/,/script time/p' "$HEAD_LOGDIR/sd10_${suite}.out") \
        <(sed -n '/correct solutions/,/script time/p' "$LOGDIR/sd10_${suite}.out")
    echo
    echo "----[ $suite sn=5M ]----"
    print_stats_table \
        <(sed -n '/correct solutions/,/script time/p' "$HEAD_LOGDIR/sn5m_${suite}.out") \
        <(sed -n '/correct solutions/,/script time/p' "$LOGDIR/sn5m_${suite}.out")
    echo
done