mirror of https://github.com/wolfSSL/wolfssl.git
68 lines
2.1 KiB
Bash
Executable File
68 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# google.test
|
|
|
|
# timeout(1) is GNU coreutils and absent on macOS; where it's missing, run the
|
|
# command unbounded (the flaky hang this guards against is Linux-only CI).
|
|
# A prefix variable rather than a shell function: backgrounding a function
|
|
# makes $! the forked subshell, so a later "kill $server_pid" would stop the
|
|
# wrapper and orphan the server it was meant to kill.
|
|
if command -v timeout >/dev/null 2>&1; then
|
|
TIMEOUT_KILL_2M="timeout -s KILL 2m"
|
|
else
|
|
TIMEOUT_KILL_2M=""
|
|
fi
|
|
|
|
server=www.google.com
|
|
|
|
[ ! -x ./examples/client/client ] && echo -e "\n\nClient doesn't exist" && exit 1
|
|
|
|
if ! test -n "$WOLFSSL_EXTERNAL_TEST"; then
|
|
echo "WOLFSSL_EXTERNAL_TEST not set, won't run"
|
|
exit 77
|
|
fi
|
|
if test "$WOLFSSL_EXTERNAL_TEST" == "0"; then
|
|
echo "WOLFSSL_EXTERNAL_TEST is defined to zero, won't run"
|
|
exit 77
|
|
fi
|
|
|
|
if ! ./examples/client/client -V | grep -q 3; then
|
|
echo 'skipping google.test because TLS1.2 is not available.' 1>&2
|
|
exit 77
|
|
fi
|
|
|
|
# is our desired server there?
|
|
./scripts/ping.test $server 2
|
|
RESULT=$?
|
|
[ $RESULT -ne 0 ] && exit 0
|
|
|
|
# Run the client against the server. The server may answer ping but still drop
|
|
# or throttle TCP connections from this host (Google does this to busy CI
|
|
# egress IPs). Failing to open the TCP connection exercises no wolfSSL code,
|
|
# so treat it like the unreachable-server case above and skip instead of
|
|
# failing.
|
|
run_client() {
|
|
OUTPUT="$($TIMEOUT_KILL_2M ./examples/client/client "$@" 2>&1)"
|
|
RESULT=$?
|
|
echo "$OUTPUT"
|
|
if [ $RESULT -ne 0 ] && echo "$OUTPUT" | grep -q 'tcp connect failed'; then
|
|
echo -e "\n\ntcp connect to $server failed, skipping"
|
|
exit 77
|
|
fi
|
|
return $RESULT
|
|
}
|
|
|
|
# client test against the server
|
|
run_client -X -C -h $server -p 443 -g -d
|
|
RESULT=$?
|
|
[ $RESULT -ne 0 ] && echo -e "\n\nClient connection failed" && exit 1
|
|
|
|
if ./examples/client/client -V | grep -q 4; then
|
|
# client test against the server using TLS v1.3
|
|
run_client -v 4 -X -C -h $server -p 443 -g -d
|
|
RESULT=$?
|
|
[ $RESULT -ne 0 ] && echo -e "\n\nTLSv1.3 Client connection failed" && exit 1
|
|
fi
|
|
|
|
exit 0
|