blob: cc0e49ecd89580b4a4f0552a45ca982761b57e30 [file] [log] [blame]
#! /usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# test-multicert-loading: test loading large numbers of SSL certificates.
TSQA_TSXS=${TSQA_TSXS:-/opt/ats/bin/tsxs}
TSQA_TESTNAME=$(basename $0)
source $(dirname $0)/functions
bootstrap
# If Traffic Server is not up, bring it up ...
alive cop || startup || fatal unable to start Traffic Server
trap shutdown 0 EXIT
#msg unpacking the SSL certificates into \$sysconfdir/ssl.
#(
# tarball=$(cd $(dirname $0) && pwd)/ssl-multicert-bundle.tar.bz2
# conf=$TSQA_ROOT/$(sysconfdir)/ssl
#
# cd $TSQA_ROOT/$(sysconfdir) && tar -xf $tarball
#)
msg updating SSL configuration paths
tsexec traffic_line -s proxy.config.ssl.server.cert.path -v $TSQA_ROOT/$(sysconfdir)/ssl
tsexec traffic_line -s proxy.config.ssl.server.multicert.filename -v $TSQA_ROOT/$(sysconfdir)/ssl/ssl_multicert.config
# XXX configure an exampe plugin that uses the TS-2437 SSL lifecycle hooks
# XXX hardcoding the ports is lame ...
PORT=9443:ssl,10443:ssl,11443:ssl
# Enable SSL and bounce Traffic Server.
tsexec traffic_line -s proxy.config.diags.action.enabled -v 1
tsexec traffic_line -s proxy.config.diags.action.tags -v test.multicert.delay
tsexec traffic_line -s proxy.config.http.server_ports -v $PORT
tsexec traffic_line -s proxy.config.diags.debug.enabled -v 1
tsexec traffic_line -s proxy.config.diags.debug.tags -v ssl
# Stash the admin port while we have traffic_server running. It won't be
# available later if traffic_server does not come back up.
admin_port=$(tsexec traffic_line -r proxy.config.process_manager.mgmt_port)
# The sleep is needed to let Traffic Server schedule the config change.
msgwait 2 to restart with SSL ports enabled
tsexec traffic_line -L
msgwait 6 for traffic_server to restart
alive server || startup || fatal unable to start Traffic Server
# XXX use the SSL lifecycle hooks in TS-2437 to verify that we loaded the
# certificates.
START=$(date +%s)
# Verify that the healthcheck comes up within about 60 seconds.
for c in $(seq 60) ; do
curl --silent --max-time 1 -o /dev/null http://127.0.0.1:${admin_port}/synthetic.txt && exit $TSQA_FAIL
sleep 1
done
fail unable to start traffic_server after $(( $(date +%s) - $START )) seconds
exit $TSQA_FAIL
# vim: set sw=2 ts=2 et :