1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
#!/bin/bash
#
# SPDX-FileCopyrightText: 2013 Christian Babeux <christian.babeux@efficios.com>
# Copyright (C) 2014, 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
#
# SPDX-License-Identifier: GPL-2.0-only
#
TEST_DESC="Kernel tracer - Rotation destroy flush"
CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../..
SESSION_NAME="rotation_destroy_flush"
NR_ITER=10
NUM_TESTS=$((15*$NR_ITER))
EVENT_NAME="lttng_test_filter_event"
CHANNEL_NAME="testchan"
PAGE_SIZE=$(getconf PAGE_SIZE)
SIZE_LIMIT=$PAGE_SIZE
TESTCMD="echo -n 10000 > /proc/lttng-test-filter-event"
# Ensure the daemons invoke abort on error.
export LTTNG_ABORT_ON_ERROR=1
source $TESTDIR/utils/utils.sh
function signal_cleanup()
{
diag "*** Exiting ***"
modprobe --remove lttng-test
full_cleanup
}
function enable_kernel_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"
_run_lttng_cmd "$(lttng_client_log_file)" "$(lttng_client_err_file)" \
enable-channel \
--kernel "$channel_name" --session "$sess_name" \
--tracefile-size $tracefile_size_limit
ok $? "$test_name"
}
function enable_kernel_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"
_run_lttng_cmd "$(lttng_client_log_file)" "$(lttng_client_err_file)" \
enable-event "$event_name" \
--session "$sess_name" --kernel --channel "$channel_name"
ok $? "$test_name"
}
function test_rotation_destroy_flush_single()
{
lttng_modules_loaded_fail
start_lttng_sessiond
modprobe lttng-test
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
enable_kernel_lttng_channel_size_limit \
$SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
enable_kernel_lttng_event_per_channel \
$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
start_lttng_tracing_ok $SESSION_NAME
eval ${TESTCMD}
# 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_kernel_lttng_channel_size_limit \
$SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
enable_kernel_lttng_event_per_channel \
$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
start_lttng_tracing_ok $SESSION_NAME
eval ${TESTCMD}
# destroy only
destroy_lttng_session_ok $SESSION_NAME
rm -rf $TRACE_PATH
modprobe --remove lttng-test
stop_lttng_sessiond
lttng_modules_loaded_fail
}
function test_rotation_destroy_flush()
{
for a in $(seq 1 ${NR_ITER}); do
diag "Iteration ${a}/${NR_ITER}"
test_rotation_destroy_flush_single
done
}
# MUST set TESTDIR before calling those functions
plan_tests $NUM_TESTS
print_test_banner "$TEST_DESC"
TESTS=(
"test_rotation_destroy_flush"
)
TEST_COUNT=${#TESTS[@]}
i=0
check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
{
validate_lttng_modules_present
trap signal_cleanup SIGTERM SIGINT
while [ "$i" -lt "$TEST_COUNT" ]; do
TRACE_PATH=$(mktemp -d -t tmp.test_kernel_rotation_destroy_flush.XXXXXX)
# Execute test
${TESTS[$i]}
let "i++"
done
}
|