1*e7be843bSPierre Pronchery#!/bin/bash 2*e7be843bSPierre Pronchery 3*e7be843bSPierre ProncheryCURLRC=~/testcase_curlrc 4*e7be843bSPierre Pronchery 5*e7be843bSPierre Pronchery# Set up the routing needed for the simulation 6*e7be843bSPierre Pronchery/setup.sh 7*e7be843bSPierre Pronchery 8*e7be843bSPierre Pronchery# The following variables are available for use: 9*e7be843bSPierre Pronchery# - ROLE contains the role of this execution context, client or server 10*e7be843bSPierre Pronchery# - SERVER_PARAMS contains user-supplied command line parameters 11*e7be843bSPierre Pronchery# - CLIENT_PARAMS contains user-supplied command line parameters 12*e7be843bSPierre Pronchery 13*e7be843bSPierre Proncherygenerate_outputs_http3() { 14*e7be843bSPierre Pronchery for i in $REQUESTS 15*e7be843bSPierre Pronchery do 16*e7be843bSPierre Pronchery OUTFILE=$(basename $i) 17*e7be843bSPierre Pronchery echo -e "--http3-only\n-o /downloads/$OUTFILE\n--url $i" >> $CURLRC 18*e7be843bSPierre Pronchery echo "--next" >> $CURLRC 19*e7be843bSPierre Pronchery done 20*e7be843bSPierre Pronchery # Remove the last --next 21*e7be843bSPierre Pronchery head -n -1 $CURLRC > $CURLRC.tmp 22*e7be843bSPierre Pronchery mv $CURLRC.tmp $CURLRC 23*e7be843bSPierre Pronchery} 24*e7be843bSPierre Pronchery 25*e7be843bSPierre Proncherydump_curlrc() { 26*e7be843bSPierre Pronchery echo "Using curlrc:" 27*e7be843bSPierre Pronchery cat $CURLRC 28*e7be843bSPierre Pronchery} 29*e7be843bSPierre Pronchery 30*e7be843bSPierre Proncheryif [ "$ROLE" == "client" ]; then 31*e7be843bSPierre Pronchery # Wait for the simulator to start up. 32*e7be843bSPierre Pronchery echo "Waiting for simulator" 33*e7be843bSPierre Pronchery /wait-for-it.sh sim:57832 -s -t 30 34*e7be843bSPierre Pronchery echo "TESTCASE is $TESTCASE" 35*e7be843bSPierre Pronchery rm -f $CURLRC 36*e7be843bSPierre Pronchery 37*e7be843bSPierre Pronchery case "$TESTCASE" in 38*e7be843bSPierre Pronchery "http3") 39*e7be843bSPierre Pronchery echo -e "--verbose\n--parallel" >> $CURLRC 40*e7be843bSPierre Pronchery generate_outputs_http3 41*e7be843bSPierre Pronchery dump_curlrc 42*e7be843bSPierre Pronchery SSL_CERT_FILE=/certs/ca.pem curl --config $CURLRC || exit 1 43*e7be843bSPierre Pronchery exit 0 44*e7be843bSPierre Pronchery ;; 45*e7be843bSPierre Pronchery "handshake"|"transfer"|"retry"|"ipv6") 46*e7be843bSPierre Pronchery HOSTNAME=none 47*e7be843bSPierre Pronchery for req in $REQUESTS 48*e7be843bSPierre Pronchery do 49*e7be843bSPierre Pronchery OUTFILE=$(basename $req) 50*e7be843bSPierre Pronchery if [ "$HOSTNAME" == "none" ] 51*e7be843bSPierre Pronchery then 52*e7be843bSPierre Pronchery HOSTNAME=$(printf "%s\n" "$req" | sed -ne 's,^https://\([^/:]*\).*,\1,p') 53*e7be843bSPierre Pronchery HOSTPORT=$(printf "%s\n" "$req" | sed -ne 's,^https://[^:/]*:\([^/]*\).*,\1,p') 54*e7be843bSPierre Pronchery fi 55*e7be843bSPierre Pronchery echo -n "$OUTFILE " >> ./reqfile.txt 56*e7be843bSPierre Pronchery done 57*e7be843bSPierre Pronchery SSLKEYLOGFILE=/logs/keys.log SSL_CERT_FILE=/certs/ca.pem SSL_CERT_DIR=/certs quic-hq-interop $HOSTNAME $HOSTPORT ./reqfile.txt || exit 1 58*e7be843bSPierre Pronchery exit 0 59*e7be843bSPierre Pronchery ;; 60*e7be843bSPierre Pronchery "resumption") 61*e7be843bSPierre Pronchery for req in $REQUESTS 62*e7be843bSPierre Pronchery do 63*e7be843bSPierre Pronchery OUTFILE=$(basename $req) 64*e7be843bSPierre Pronchery echo -n "$OUTFILE " > ./reqfile.txt 65*e7be843bSPierre Pronchery HOSTNAME=$(printf "%s\n" "$req" | sed -ne 's,^https://\([^/:]*\).*,\1,p') 66*e7be843bSPierre Pronchery HOSTPORT=$(printf "%s\n" "$req" | sed -ne 's,^https://[^:/]*:\([^/]*\).*,\1,p') 67*e7be843bSPierre Pronchery 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 68*e7be843bSPierre Pronchery done 69*e7be843bSPierre Pronchery exit 0 70*e7be843bSPierre Pronchery ;; 71*e7be843bSPierre Pronchery "chacha20") 72*e7be843bSPierre Pronchery for req in $REQUESTS 73*e7be843bSPierre Pronchery do 74*e7be843bSPierre Pronchery OUTFILE=$(basename $req) 75*e7be843bSPierre Pronchery printf "%s " "$OUTFILE" >> ./reqfile.txt 76*e7be843bSPierre Pronchery HOSTNAME=$(printf "%s\n" "$req" | sed -ne 's,^https://\([^/:]*\).*,\1,p') 77*e7be843bSPierre Pronchery HOSTPORT=$(printf "%s\n" "$req" | sed -ne 's,^https://[^:/]*:\([^/]*\).*,\1,p') 78*e7be843bSPierre Pronchery done 79*e7be843bSPierre Pronchery 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 80*e7be843bSPierre Pronchery exit 0 81*e7be843bSPierre Pronchery ;; 82*e7be843bSPierre Pronchery *) 83*e7be843bSPierre Pronchery echo "UNSUPPORTED TESTCASE $TESTCASE" 84*e7be843bSPierre Pronchery exit 127 85*e7be843bSPierre Pronchery ;; 86*e7be843bSPierre Pronchery esac 87*e7be843bSPierre Proncheryelif [ "$ROLE" == "server" ]; then 88*e7be843bSPierre Pronchery echo "TESTCASE is $TESTCASE" 89*e7be843bSPierre Pronchery rm -f $CURLRC 90*e7be843bSPierre Pronchery case "$TESTCASE" in 91*e7be843bSPierre Pronchery "handshake"|"transfer"|"ipv6") 92*e7be843bSPierre Pronchery NO_ADDR_VALIDATE=yes SSLKEYLOGFILE=/logs/keys.log FILEPREFIX=/www quic-hq-interop-server 443 /certs/cert.pem /certs/priv.key 93*e7be843bSPierre Pronchery ;; 94*e7be843bSPierre Pronchery "retry") 95*e7be843bSPierre Pronchery SSLKEYLOGFILE=/logs/keys.log FILEPREFIX=/www quic-hq-interop-server 443 /certs/cert.pem /certs/priv.key 96*e7be843bSPierre Pronchery ;; 97*e7be843bSPierre Pronchery "resumption") 98*e7be843bSPierre Pronchery NO_ADDR_VALIDATE=yes SSLKEYLOGFILE=/logs/keys.log FILEPREFIX=/www quic-hq-interop-server 443 /certs/cert.pem /certs/priv.key 99*e7be843bSPierre Pronchery ;; 100*e7be843bSPierre Pronchery "http3") 101*e7be843bSPierre Pronchery FILEPREFIX=/www/ SSLKEYLOGFILE=/logs/keys.log ossl-nghttp3-demo-server 443 /certs/cert.pem /certs/priv.key 102*e7be843bSPierre Pronchery ;; 103*e7be843bSPierre Pronchery "chacha20") 104*e7be843bSPierre Pronchery SSL_CIPHER_SUITES=TLS_CHACHA20_POLY1305_SHA256 SSLKEYLOGFILE=/logs/keys.log FILEPREFIX=/www quic-hq-interop-server 443 /certs/cert.pem /certs/priv.key 105*e7be843bSPierre Pronchery ;; 106*e7be843bSPierre Pronchery *) 107*e7be843bSPierre Pronchery echo "UNSUPPORTED TESTCASE $TESTCASE" 108*e7be843bSPierre Pronchery exit 127 109*e7be843bSPierre Pronchery ;; 110*e7be843bSPierre Pronchery esac 111*e7be843bSPierre Proncheryelse 112*e7be843bSPierre Pronchery echo "Unknown ROLE $ROLE" 113*e7be843bSPierre Pronchery exit 127 114*e7be843bSPierre Proncheryfi 115*e7be843bSPierre Pronchery 116