X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=tests%2Fregression%2Ftools%2Frotation%2Ftest_kernel;h=62bc5c33d7fda975b4a6294b4ade05d395e398c9;hb=34764ec838debdb5fdb59e178b31a44047ea7229;hp=3ef3b7dfd298e85dd8d42f2e0c9d66d77481f76b;hpb=9dc506ae3b7d654f25b8bdf905bc4ddfbe6c33dc;p=lttng-tools.git diff --git a/tests/regression/tools/rotation/test_kernel b/tests/regression/tools/rotation/test_kernel index 3ef3b7dfd..62bc5c33d 100755 --- a/tests/regression/tools/rotation/test_kernel +++ b/tests/regression/tools/rotation/test_kernel @@ -1,48 +1,22 @@ #!/bin/bash # -# Copyright (C) - 2017 Julien Desfossez +# Copyright (C) 2017 Julien Desfossez # -# 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 +# SPDX-License-Identifier: LGPL-2.1-only + TEST_DESC="Rotation - Kernel tracing" CURDIR=$(dirname $0)/ TESTDIR=$CURDIR/../../.. EVENT_NAME="lttng_test_filter_event" -PID_RELAYD=0 -SESSION_NAME="" -TRACE_PATH=$(mktemp -d) +TRACE_PATH=$(mktemp --tmpdir -d -t tmp.rotation_kernel_tracing.XXXXXX) -NUM_TESTS=68 +NUM_TESTS=66 source $TESTDIR/utils/utils.sh source $CURDIR/rotate_utils.sh -# LTTng kernel modules check -out=`ls /lib/modules/$(uname -r)/extra | grep lttng` -if [ -z "$out" ]; then - BAIL_OUT "LTTng modules not detected." -fi - -function lttng_create_session_uri -{ - # Create session with default path - $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $SESSION_NAME -U net://localhost >/dev/null 2>&1 - - ok $? "Create session $SESSION_NAME" -} - function rotate_kernel_test () { local_path=$1 @@ -64,23 +38,14 @@ function rotate_kernel_test () destroy_lttng_session_ok $SESSION_NAME - # The tests on the chunk folder rely on the date staying the same during - # the duration of the test, if this fail we will now why the other checks - # fail afterwards. There is a short window of time where an automated test - # could fail because of that. - now=$(date +%Y%m%d) - test $today = $now - ok $? "Date did not change during the test" - - validate_test_chunks $local_path $today kernel kernel 0 + validate_test_chunks $local_path $today kernel kernel } function test_kernel_streaming () { diag "Test kernel streaming with session rotation" - lttng_create_session_uri - rotate_kernel_test "${TRACE_PATH}/${HOSTNAME}/${SESSION_NAME}*" - clean_path $TRACE_PATH + create_lttng_session_uri $SESSION_NAME net://localhost + rotate_kernel_test "${TRACE_PATH}/${HOSTNAME}/${SESSION_NAME}*/archives" } function test_kernel_local () @@ -88,7 +53,7 @@ function test_kernel_local () diag "Test kernel local with session rotation" create_lttng_session_ok $SESSION_NAME $TRACE_PATH - rotate_kernel_test "${TRACE_PATH}" + rotate_kernel_test "${TRACE_PATH}/archives" } function test_kernel_local_timer () @@ -99,24 +64,47 @@ function test_kernel_local_timer () lttng_enable_rotation_timer_ok $SESSION_NAME 500ms start_lttng_tracing_ok $SESSION_NAME - rotate_timer_test "${TRACE_PATH}" 0 + rotate_timer_test "${TRACE_PATH}/archives" 0 } function test_kernel_streaming_timer () { diag "Test kernel remote with session rotation timer" - lttng_create_session_uri + create_lttng_session_uri $SESSION_NAME net://localhost lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME lttng_enable_rotation_timer_ok $SESSION_NAME 500ms start_lttng_tracing_ok $SESSION_NAME - rotate_timer_test "${TRACE_PATH}/${HOSTNAME}/${SESSION_NAME}*" 0 - clean_path $TRACE_PATH + rotate_timer_test "${TRACE_PATH}/${HOSTNAME}/${SESSION_NAME}*/archives" 0 +} + +function produce_n_events () +{ + local event_count=$1 + + echo -n $event_count > /proc/lttng-test-filter-event +} + +function test_kernel_local_size () +{ + diag "Rotate kernel local session every 2MiB" + local size_threshold=$((2 * 1024 * 1024)) + + diag "Test ust local with size-based session rotation per-uid" + create_lttng_session_ok $SESSION_NAME $TRACE_PATH + enable_kernel_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0" + lttng_enable_rotation_size_ok $SESSION_NAME $size_threshold + start_lttng_tracing_ok $SESSION_NAME + + trace_until_n_archives produce_n_events "$TRACE_PATH" 5 + + destroy_lttng_session_ok $SESSION_NAME } plan_tests $NUM_TESTS print_test_banner "$TEST_DESC" +bail_out_if_no_babeltrace if [ "$(id -u)" == "0" ]; then isroot=1 @@ -126,19 +114,22 @@ fi skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || { + validate_lttng_modules_present + start_lttng_relayd "-o $TRACE_PATH" start_lttng_sessiond modprobe lttng-test - tests=( test_kernel_streaming test_kernel_local test_kernel_local_timer test_kernel_streaming_timer) + tests=( test_kernel_streaming test_kernel_local test_kernel_local_timer test_kernel_streaming_timer test_kernel_local_size ) for fct_test in ${tests[@]}; do SESSION_NAME=$(randstring 16 0) ${fct_test} + clean_path $TRACE_PATH done - rmmod lttng-test + modprobe --remove lttng-test stop_lttng_sessiond stop_lttng_relayd }