mirror of
https://github.com/openssl/openssl.git
synced 2024-12-15 06:01:37 +08:00
Add dockerfile for generation of a quic interop container
Reviewed-by: Kurt Roeckx <kurt@roeckx.be> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/25091)
This commit is contained in:
parent
d550d2aae5
commit
8ffdfea639
43
interop/quic-openssl-docker/Dockerfile
Normal file
43
interop/quic-openssl-docker/Dockerfile
Normal file
@ -0,0 +1,43 @@
|
||||
FROM martenseemann/quic-network-simulator-endpoint:latest
|
||||
|
||||
# Make sure curl picks up the new openssl
|
||||
ENV PKG_CONFIG_LIBDIR=/usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig/:$PKG_CONFIG_LIBDIR
|
||||
# Set the environment variable LD_LIBRARY_PATH to ensure we get the right libraries
|
||||
ENV LD_LIBRARY_PATH=/usr/lib64:/usr/lib:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
|
||||
|
||||
# Install needed tools
|
||||
RUN apt-get update && apt-get install -y \
|
||||
git make gcc perl cmake build-essential \
|
||||
autoconf libtool pkg-config libpsl-dev
|
||||
|
||||
# build nghttp3
|
||||
RUN git clone https://github.com/ngtcp2/nghttp3.git && \
|
||||
cd nghttp3 && \
|
||||
git submodule update --init && \
|
||||
autoreconf -i && \
|
||||
./configure --prefix=/usr && \
|
||||
make -j check && \
|
||||
make install && \
|
||||
rm -rf nghttp3
|
||||
|
||||
# download and build openssl
|
||||
RUN git clone https://github.com/openssl/openssl.git && \
|
||||
cd openssl && \
|
||||
./Configure enable-fips no-docs --prefix=/usr --openssldir=/etc/pki/tls && \
|
||||
make -j && make install && \
|
||||
rm -rf openssl
|
||||
|
||||
# Build curl
|
||||
RUN git clone https://github.com/curl/curl.git && \
|
||||
cd curl && \
|
||||
autoreconf -fi && ./configure --with-openssl-quic --with-openssl --with-nghttp3 --prefix=/usr && \
|
||||
make -j && \
|
||||
make install && \
|
||||
rm -rf /curl
|
||||
|
||||
# copy run script and run it
|
||||
COPY run_endpoint.sh .
|
||||
RUN chmod +x run_endpoint.sh
|
||||
RUN apt-get clean
|
||||
ENTRYPOINT [ "./run_endpoint.sh" ]
|
||||
|
23
interop/quic-openssl-docker/README.md
Normal file
23
interop/quic-openssl-docker/README.md
Normal file
@ -0,0 +1,23 @@
|
||||
quic-openssl-docker
|
||||
===================
|
||||
|
||||
Dockerfile for quic working group interop testing
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
This Dockerfile builds a container for use with the
|
||||
[QUIC working group interop testing facility](https://interop.seemann.io/?run=2024-08-05T08:30)
|
||||
It can also be used locally to test QUIC interoperability via the
|
||||
[QUIC interop runner](https://github.com/quic-interop/quic-interop-runner)
|
||||
Please see instructions there for running local interop testing
|
||||
|
||||
Building the container
|
||||
----------------------
|
||||
|
||||
From this directory:
|
||||
`docker build -t quay.io/openssl-ci/openssl-quic-interop:latest .`
|
||||
|
||||
Note the tag name is important, as the interop runner knows the container
|
||||
by this name. If you build locally with changes, the interop runner project
|
||||
will pick up the container from your local registry rather than downloading it
|
87
interop/quic-openssl-docker/run_endpoint.sh
Normal file
87
interop/quic-openssl-docker/run_endpoint.sh
Normal file
@ -0,0 +1,87 @@
|
||||
#!/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
|
||||
"http3"|"transfer")
|
||||
echo -e "--verbose\n--parallel" >> $CURLRC
|
||||
generate_outputs_http3
|
||||
dump_curlrc
|
||||
SSL_CERT_FILE=/certs/ca.pem curl --config $CURLRC
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
"handshake")
|
||||
OUTFILE=$(basename $REQUESTS)
|
||||
echo -e "--verbose\n--http3\n-H \"Connection: close\"\n-o /downloads/$OUTFILE\n--url $REQUESTS" >> $CURLRC
|
||||
dump_curlrc
|
||||
SSL_CERT_FILE=/certs/ca.pem curl --config $CURLRC
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
"retry")
|
||||
OUTFILE=$(basename $REQUESTS)
|
||||
SSL_CERT_FILE=/certs/ca.pem curl --verbose --http3 -o /downloads/$OUTFILE $REQUESTS
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
"chacha20")
|
||||
OUTFILE=$(basename $REQUESTS)
|
||||
SSL_CERT_FILE=/certs/ca.pem curl --verbose --tlsv1.3 --tls13-ciphers TLS_CHACHA20_POLY1305_SHA256 --http3 -o /downloads/$OUTFILE $REQUESTS
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "UNSUPPORTED TESTCASE $TESTCASE"
|
||||
exit 127
|
||||
;;
|
||||
esac
|
||||
elif [ "$ROLE" == "server" ]; then
|
||||
echo "UNSUPPORTED"
|
||||
exit 127
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user