You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2013/12/17 00:01:13 UTC
[1/2] git commit: TS-2436: add more tsxs query variables
Updated Branches:
refs/heads/master 84f92083c -> 52ce5d251
TS-2436: add more tsxs query variables
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/46b845d7
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/46b845d7
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/46b845d7
Branch: refs/heads/master
Commit: 46b845d7c778aa99855c937190ee7acf8c4444fd
Parents: 84f9208
Author: James Peach <jp...@apache.org>
Authored: Fri Dec 13 17:09:05 2013 -0800
Committer: James Peach <jp...@apache.org>
Committed: Mon Dec 16 15:00:33 2013 -0800
----------------------------------------------------------------------
tools/tsxs.in | 5 +++++
1 file changed, 5 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/46b845d7/tools/tsxs.in
----------------------------------------------------------------------
diff --git a/tools/tsxs.in b/tools/tsxs.in
index 424cd9b..a224914 100755
--- a/tools/tsxs.in
+++ b/tools/tsxs.in
@@ -20,6 +20,8 @@ host="@HOST_GUESS@"
prefix="@prefix@"
exec_prefix="@exec_prefix@"
libdir="@libdir@"
+localstatedir="@localstatedir@"
+
INSTALLDIR=`eval echo "@libexecdir@"`
INCLUDEDIR=`eval echo "@includedir@"`
CPPFLAGS="$CPPFLAGS -I$INCLUDEDIR"
@@ -81,6 +83,9 @@ query() {
INCLUDEDIR) echo @includedir@ ;;
LIBEXECDIR) echo @libexecdir@ ;;
BINDIR) echo @bindir@ ;;
+ LOCALSTATEDIR) echo @localstatedir@ ;;
+ RUNTIMEDIR) echo @runtimedir@ ;;
+ LOGDIR) echo @logdir@ ;;
*) bail "unrecognized query label: $1" ;;
esac
}
[2/2] git commit: TS-2436: Add initial tsqa test harness
Posted by jp...@apache.org.
TS-2436: Add initial tsqa test harness
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/52ce5d25
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/52ce5d25
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/52ce5d25
Branch: refs/heads/master
Commit: 52ce5d251283178e91d2f0a535b479b797ed0934
Parents: 46b845d
Author: James Peach <jp...@apache.org>
Authored: Fri Dec 13 17:09:51 2013 -0800
Committer: James Peach <jp...@apache.org>
Committed: Mon Dec 16 15:01:02 2013 -0800
----------------------------------------------------------------------
CHANGES | 2 +
ci/tsqa/functions | 244 ++++++++++++++++++++++++++++++++++++
ci/tsqa/test-bootstrap | 41 ++++++
ci/tsqa/test-log-configuration | 63 ++++++++++
4 files changed, 350 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/52ce5d25/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 084d8c2..2bd9fd7 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 4.2.0
+ *) [TS-2436] Add a simple integration test harness.
+
*) [TS-2355] ATS 4.0.x crashes when using OpenSSL 1.0.1e
*) [TS-2432] Fix a race in aio_err_callblk.
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/52ce5d25/ci/tsqa/functions
----------------------------------------------------------------------
diff --git a/ci/tsqa/functions b/ci/tsqa/functions
new file mode 100644
index 0000000..8535255
--- /dev/null
+++ b/ci/tsqa/functions
@@ -0,0 +1,244 @@
+#! /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.
+
+NCPU=${NCPU:-$(( $(getconf _NPROCESSORS_ONLN) * 2 ))}
+PORT=${PORT:-9090}
+VALGRIND=${VALGRIND:-N}
+TMPDIR=${TMPDIR:-/tmp}
+
+TSQA_FAIL=0 # Test failure count
+TSQA_TESNAME=${TSQA_TESTNAME:-tsqa} # Name of current test
+TSQA_ROOT=${TSQA_ROOT:-/tmp/$TSQA_TESTNAME.$RANDOM} # Filesystem root for current test
+TSQA_TSXS=${TSQA_TSXS:-tsxs}
+
+# Print a log message/
+msg() {
+ echo "MSG:" "$@"
+}
+
+# Print a failure message and increment the failure count.
+fail() {
+ TSQA_FAIL=$(($TSQA_FAIL + 1))
+ echo "FAIL:" "$@" 1>&2
+}
+
+# Fail and exit.
+fatal() {
+ TSQA_FAIL=$(($TSQA_FAIL + 1))
+ echo "FATAL:" "$@" 1>&2
+ exit $TSQA_FAIL
+}
+
+# Run a command and silence any output on stderr.
+quiet() {
+ "$@" 2>/dev/null
+}
+
+tsxs() {
+ $TSQA_TSXS "$@"
+}
+
+tsexec() {
+ local cmd="$1"
+ local run
+ shift
+
+ case $VALGRIND in
+ y|yes|Y|YES|1) run="valgrind --trace-children=yes --trace-children-skip=env env" ;;
+ *) run=env ;;
+ esac
+
+ # MALLOC_CHECK_=2 => enable glibc malloc checking, abort on error
+ # MallocStackLogging=1 => record OS X malloc stacks for leak checking
+ $run \
+ MallocStackLogging=1 \
+ MALLOC_CHECK_=2 \
+ TS_ROOT=$TSQA_ROOT \
+ PROXY_CONFIG_HTTP_SERVER_PORTS=$PORT \
+ $(bindir)/$cmd "$@"
+}
+
+reconfigure() {
+ local srcdir="$1"
+ msg running autoreconf in $srcdir ...
+ (
+ cd "$srcdir"
+ autoreconf -i
+ ) > autoreconf.log 2>&1
+}
+
+install () {
+ [[ -d $BUILD ]] && rm -rf $BUILD
+ [[ -d $PREFIX ]] && rm -rf $PREFIX
+
+ msg installing ...
+ mkdir -p $BUILD && (
+ cd $BUILD
+ $SRC/configure \
+ --prefix=$PREFIX \
+ --with-user=$(id -un) \
+ --enable-debug \
+ CCFLAGS=-O0 CXXFLAGS=-O0
+ make -j $NCPU && make install
+ ) > /dev/null
+
+ msg installed to $PREFIX
+}
+
+logdir() {
+ local prefix=$(tsxs -q PREFIX)
+ tsxs -q LOGDIR | sed -es+$prefix/++
+}
+
+runtimedir() {
+ local prefix=$(tsxs -q PREFIX)
+ tsxs -q RUNTIMEDIR | sed -es+$prefix/++
+}
+
+sysconfdir() {
+ local prefix=$(tsxs -q PREFIX)
+ tsxs -q SYSCONFDIR | sed -es+$prefix/++
+}
+
+bindir() {
+ tsxs -q BINDIR
+}
+
+# pidof(name): echo the pid of the given process name
+pidof() {
+ case "$1" in
+ cop|manager|server);;
+ *) fatal no such process name: $1
+ esac
+ quiet cat $TSQA_ROOT/$(runtimedir)/${1}.lock
+}
+
+# alive(name): Test whether the process "name" is alive.
+alive() {
+ local pid=$(pidof $1)
+ if [[ ! -z "$pid" ]] ; then
+ quiet kill -0 $pid
+ return $?
+ fi
+
+ false
+}
+
+# Start up Traffic Server. Test for all the processes so that we have a better
+# chance of delaying the test until traffic_server is ready.
+startup() {
+ tsexec traffic_cop &
+ for proc in cop manager server; do
+ for i in $(seq 10) ; do
+ alive $proc && msg $proc is alive && break
+ sleep 1
+ done
+ done
+
+ # And a final sleep to let traffic_server come up ...
+ sleep 2
+}
+
+# Shut down Traffic Server.
+shutdown() {
+ local pid=$(pidof cop)
+ if [[ -z "$pid" ]] ; then
+ return
+ fi
+
+ # If we are on Darwin, we can check the traffic_server for leaks before shutting down
+ if [ -x /usr/bin/leaks ]; then
+ msg checking for leaks ...
+ /usr/bin/leaks $(pidof server)
+ fi
+
+ msg shutting down ...
+ while quiet kill -0 $pid ; do
+ quiet kill -TERM $pid
+ pid=$(pidof cop)
+ if [[ -z "$pid" ]] ; then
+ return
+ fi
+ done
+
+ exit $TSQA_FAIL
+}
+
+# Test for Traffic Server crash logs.
+crash() {
+ local outfile="$TSQA_ROOT/$(logdir)/traffic.out"
+
+ msg checking for crashes ...
+ for i in $(seq 10); do
+ sleep 1
+ [[ -e $outfile ]] && \
+ grep -a -A 10 "STACK TRACE" $outfile && \
+ fail detected a crash
+ done
+}
+
+# Bootstrap a TSQA test root. The result of this is an independent test root
+# that contains all the variable parts of a traffic server configuration, while
+# referring to the parent installation for the actual test binaries.
+bootstrap() {
+ local prefix=$(tsxs -q PREFIX)
+ local sysconfdir=$(tsxs -q SYSCONFDIR | sed -es+$prefix/++)
+ local dir
+
+ # Create runtime directories in the test root.
+ for dir in SYSCONFDIR LOCALSTATEDIR RUNTIMEDIR LOGDIR ; do
+ local p=$(tsxs -q $dir | sed -es+$prefix/++)
+ mkdir -p $TSQA_ROOT/$p
+ done
+
+ # Copy config across
+ cp -r $(tsxs -q SYSCONFDIR)/*.config $TSQA_ROOT/$sysconfdir
+
+ # Delete any config variables we are about to set.
+ sed -i.orig \
+ -e/proxy.config.body_factory.template_sets_dir/d \
+ -e/proxy.config.plugin.plugin_dir/d \
+ -e/proxy.config.bin_path/d \
+ -e/proxy.config.admin.user_id/d \
+ -e/proxy.config.diags/d \
+ $TSQA_ROOT/$sysconfdir/records.config
+
+ cat >> $TSQA_ROOT/$sysconfdir/records.config <<EOF
+CONFIG proxy.config.bin_path STRING $(tsxs -q BINDIR)
+CONFIG proxy.config.plugin.plugin_dir STRING $(tsxs -q LIBEXECDIR)
+CONFIG proxy.config.body_factory.template_sets_dir STRING $(tsxs -q SYSCONFDIR)/body_factory
+
+CONFIG proxy.config.admin.user_id STRING $(whoami)
+
+CONFIG proxy.config.diags.output.diag STRING OL
+CONFIG proxy.config.diags.output.debug STRING OL
+CONFIG proxy.config.diags.output.status STRING OL
+CONFIG proxy.config.diags.output.note STRING OL
+CONFIG proxy.config.diags.output.warning STRING OL
+CONFIG proxy.config.diags.output.error STRING OL
+CONFIG proxy.config.diags.output.fatal STRING OL
+CONFIG proxy.config.diags.output.alert STRING OL
+CONFIG proxy.config.diags.output.emergency STRING OL
+
+CONFIG proxy.config.diags.debug.enabled INT 1
+CONFIG proxy.config.diags.debug.tags STRING NULL
+CONFIG proxy.config.diags.show_location INT 1
+EOF
+}
+
+# vim: set sw=2 ts=2 et :
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/52ce5d25/ci/tsqa/test-bootstrap
----------------------------------------------------------------------
diff --git a/ci/tsqa/test-bootstrap b/ci/tsqa/test-bootstrap
new file mode 100755
index 0000000..4f817b4
--- /dev/null
+++ b/ci/tsqa/test-bootstrap
@@ -0,0 +1,41 @@
+#! /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.
+
+TSQA_TSXS=${TSQA_TSXS:-/opt/ats/bin/tsxs}
+TSQA_TESTNAME=$(basename $0)
+source $(dirname $0)/functions
+
+# This test verifies that we can start Traffic Server in the test root. It is primarily
+# intended as a trivial payload to test the TSQA harness.
+check() {
+
+ msg waiting ...
+ sleep 2
+}
+
+bootstrap
+
+# If Traffic Server is not up, bring it up ...
+alive cop || startup || fatal unable to start Traffic Server
+trap shutdown 0 EXIT
+
+check
+
+exit $TSQA_FAIL
+
+# vim: set sw=2 ts=2 et :
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/52ce5d25/ci/tsqa/test-log-configuration
----------------------------------------------------------------------
diff --git a/ci/tsqa/test-log-configuration b/ci/tsqa/test-log-configuration
new file mode 100755
index 0000000..b68cd24
--- /dev/null
+++ b/ci/tsqa/test-log-configuration
@@ -0,0 +1,63 @@
+#! /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.
+
+COUNT=${COUNT:-10}
+TSQA_TSXS=${TSQA_TSXS:-/opt/ats/bin/tsxs}
+TSQA_TESTNAME=$(basename $0)
+source $(dirname $0)/functions
+
+# This test verifies that online reloading of the logging configuration
+# does not crash Traffic Server.
+check() {
+ local logdir=$(logdir)
+
+ for i in $(seq $COUNT) ; do
+ msg check $i ...
+ curl --silent --show-error -o /dev/null -H "Host: not there" http://localhost:$PORT
+ tsexec traffic_line -s proxy.config.diags.debug.tags -v 'log-.*'
+ tsexec traffic_line -s proxy.config.diags.debug.enabled -v 1
+ tsexec traffic_line -x
+ sleep 1
+ curl --silent --show-error -o /dev/null -H "Host: not there" http://localhost:$PORT
+ # Set a harmless proxy.config.log.hostname to trigger a config reload ...
+ tsexec traffic_line -s proxy.config.log.hostname -v jpeach-test-$$-$i
+ tsexec traffic_line -s proxy.config.log.search_top_sites -v $i
+ tsexec traffic_line -x
+ sleep 1
+ curl --silent --show-error -o /dev/null -H "Host: not there" http://localhost:$PORT
+ crash
+
+ # Verify that we have all the error logs that we expect.
+ for logfile in error.log diags.log manager.log traffic.out ; do
+ [[ -e $TSQA_ROOT/$logdir/$logfile ]] || fatal $logfile is missing
+ done
+
+ done
+}
+
+bootstrap
+
+# If Traffic Server is not up, bring it up ...
+alive cop || startup || fatal unable to start Traffic Server
+trap shutdown 0 EXIT
+
+check
+
+exit $TSQA_FAIL
+
+# vim: set sw=2 ts=2 et :