Tests: Add the tracefile size test
authorChristian Babeux <christian.babeux@efficios.com>
Tue, 14 May 2013 21:53:47 +0000 (17:53 -0400)
committerDavid Goulet <dgoulet@efficios.com>
Wed, 15 May 2013 15:51:58 +0000 (11:51 -0400)
This test validate the newly introduced tracefile count feature.  In
order to so, we enable a channel with the appropriate file size limits.

After running an instrumented application, we validate that each file in
the trace folder is no larger than the limit set on the command line and
also that some events are present (it's possible that the tracer discard
events, so we can't validate on a fixed number of events in the
resulting trace).

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
tests/fast_regression
tests/long_regression
tests/regression/tools/tracefile-limits/Makefile.am
tests/regression/tools/tracefile-limits/test_tracefile_size [new file with mode: 0755]

index db26f1c09ad74f00909f2ed2af67c4ec70eafee6..a7ba925e063a4e5d7c05ffc6d4aa7d1c7245e3dc 100644 (file)
@@ -6,6 +6,7 @@ regression/tools/health/test_thread_stall
 regression/tools/health/test_tp_fail
 regression/tools/streaming/test_ust
 regression/tools/tracefile-limits/test_tracefile_count
+regression/tools/tracefile-limits/test_tracefile_size
 regression/ust/before-after/test_before_after
 regression/ust/buffers-uid/test_buffers_uid
 regression/ust/periodical-metadata-flush/test_periodical_metadata_flush
index 3780bd40206c02ddbb6996672142b4cb10a99df5..246259ab7dd854d932b04391736335c530bb362c 100644 (file)
@@ -6,8 +6,10 @@ regression/tools/health/test_thread_stall
 regression/tools/health/test_tp_fail
 regression/tools/streaming/test_ust
 regression/tools/tracefile-limits/test_tracefile_count
+regression/tools/tracefile-limits/test_tracefile_size
 regression/ust/before-after/test_before_after
 regression/ust/buffers-uid/test_buffers_uid
+regression/ust/periodical-metadata-flush/test_periodical_metadata_flush
 regression/ust/high-throughput/test_high_throughput
 regression/ust/low-throughput/test_low_throughput
 regression/ust/multi-session/test_multi_session
index 441d2bdde11803a2a25eae15c70de86f9d7329e8..f6ca236108d43f9a816e34ec06a58e83db1b11c4 100644 (file)
@@ -1,2 +1,2 @@
-noinst_SCRIPTS = test_tracefile_count
-EXTRA_DIST = test_tracefile_count
+noinst_SCRIPTS = test_tracefile_count test_tracefile_size
+EXTRA_DIST = test_tracefile_count test_tracefile_size
diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_size b/tests/regression/tools/tracefile-limits/test_tracefile_size
new file mode 100755 (executable)
index 0000000..99301b5
--- /dev/null
@@ -0,0 +1,154 @@
+#!/bin/bash
+#
+# Copyright (C) - 2013 Christian Babeux <christian.babeux@efficios.com>
+#
+# 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="Tracefile size limits"
+
+CURDIR=$(dirname $0)/
+TESTDIR=$CURDIR/../../..
+
+NR_ITER=1000
+
+TESTAPP_PATH="$TESTDIR/utils/testapp"
+TESTAPP_NAME="gen-ust-events"
+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
+
+NUM_TESTS=47
+
+source $TESTDIR/utils/utils.sh
+
+if [ ! -x "$TESTAPP_BIN" ]; then
+       BAIL_OUT "No UST events binary detected."
+fi
+
+function wait_apps
+{
+       while [ -n "$(pidof $TESTAPP_NAME)" ]; do
+               sleep 0.5
+       done
+       pass "Wait for applications to end"
+}
+
+function enable_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 \
+           -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 check_file_size ()
+{
+       path="$1"
+       file_pattern="$2"
+       expected_max_size="$3"
+
+       find $path -name "$file_pattern" -exec stat -c '%n %s' {} \; \
+           | while read file_info;
+       do
+               name=$(echo $file_info | cut -f1 -d ' ')
+               size=$(echo $file_info | cut -f2 -d ' ')
+
+               if [ "$size" -gt "$expected_max_size" ]; then
+                       diag_msg="file: $name size: $size"
+                       diag_msg+="expected maximum size: $expected_max_size"
+                       diag "$diag_msg"
+                       exit 1
+               fi
+       done
+
+       ok $? "File size validation"
+}
+
+function test_tracefile_size_limit ()
+{
+       size_limit="$1"
+       trace_path=$(mktemp -d)
+       session_name=$(randstring 16 0)
+       channel_name="channel"
+       event_name="tp:tptest"
+
+       diag "Test tracefile size limit : $size_limit bytes"
+
+       create_lttng_session $session_name $trace_path
+
+       enable_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 $session_name
+
+       $TESTAPP_BIN $NR_ITER >/dev/null 2>&1 &
+
+       wait_apps
+
+       stop_lttng_tracing $session_name
+
+       destroy_lttng_session $session_name
+
+       # Validate file size, each one shall be no larger than the
+       # specified size limit
+
+       check_file_size $trace_path "${channel_name}_*" $size_limit
+
+       # Validate tracing data, we should at least have some events
+
+       validate_trace $event_name $trace_path
+
+       rm -rf $trace_path
+}
+
+plan_tests $NUM_TESTS
+
+print_test_banner "$TEST_DESC"
+
+start_lttng_sessiond
+
+LIMITS=("4096" "8192" "16384" "32768" "65536")
+
+for limit in ${LIMITS[@]};
+do
+       test_tracefile_size_limit $limit
+done
+
+stop_lttng_sessiond
This page took 0.027595 seconds and 4 git commands to generate.