[4b53371] | 1 | #!/bin/bash |
---|
| 2 | |
---|
| 3 | # Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net> |
---|
| 4 | |
---|
| 5 | set -e |
---|
| 6 | |
---|
| 7 | tests="${1##t-}" |
---|
| 8 | |
---|
| 9 | BADVARS=0 |
---|
[e3cbda4] | 10 | for v in TEST_HOST TEST_IP TEST_PORT TEST_QUERY_DELAY TEST_GAP MSVA_PORT; do |
---|
[4b53371] | 11 | if [ ! -v "$v" ]; then |
---|
| 12 | printf "You need to set the %s environment variable\n" "$v" >&2 |
---|
| 13 | BADVARS=1 |
---|
| 14 | fi |
---|
| 15 | done |
---|
| 16 | |
---|
| 17 | if [ 0 != "$BADVARS" ]; then |
---|
| 18 | exit 1 |
---|
| 19 | fi |
---|
| 20 | |
---|
| 21 | if [ . != "$(dirname "$0")" ]; then |
---|
| 22 | printf "You should only run this mod-gnutls test suite from the t/ directory of the mod_gnutls source.\n" >&2 |
---|
| 23 | exit 1 |
---|
| 24 | fi |
---|
| 25 | |
---|
[e3cbda4] | 26 | function stop_msva() { |
---|
| 27 | kill %1 |
---|
| 28 | } |
---|
| 29 | |
---|
[4b53371] | 30 | function apache_down_err() { |
---|
| 31 | printf "FAILURE: %s\n" "$TEST_NAME" |
---|
| 32 | /usr/sbin/apache2 -f "$(pwd)/apache.conf" -k stop || true |
---|
| 33 | if [ -e output ]; then |
---|
| 34 | printf "\ngnutls-cli outputs:\n" |
---|
| 35 | diff -u output <( tail -n "$(wc -l < output)" "$output" ) || true |
---|
| 36 | fi |
---|
| 37 | printf "\nApache error logs:\n" |
---|
| 38 | tail "../../logs/${TEST_NAME}.error.log" |
---|
[e3cbda4] | 39 | stop_msva |
---|
[4b53371] | 40 | } |
---|
| 41 | |
---|
| 42 | if [ -z "$tests" ] ; then |
---|
| 43 | tests=./tests/* |
---|
| 44 | else |
---|
| 45 | tests=./tests/"$(printf "%02d" "$tests")"_* |
---|
| 46 | fi |
---|
| 47 | |
---|
[e3cbda4] | 48 | GNUPGHOME=$(pwd)/msva.gnupghome MSVA_KEYSERVER_POLICY=never monkeysphere-validation-agent & |
---|
| 49 | |
---|
| 50 | trap stop_msva EXIT |
---|
| 51 | |
---|
| 52 | sleep "$TEST_GAP" |
---|
| 53 | |
---|
| 54 | printf "TESTING: initial MSVA verification\n" |
---|
| 55 | MONKEYSPHERE_VALIDATION_AGENT_SOCKET="http://127.0.0.1:$MSVA_PORT" msva-query-agent https "$(cat client.uid)" x509pem client < client/x509.pem |
---|
| 56 | printf "\nSUCCESS: initial MSVA verification\n" |
---|
| 57 | |
---|
[4b53371] | 58 | for t in $tests; do |
---|
[e3cbda4] | 59 | sleep "$TEST_GAP" |
---|
[4b53371] | 60 | export TEST_NAME="$(basename "$t")" |
---|
| 61 | output="../../outputs/${TEST_NAME}.output" |
---|
| 62 | rm -f "$output" |
---|
| 63 | cd "$t" |
---|
| 64 | if [ -e fail.* ]; then |
---|
| 65 | EXPECTED_FAILURE="$(printf " (expected: %s)" fail.*)" |
---|
| 66 | else |
---|
| 67 | unset EXPECTED_FAILURE |
---|
| 68 | fi |
---|
| 69 | printf "TESTING: %s%s\n" "$TEST_NAME" "$EXPECTED_FAILURE" |
---|
| 70 | trap apache_down_err EXIT |
---|
[e3cbda4] | 71 | MONKEYSPHERE_VALIDATION_AGENT_SOCKET="http://127.0.0.1:$MSVA_PORT" /usr/sbin/apache2 -f "$(pwd)/apache.conf" -k start || [ -e fail.server ] |
---|
[4b53371] | 72 | |
---|
| 73 | if (sed "s/__HOSTNAME__/${TEST_HOST}/" < ./input && sleep "$TEST_QUERY_DELAY") | \ |
---|
| 74 | gnutls-cli -p "${TEST_PORT}" $(cat ./gnutls-cli.args) "${TEST_HOST}" > \ |
---|
| 75 | "$output" ; then |
---|
| 76 | if [ -e fail* ]; then |
---|
| 77 | printf "%s should have failed but succeeded\n" "$(basename "$t")" >&2 |
---|
| 78 | exit 1 |
---|
| 79 | fi |
---|
| 80 | else |
---|
| 81 | if [ ! -e fail* ]; then |
---|
| 82 | printf "%s should have succeeded but failed\n" "$(basename "$t")" >&2 |
---|
| 83 | exit 1 |
---|
| 84 | fi |
---|
| 85 | fi |
---|
| 86 | if [ -e output ] ; then |
---|
| 87 | diff -q -u output <( tail -n "$(wc -l < output)" "$output" ) |
---|
| 88 | fi |
---|
| 89 | /usr/sbin/apache2 -f "$(pwd)/apache.conf" -k stop || [ -e fail.server ] |
---|
[e3cbda4] | 90 | trap stop_msva EXIT |
---|
[4b53371] | 91 | printf "SUCCESS: %s\n" "$TEST_NAME" |
---|
| 92 | cd ../.. |
---|
| 93 | done |
---|
[e3cbda4] | 94 | |
---|
| 95 | stop_msva |
---|