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 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
|
#!/bin/bash
#
# SPDX-FileCopyrightText: 2013 David Goulet <dgoulet@efficios.com>
#
# SPDX-License-Identifier: LGPL-2.1-only
TEST_DESC="Streaming - Snapshot Kernel tracing"
CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../../..
EVENT_NAME="sched_switch"
SESSION_NAME=""
CHANNEL_NAME="chan1"
TRACE_PATH=$(mktemp -d -t tmp.test_snapshots_kernel_streaming_trace_path.XXXXXX)
NUM_TESTS=66
source $TESTDIR/utils/utils.sh
function snapshot_add_output ()
{
local sess_name=$1
local trace_path=$2
local name=$3
local extra_opt=""
if [ ! -z $name ]; then
extra_opt="-n $name"
fi
$TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot add-output -s $sess_name $extra_opt $trace_path >/dev/null 2>&1
ok $? "Added snapshot output $trace_path"
}
# Test a snapshot using a default name for the output destination.
function test_kernel_default_name_with_del()
{
diag "Test kernel snapshot streaming with default name with delete output"
create_lttng_session_no_output $SESSION_NAME
enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
start_lttng_tracing_ok $SESSION_NAME
snapshot_add_output $SESSION_NAME "net://localhost"
lttng_snapshot_record $SESSION_NAME
# Validate test
retry_validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*
if [ $? -ne 0 ]; then
return $?
fi
lttng_snapshot_del_output_ok $SESSION_NAME 1
snapshot_add_output $SESSION_NAME "net://localhost"
lttng_snapshot_record $SESSION_NAME
# Validate test with the next ID since a del output was done prior.
retry_validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-2*
if [ $? -ne 0 ]; then
return $?
fi
stop_lttng_tracing_ok $SESSION_NAME
destroy_lttng_session_ok $SESSION_NAME
return 0
}
# Test a snapshot using a default name for the output destination.
function test_kernel_default_name()
{
diag "Test kernel snapshot streaming with default name"
create_lttng_session_no_output $SESSION_NAME
enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
start_lttng_tracing_ok $SESSION_NAME
snapshot_add_output $SESSION_NAME "net://localhost"
lttng_snapshot_record $SESSION_NAME
stop_lttng_tracing_ok $SESSION_NAME
destroy_lttng_session_ok $SESSION_NAME
# Validate test
retry_validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*
out=$?
return $out
}
# Test a snapshot using a custom name for the output destination.
function test_kernel_custom_name()
{
local out
local name="asnapshotname"
diag "Test kernel snapshot streaming with custom name"
create_lttng_session_no_output $SESSION_NAME
enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
start_lttng_tracing_ok $SESSION_NAME
snapshot_add_output $SESSION_NAME "net://localhost" $name
lttng_snapshot_record $SESSION_NAME
stop_lttng_tracing_ok $SESSION_NAME
destroy_lttng_session_ok $SESSION_NAME
if ls $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/$name* &> /dev/null; then
ok 0 "Custom name snapshot exists"
# Validate test
retry_validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/$name-*
out=$?
else
fail "No custom name snapshot found"
out=1
fi
return $out
}
function test_kernel_n_snapshot()
{
diag "Test kernel snapshot streaming multiple consecutive snapshot"
create_lttng_session_no_output $SESSION_NAME
enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
snapshot_add_output $SESSION_NAME "net://localhost"
for i in {1..5};
do
start_lttng_tracing_ok $SESSION_NAME
lttng_snapshot_record $SESSION_NAME
stop_lttng_tracing_ok $SESSION_NAME
validate_trace_path_kernel_snapshot_network "$TRACE_PATH" "$SESSION_NAME" "snapshot-1" $(( i - 1 )) ""
retry_validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*
if [ $? -ne 0 ]; then
return 1
fi
set -u
rm -rf $TRACE_PATH/$HOSTNAME
set +u
done
destroy_lttng_session_ok $SESSION_NAME
return 0
}
plan_tests $NUM_TESTS
print_test_banner "$TEST_DESC"
check_skip_kernel_test $NUM_TESTS "Skipping all tests." ||
{
validate_lttng_modules_present
start_lttng_relayd "-o $TRACE_PATH"
start_lttng_sessiond
tests=( test_kernel_default_name
test_kernel_custom_name
test_kernel_default_name_with_del
test_kernel_n_snapshot
)
for fct_test in ${tests[@]};
do
SESSION_NAME=$(randstring 16 0)
${fct_test}
if [ $? -eq 0 ]; then
# Only delete if successful
rm -rf $TRACE_PATH
else
break
fi
done
stop_lttng_sessiond
stop_lttng_relayd
}
|