mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-06-27 17:29:33 +00:00
107 lines
3.2 KiB
Bash
107 lines
3.2 KiB
Bash
#!/bin/bash
|
|
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
########################################################################
|
|
#
|
|
# tests/interop/interop.sh
|
|
#
|
|
# Script to drive our cross-stack interop tests
|
|
#
|
|
########################################################################
|
|
|
|
interop_init()
|
|
{
|
|
SCRIPTNAME="interop.sh"
|
|
if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ] ; then
|
|
cd ../common
|
|
. ./init.sh
|
|
fi
|
|
|
|
mkdir -p "${HOSTDIR}/interop"
|
|
cd "${HOSTDIR}/interop"
|
|
INTEROP=${INTEROP:=tls_interop}
|
|
if [ ! -d "$INTEROP" ]; then
|
|
git clone -q https://github.com/mozilla/tls-interop "$INTEROP"
|
|
git -C "$INTEROP" checkout -q c00685aa953c49f1e844e614746aadc783e81b19
|
|
fi
|
|
INTEROP=$(cd "$INTEROP";pwd -P)
|
|
|
|
# We use the BoringSSL keyfiles
|
|
BORING=${BORING:=boringssl}
|
|
if [ ! -d "$BORING" ]; then
|
|
git clone -q https://boringssl.googlesource.com/boringssl "$BORING"
|
|
git -C "$BORING" checkout -q 7f4f41fa81c03e0f8ef1ab5b3d1d566b5968f107
|
|
fi
|
|
BORING=$(cd "$BORING";pwd -P)
|
|
mkdir "$BORING/build"
|
|
cd "$BORING/build"
|
|
|
|
# Build boring explicitly with gcc because it fails on builds where
|
|
# CC=clang-5.0, for example on asan-builds.
|
|
export CC=gcc
|
|
cmake ..
|
|
make -j$(nproc)
|
|
|
|
# Check out and build OpenSSL.
|
|
# Build with "enable-external-tests" to include the shim in the build.
|
|
cd "${HOSTDIR}"
|
|
OSSL=${OSSL:=openssl}
|
|
if [ ! -d "$OSSL" ]; then
|
|
git clone -q https://github.com/openssl/openssl.git "$OSSL"
|
|
git -C "$OSSL" checkout -q 7d38ca3f8bca58bf7b69e78c1f1ab69e5f429dff
|
|
fi
|
|
OSSL=$(cd "$OSSL";pwd -P)
|
|
cd "$OSSL"
|
|
./config enable-external-tests
|
|
make -j$(nproc)
|
|
|
|
#Some filenames in the OpenSSL repository contain "core".
|
|
#This prevents false positive "core file detected" errors.
|
|
detect_core
|
|
|
|
SCRIPTNAME="interop.sh"
|
|
html_head "interop test"
|
|
}
|
|
|
|
interop_cleanup()
|
|
{
|
|
html "</TABLE><BR>"
|
|
cd ${QADIR}
|
|
. common/cleanup.sh
|
|
}
|
|
|
|
# Function so we can easily add other stacks
|
|
interop_run()
|
|
{
|
|
test_name=$1
|
|
client=$2
|
|
server=$3
|
|
|
|
(cd "$INTEROP";
|
|
cargo run -- --client "$client" --server "$server" --rootdir "$BORING"/ssl/test/runner/ --test-cases cases.json $4 $5 ) 2>interop-${test_name}.errors | tee interop-${test_name}.log
|
|
RESULT=${PIPESTATUS[0]}
|
|
html_msg "${RESULT}" 0 "Interop ${test_name}" "Run successfully"
|
|
if [ $RESULT -ne 0 ]; then
|
|
cat interop-${test_name}.errors
|
|
cat interop-${test_name}.log
|
|
fi
|
|
grep -i 'FAILED\|Assertion failure' interop-${test_name}.errors
|
|
html_msg $? 1 "Interop ${test_name}" "No failures"
|
|
}
|
|
|
|
cd "$(dirname "$0")"
|
|
interop_init
|
|
NSS_SHIM="$BINDIR"/nss_bogo_shim
|
|
BORING_SHIM="$BORING"/build/ssl/test/bssl_shim
|
|
OSSL_SHIM="$OSSL"/test/ossl_shim/ossl_shim
|
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$OSSL"
|
|
interop_run "nss_nss" ${NSS_SHIM} ${NSS_SHIM}
|
|
interop_run "bssl_nss" ${BORING_SHIM} ${NSS_SHIM}
|
|
interop_run "nss_bssl" ${NSS_SHIM} ${BORING_SHIM} "--client-writes-first"
|
|
interop_run "ossl_nss" ${OSSL_SHIM} ${NSS_SHIM} "--force-IPv4"
|
|
interop_run "nss_ossl" ${NSS_SHIM} ${OSSL_SHIM} "--client-writes-first" "--force-IPv4"
|
|
interop_cleanup
|