X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=tests%2Fregression%2Ftools%2Fregen-metadata%2Ftest_kernel;h=1b5ce2a0b2239545fd58b2a367baef9141cf4a43;hb=HEAD;hp=fd139aeefbf1b173dd655dad496ea34f9896d425;hpb=eded6438f3b15eccc391525f653e03293a890d32;p=lttng-tools.git diff --git a/tests/regression/tools/regen-metadata/test_kernel b/tests/regression/tools/regen-metadata/test_kernel index fd139aeef..1b5ce2a0b 100755 --- a/tests/regression/tools/regen-metadata/test_kernel +++ b/tests/regression/tools/regen-metadata/test_kernel @@ -1,101 +1,114 @@ #!/bin/bash # -# Copyright (C) - 2015 Julien Desfossez +# Copyright (C) 2015 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="Streaming - 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 -d -t tmp.test_regen_metadata_kernel_trace_path.XXXXXX) -NUM_TESTS=18 +NUM_TESTS=32 source $TESTDIR/utils/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 test_kernel_streaming () { + local metadata_path + diag "Test kernel streaming with metadata regeneration" - lttng_create_session_uri + create_lttng_session_uri $SESSION_NAME net://localhost lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME start_lttng_tracing_ok $SESSION_NAME echo -n "100" > /proc/lttng-test-filter-event + + # Baseline + stop_lttng_tracing_ok $SESSION_NAME + validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME* + + # Find the metadata file + metadata_path=$(find "$TRACE_PATH/$HOSTNAME/$SESSION_NAME"* -name "metadata") + + # Empty the metadata file + echo -n > "$metadata_path" + + start_lttng_tracing_ok $SESSION_NAME regenerate_metadata_ok $SESSION_NAME stop_lttng_tracing_ok $SESSION_NAME # Validate test validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME* - if [ $? -eq 0 ]; then - # Only delete if successful - rm -rf $TRACE_PATH - else - break - fi destroy_lttng_session_ok $SESSION_NAME + rm -rf "$TRACE_PATH" } function test_kernel_local () { + local metadata_path + diag "Test kernel local with metadata regeneration" create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME start_lttng_tracing_ok $SESSION_NAME + + # Baseline echo -n "100" > /proc/lttng-test-filter-event + stop_lttng_tracing_ok $SESSION_NAME + validate_trace $EVENT_NAME "$TRACE_PATH" + + # Find the metadata file + metadata_path=$(find "$TRACE_PATH"* -name "metadata") + + # Empty the metadata file + echo -n > "$metadata_path" + + start_lttng_tracing_ok $SESSION_NAME regenerate_metadata_ok $SESSION_NAME stop_lttng_tracing_ok $SESSION_NAME + validate_trace $EVENT_NAME $TRACE_PATH - if [ $? -eq 0 ]; then - # Only delete if successful - rm -rf $TRACE_PATH - fi destroy_lttng_session_ok $SESSION_NAME + + rm -rf "$TRACE_PATH" +} + +function test_kernel_local_snapshot_after_regenerate_metadata () +{ + diag "Test kernel local snapshot after regenerate metadata" + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" --snapshot + lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME + start_lttng_tracing_ok $SESSION_NAME + + echo -n "100" > /proc/lttng-test-filter-event + + regenerate_metadata_ok $SESSION_NAME + lttng_snapshot_record $SESSION_NAME "$TRACE_PATH" + stop_lttng_tracing_ok $SESSION_NAME + + validate_trace $EVENT_NAME "$TRACE_PATH" + destroy_lttng_session_ok $SESSION_NAME + + rm -rf "$TRACE_PATH" } plan_tests $NUM_TESTS print_test_banner "$TEST_DESC" -if [ "$(id -u)" == "0" ]; then - isroot=1 -else - isroot=0 -fi - -skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || +check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || { + validate_lttng_modules_present + start_lttng_relayd "-o $TRACE_PATH" start_lttng_sessiond modprobe lttng-test - tests=( test_kernel_streaming test_kernel_local ) + tests=( test_kernel_streaming test_kernel_local + test_kernel_local_snapshot_after_regenerate_metadata ) for fct_test in ${tests[@]}; do @@ -103,7 +116,7 @@ skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_ ${fct_test} done - rmmod lttng-test + modprobe --remove lttng-test stop_lttng_sessiond stop_lttng_relayd }