From eb30334cd31f0e196ce3c07fd7feb87deffb3843 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Wed, 18 May 2016 14:04:19 -0400 Subject: [PATCH] test: UST tracing destroy flush behavior with tracefile rotation Signed-off-by: Mathieu Desnoyers --- configure.ac | 1 + tests/fast_regression | 1 + tests/regression/ust/Makefile.am | 3 +- .../ust/rotation-destroy-flush/Makefile.am | 16 ++ .../test_rotation_destroy_flush | 150 ++++++++++++++++++ 5 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 tests/regression/ust/rotation-destroy-flush/Makefile.am create mode 100755 tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush diff --git a/configure.ac b/configure.ac index dc32e0069..5c2576990 100644 --- a/configure.ac +++ b/configure.ac @@ -1002,6 +1002,7 @@ AC_CONFIG_FILES([ tests/regression/ust/getcpu-override/Makefile tests/regression/ust/clock-override/Makefile tests/regression/ust/type-declarations/Makefile + tests/regression/ust/rotation-destroy-flush/Makefile tests/stress/Makefile tests/unit/Makefile tests/unit/ini_config/Makefile diff --git a/tests/fast_regression b/tests/fast_regression index aa0c04336..0c4f07925 100644 --- a/tests/fast_regression +++ b/tests/fast_regression @@ -27,5 +27,6 @@ regression/ust/java-log4j/test_java_log4j regression/ust/python-logging/test_python_logging regression/ust/getcpu-override/test_getcpu_override regression/ust/clock-override/test_clock_override +regression/ust/rotation-destroy-flush/test_rotation_destroy_flush regression/ust/test_event_basic regression/ust/test_event_tracef diff --git a/tests/regression/ust/Makefile.am b/tests/regression/ust/Makefile.am index 1b87cc9dd..76862514b 100644 --- a/tests/regression/ust/Makefile.am +++ b/tests/regression/ust/Makefile.am @@ -2,7 +2,8 @@ if HAVE_LIBLTTNG_UST_CTL SUBDIRS = nprocesses high-throughput low-throughput before-after multi-session \ overlap buffers-pid linking daemon exit-fast fork libc-wrapper \ periodical-metadata-flush java-jul java-log4j python-logging \ - getcpu-override clock-override type-declarations + getcpu-override clock-override type-declarations \ + rotation-destroy-flush if HAVE_OBJCOPY SUBDIRS += baddr-statedump ust-dl diff --git a/tests/regression/ust/rotation-destroy-flush/Makefile.am b/tests/regression/ust/rotation-destroy-flush/Makefile.am new file mode 100644 index 000000000..14b869ec5 --- /dev/null +++ b/tests/regression/ust/rotation-destroy-flush/Makefile.am @@ -0,0 +1,16 @@ +noinst_SCRIPTS = test_rotation_destroy_flush +EXTRA_DIST = test_rotation_destroy_flush + +all-local: + @if [ x"$(srcdir)" != x"$(builddir)" ]; then \ + for script in $(EXTRA_DIST); do \ + cp -f $(srcdir)/$$script $(builddir); \ + done; \ + fi + +clean-local: + @if [ x"$(srcdir)" != x"$(builddir)" ]; then \ + for script in $(EXTRA_DIST); do \ + rm -f $(builddir)/$$script; \ + done; \ + fi diff --git a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush new file mode 100755 index 000000000..a7a93771a --- /dev/null +++ b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush @@ -0,0 +1,150 @@ +#!/bin/bash +# +# Copyright (C) - 2015 Jonathan Rajotte +# Copyright (C) - 2016 Mathieu Desnoyers +# +# This library is free software; you can redistribute it and/or modify it under +# the terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +TEST_DESC="UST - Rotation destroy flush" + +CURDIR=$(dirname $0)/ +TESTDIR=$CURDIR/../../.. +SESSION_NAME="rotation_destroy_flush" + +TESTAPP_PATH="$TESTDIR/utils/testapp" +TESTAPP_NAME="gen-ust-events" +TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" +NUM_EVENT=1000000 +EVENT_NAME="tp:tptest" +CHANNEL_NAME="testchan" +PAGE_SIZE=$(getconf PAGE_SIZE) +SIZE_LIMIT=$PAGE_SIZE + +NR_ITER=10 +NUM_TESTS=$((15*$NR_ITER)) + +# Ensure the daemons invoke abort on error. +export LTTNG_ABORT_ON_ERROR=1 + +source $TESTDIR/utils/utils.sh + +# MUST set TESTDIR before calling those functions +function run_app() +{ + $TESTAPP_BIN $NUM_EVENT + ok $? "Application done" +} + +function signal_cleanup() +{ + diag "*** Exiting ***" + stop_lttng_sessiond + exit 1 +} + +function enable_ust_lttng_channel_size_limit () +{ + sess_name="$1" + channel_name="$2" + tracefile_size_limit="$3" + + test_name="Enable channel $channel_name " + test_name+="for session $sess_name: " + test_name+="$tracefile_size_limit bytes tracefile limit" + + $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel \ + -u $channel_name -s $sess_name --buffers-pid \ + -C $tracefile_size_limit >/dev/null 2>&1 + + ok $? "$test_name" +} + +function enable_ust_lttng_event_per_channel () +{ + sess_name="$1" + event_name="$2" + channel_name="$3" + + test_name="Enable event $event_name " + test_name+="for session $sess_name " + test_name+="in channel $channel_name" + + $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" \ + -s $sess_name -u -c $channel_name >/dev/null 2>&1 + + ok $? "$test_name" +} + +function test_rotation_destroy_flush_single() +{ + start_lttng_sessiond + + create_lttng_session_ok $SESSION_NAME $TRACE_PATH + enable_ust_lttng_channel_size_limit \ + $SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT + enable_ust_lttng_event_per_channel \ + $SESSION_NAME $EVENT_NAME $CHANNEL_NAME + start_lttng_tracing_ok $SESSION_NAME + run_app + # stop and destroy + stop_lttng_tracing_ok $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME + + rm -rf $TRACE_PATH + + create_lttng_session_ok $SESSION_NAME $TRACE_PATH + enable_ust_lttng_channel_size_limit \ + $SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT + enable_ust_lttng_event_per_channel \ + $SESSION_NAME $EVENT_NAME $CHANNEL_NAME + start_lttng_tracing_ok $SESSION_NAME + run_app + # destroy only + destroy_lttng_session_ok $SESSION_NAME + + rm -rf $TRACE_PATH + + stop_lttng_sessiond +} + +function test_rotation_destroy_flush() +{ + for a in $(seq 1 ${NR_ITER}); do + diag "Iteration ${a}/${NR_ITER}" + test_rotation_destroy_flush_single + done +} + + +plan_tests $NUM_TESTS + +print_test_banner "$TEST_DESC" + +TESTS=( + "test_rotation_destroy_flush" +) + +TEST_COUNT=${#TESTS[@]} +i=0 + +while [ "$i" -lt "$TEST_COUNT" ]; do + + trap signal_cleanup SIGTERM SIGINT + + TRACE_PATH=$(mktemp -d) + + # Execute test + ${TESTS[$i]} + + let "i++" +done -- 2.34.1