blob: 59947f39796e5e361bfb236b6ec9820553838422 [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.
# The following environment variables must be set (ordinarily by `docker run -e` arguments):
# TO_URI
# TO_USER
# TO_PASS
# CDN
# Check that env vars are set
envvars=(TESTTO_URI TESTTO_PORT TESTCACHES_URI TESTCACHES_PORT_START TM_URI)
for v in $envvars; do
if [[ -z ${!v} ]]; then
echo "$v is unset"
exit 1
fi
done
TO_API_VERSION=4.0
CFG_FILE=/tm/traffic-monitor-integration-test.cfg
start() {
printf "DEBUG traffic_monitor_integration starting\n"
exec /traffic_monitor_integration_test -test.v -cfg $CFG_FILE
}
init() {
wait_for_endpoint "${TESTTO_URI}/api/${TO_API_VERSION}/servers"
wait_for_endpoint "${TESTCACHES_URI}:${TESTCACHES_PORT_START}/_astats"
wait_for_endpoint "${TM_URI}"
TESTCACHES_ADDRESS=$(ping testcaches -4 -c 1 | head -n 1 | grep -Eo '[0-9]+.[0-9]+.[0-9]+.[0-9]+')
TESTCACHES_GATEWAY=$(echo $TESTCACHES_ADDRESS | sed "s/\([0-9]\+.[0-9]\+.[0-9]\+.\)[0-9]/\11/")
jq "(.. | .address?) |= \"$TESTCACHES_ADDRESS\" | (.. | .gateway?) |= \"$TESTCACHES_GATEWAY\"" \
/tm/monitoring.json > /tm/monitoring.json.tmp && mv /tm/monitoring.json.tmp /tm/monitoring.json
curl -Lvsk ${TESTTO_URI}/api/${TO_API_VERSION}/cdns/fake/snapshot -X POST -d "@/tm/snapshot.json"
curl -Lvsk ${TESTTO_URI}/api/${TO_API_VERSION}/cdns/fake/configs/monitoring -X POST -d '@/tm/monitoring.json'
curl -Lvsk ${TESTTO_URI}/api/${TO_API_VERSION}/servers -X POST -d '@/tm/servers.json'
cat >$CFG_FILE <<-EOF
{
"trafficMonitor": {
"url": "$TM_URI"
},
"default": {
"session": {
"timeoutInSecs": 30
},
"log": {
"debug": "stdout",
"event": "stdout",
"info": "stdout",
"error": "stdout",
"warning": "stdout"
}
}
}
EOF
echo "INITIALIZED=1" >>/etc/environment
}
function wait_for_endpoint() {
try=0
while [ $(curl -Lsk --write-out "%{http_code}" "$1" -o /dev/null) -ne 200 ] ; do
echo "Waiting for $1 to return a 200 OK"
try=$(expr $try + 1)
if [[ $try -gt 5 ]]; then
echo "Unable to get $1"
exit 1
fi
sleep 5
done
}
export -f wait_for_endpoint
source /etc/environment
if [ -z "$INITIALIZED" ]; then init; fi
start