2024-08-06 04:42:06 +08:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
CURLRC=~/testcase_curlrc
|
|
|
|
|
|
|
|
# Set up the routing needed for the simulation
|
|
|
|
/setup.sh
|
|
|
|
|
|
|
|
# The following variables are available for use:
|
|
|
|
# - ROLE contains the role of this execution context, client or server
|
|
|
|
# - SERVER_PARAMS contains user-supplied command line parameters
|
|
|
|
# - CLIENT_PARAMS contains user-supplied command line parameters
|
|
|
|
|
|
|
|
generate_outputs_http3() {
|
|
|
|
for i in $REQUESTS
|
|
|
|
do
|
|
|
|
OUTFILE=$(basename $i)
|
|
|
|
echo -e "--http3-only\n-o /downloads/$OUTFILE\n--url $i" >> $CURLRC
|
|
|
|
echo "--next" >> $CURLRC
|
|
|
|
done
|
|
|
|
# Remove the last --next
|
|
|
|
head -n -1 $CURLRC > $CURLRC.tmp
|
|
|
|
mv $CURLRC.tmp $CURLRC
|
|
|
|
}
|
|
|
|
|
|
|
|
dump_curlrc() {
|
|
|
|
echo "Using curlrc:"
|
|
|
|
cat $CURLRC
|
|
|
|
}
|
|
|
|
|
|
|
|
if [ "$ROLE" == "client" ]; then
|
|
|
|
# Wait for the simulator to start up.
|
|
|
|
echo "Waiting for simulator"
|
|
|
|
/wait-for-it.sh sim:57832 -s -t 30
|
|
|
|
echo "TESTCASE is $TESTCASE"
|
|
|
|
rm -f $CURLRC
|
|
|
|
|
|
|
|
case "$TESTCASE" in
|
2024-08-23 03:17:32 +08:00
|
|
|
"http3")
|
2024-08-30 01:52:58 +08:00
|
|
|
echo -e "--verbose\n--parallel" >> $CURLRC
|
|
|
|
generate_outputs_http3
|
|
|
|
dump_curlrc
|
|
|
|
SSL_CERT_FILE=/certs/ca.pem curl --config $CURLRC || exit 1
|
2024-08-06 04:42:06 +08:00
|
|
|
exit 0
|
|
|
|
;;
|
2024-12-17 01:23:59 +08:00
|
|
|
"handshake"|"transfer"|"retry"|"ipv6")
|
|
|
|
HOSTNAME=none
|
|
|
|
for req in $REQUESTS
|
|
|
|
do
|
|
|
|
OUTFILE=$(basename $req)
|
|
|
|
if [ "$HOSTNAME" == "none" ]
|
|
|
|
then
|
|
|
|
HOSTNAME=$(printf "%s\n" "$req" | sed -ne 's,^https://\([^/:]*\).*,\1,p')
|
|
|
|
HOSTPORT=$(printf "%s\n" "$req" | sed -ne 's,^https://[^:/]*:\([^/]*\).*,\1,p')
|
|
|
|
fi
|
|
|
|
echo -n "$OUTFILE " >> ./reqfile.txt
|
|
|
|
done
|
|
|
|
SSLKEYLOGFILE=/logs/keys.log SSL_CERT_FILE=/certs/ca.pem SSL_CERT_DIR=/certs quic-hq-interop $HOSTNAME $HOSTPORT ./reqfile.txt || exit 1
|
|
|
|
exit 0
|
|
|
|
;;
|
2024-08-30 01:52:58 +08:00
|
|
|
"resumption")
|
2024-12-17 01:23:59 +08:00
|
|
|
for req in $REQUESTS
|
|
|
|
do
|
|
|
|
OUTFILE=$(basename $req)
|
|
|
|
echo -n "$OUTFILE " > ./reqfile.txt
|
|
|
|
HOSTNAME=$(printf "%s\n" "$req" | sed -ne 's,^https://\([^/:]*\).*,\1,p')
|
|
|
|
HOSTPORT=$(printf "%s\n" "$req" | sed -ne 's,^https://[^:/]*:\([^/]*\).*,\1,p')
|
|
|
|
SSL_SESSION_FILE=./session.db SSLKEYLOGFILE=/logs/keys.log SSL_CERT_FILE=/certs/ca.pem SSL_CERT_DIR=/certs quic-hq-interop $HOSTNAME $HOSTPORT ./reqfile.txt || exit 1
|
|
|
|
done
|
|
|
|
exit 0
|
|
|
|
;;
|
2024-08-06 04:42:06 +08:00
|
|
|
"chacha20")
|
2024-12-17 01:23:59 +08:00
|
|
|
for req in $REQUESTS
|
|
|
|
do
|
|
|
|
OUTFILE=$(basename $req)
|
|
|
|
printf "%s " "$OUTFILE" >> ./reqfile.txt
|
|
|
|
HOSTNAME=$(printf "%s\n" "$req" | sed -ne 's,^https://\([^/:]*\).*,\1,p')
|
|
|
|
HOSTPORT=$(printf "%s\n" "$req" | sed -ne 's,^https://[^:/]*:\([^/]*\).*,\1,p')
|
|
|
|
done
|
|
|
|
SSL_CIPHER_SUITES=TLS_CHACHA20_POLY1305_SHA256 SSL_SESSION_FILE=./session.db SSLKEYLOGFILE=/logs/keys.log SSL_CERT_FILE=/certs/ca.pem SSL_CERT_DIR=/certs quic-hq-interop $HOSTNAME $HOSTPORT ./reqfile.txt || exit 1
|
|
|
|
exit 0
|
|
|
|
;;
|
2024-08-06 04:42:06 +08:00
|
|
|
*)
|
|
|
|
echo "UNSUPPORTED TESTCASE $TESTCASE"
|
|
|
|
exit 127
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
elif [ "$ROLE" == "server" ]; then
|
2024-11-12 06:12:19 +08:00
|
|
|
echo "TESTCASE is $TESTCASE"
|
|
|
|
rm -f $CURLRC
|
|
|
|
case "$TESTCASE" in
|
2024-12-17 01:23:59 +08:00
|
|
|
"handshake"|"transfer"|"ipv6")
|
2024-12-12 22:40:29 +08:00
|
|
|
NO_ADDR_VALIDATE=yes SSLKEYLOGFILE=/logs/keys.log FILEPREFIX=/www quic-hq-interop-server 443 /certs/cert.pem /certs/priv.key
|
|
|
|
;;
|
2025-01-24 02:55:13 +08:00
|
|
|
"retry")
|
|
|
|
SSLKEYLOGFILE=/logs/keys.log FILEPREFIX=/www quic-hq-interop-server 443 /certs/cert.pem /certs/priv.key
|
|
|
|
;;
|
|
|
|
"resumption")
|
|
|
|
NO_ADDR_VALIDATE=yes SSLKEYLOGFILE=/logs/keys.log FILEPREFIX=/www quic-hq-interop-server 443 /certs/cert.pem /certs/priv.key
|
2024-11-12 06:12:19 +08:00
|
|
|
;;
|
2024-12-05 04:27:00 +08:00
|
|
|
"http3")
|
|
|
|
FILEPREFIX=/www/ SSLKEYLOGFILE=/logs/keys.log ossl-nghttp3-demo-server 443 /certs/cert.pem /certs/priv.key
|
|
|
|
;;
|
2024-11-12 06:12:19 +08:00
|
|
|
"chacha20")
|
|
|
|
SSL_CIPHER_SUITES=TLS_CHACHA20_POLY1305_SHA256 SSLKEYLOGFILE=/logs/keys.log FILEPREFIX=/www quic-hq-interop-server 443 /certs/cert.pem /certs/priv.key
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "UNSUPPORTED TESTCASE $TESTCASE"
|
|
|
|
exit 127
|
|
|
|
;;
|
|
|
|
esac
|
2024-08-06 04:52:06 +08:00
|
|
|
else
|
|
|
|
echo "Unknown ROLE $ROLE"
|
|
|
|
exit 127
|
2024-08-06 04:42:06 +08:00
|
|
|
fi
|
|
|
|
|