Actually prune messages from bugs
[emesinae:emesinae.git] / config / examples / test / test.sh
1 #!/bin/bash
2
3 usage()
4 {
5     echo "usage: test.sh [corpus|test|both]" 1>&2
6     exit 1
7 }
8
9 if [ $# -ne 1 ] ; then usage; fi
10
11
12 mode=${1:-test}
13 case "$mode" in
14     corpus|test|both) ;;
15     *) usage;;
16 esac
17
18 set -e
19
20 prefix=/srv/test
21 db=$prefix/var/run/db.sqlite
22 libexec=$prefix/lib/emesinae/
23 spool=$prefix/var/spool
24
25 user=test-bugs
26
27 perllib=$prefix/share/perl/5.14.2/
28
29 asuser()
30 {
31     sudo su -s /bin/sh -c "$*" $user
32 }
33
34 if [ "${mode}" = "corpus" -o "${mode}" = "both" ] ; then
35     echo Removing existing spool and db
36     sudo rm -rf $spool/incoming/* $spool/201* $db $prefix/var/raw/*
37
38     echo Recreating DB
39
40     sudo ../../../db/createdb.sh -d $db
41     sudo chown $user:$user $db
42     sudo sqlite3 $db < ../../../config/examples/test/dbinit.sql
43
44     echo Inserting corpus
45     asuser ./insertcorpus.sh
46
47     echo Queue run 1
48     asuser env PERLLIB=$perllib $libexec/queuerunner.pl
49
50     sudo cp $db $db.corpus
51 else
52     sudo cp $db.corpus $db
53     sudo chown $user:$user $db
54 fi
55
56 if [ "${mode}" = "test" -o "${mode}" = "both" ] ; then
57     echo Inserting control messages
58     for i in control.*.test ; do
59         asuser ./fakereceive.sh test-control $i
60         if grep -Eq '^(To|Cc): emesinae-test@list\.example\.com' $i ; then
61             asuser ./fakereceive.sh emesinae-maildrop-address $i
62         fi
63     done
64
65     echo Queue run 2
66     asuser env PERLLIB=$perllib TEST_SPOOL_CONTROL_REPLY=1 $libexec/queuerunner.pl
67
68     echo Checking results
69     for result in results.bug.*.msgids ; do
70         [[ $result =~ ^results.bug.([0-9]+).msgids ]]
71         bugnr=${BASH_REMATCH[1]}
72         asuser env PERLLIB=$perllib ./check-bug-msgids.pl $bugnr $result
73     done
74     echo Done $?
75 fi