xref: /freebsd/crypto/openssl/test/quic-openssl-docker/run_endpoint.sh (revision e7be843b4a162e68651d3911f0357ed464915629)
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