X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Fregression%2Ftools%2Fclear%2Ftest_ust;fp=tests%2Fregression%2Ftools%2Fclear%2Ftest_ust;h=ae3105c000772368be6ca0f233360edd3d56412b;hp=0000000000000000000000000000000000000000;hb=806530f232d6b76d86f6c03263ca443aa0f5a08c;hpb=6613108932473cadcc6c811082dc829db3b1fc47 diff --git a/tests/regression/tools/clear/test_ust b/tests/regression/tools/clear/test_ust new file mode 100755 index 000000000..ae3105c00 --- /dev/null +++ b/tests/regression/tools/clear/test_ust @@ -0,0 +1,213 @@ +#!/bin/bash +# +# Copyright (C) - 2019 Jonathan Rajotte-Julien +# +# 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="Clear - UST tracing" + +CURDIR=$(dirname $0)/ +TESTDIR=$CURDIR/../../.. +EVENT_NAME="tp:tptest" +SESSION_NAME="" +TESTAPP_PATH="$TESTDIR/utils/testapp" +TESTAPP_NAME="gen-ust-events" +TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" + +NUM_TESTS=69 + +TRACE_PATH=$(mktemp -d) + +source $TESTDIR/utils/utils.sh + +if [ ! -x "$TESTAPP_BIN" ]; then + BAIL_OUT "No UST events binary detected." +fi + +function clean_path () +{ + local trace_path=$1 + set -u + rm -rf $trace_path/* + set +u +} + +function test_ust_streaming () +{ + diag "Test ust streaming clear" + create_lttng_session_uri $SESSION_NAME net://localhost + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME + start_lttng_tracing_ok $SESSION_NAME + # TODO: place holder, support for streaming MUST be implemented + # This validate that for now we fail correctly + lttng_clear_session_fail $SESSION_NAME + + destroy_lttng_session_ok $SESSION_NAME +} + +function test_ust_streaming_live () +{ + diag "Test ust streaming live clear" + create_lttng_session_uri $SESSION_NAME net://localhost "--live" + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME + start_lttng_tracing_ok $SESSION_NAME + # TODO: place holder, support for streaming MUST be implemented + # This validate that for now we fail correctly + lttng_clear_session_fail $SESSION_NAME + + destroy_lttng_session_ok $SESSION_NAME +} + +function test_ust_local () +{ + diag "Test ust local" + create_lttng_session_ok $SESSION_NAME $TRACE_PATH + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME + start_lttng_tracing_ok $SESSION_NAME + # TODO: place holder, support for local MUST be implemented + lttng_clear_session_fail $SESSION_NAME + # TODO: validate that the previous chunk IS no more present + + destroy_lttng_session_ok $SESSION_NAME +} + +function do_ust_snapshot () +{ + local session_name=$1 + local trace_path=$2 + + enable_ust_lttng_event_ok $session_name $EVENT_NAME + start_lttng_tracing_ok $session_name + + # Generate 10 events that will sit in the buffers. + $TESTAPP_BIN -i 10 + + # Take a first snapshot and validate that the events are present. + lttng_snapshot_record $session_name + stop_lttng_tracing_ok $session_name + validate_trace_count $EVENT_NAME $trace_path 10 + + # Clean the output path + clean_path $trace_path + start_lttng_tracing_ok $session_name + + lttng_clear_session_ok $session_name + + # Make sure the subsequent snapshot is empty and valid. + lttng_snapshot_record $session_name + stop_lttng_tracing_ok $session_name + validate_trace_empty $trace_path + + # Clean the output path + clean_path $trace_path + start_lttng_tracing_ok $session_name + + # Make sure that everything still works, generate events and take a + # snapshot. + $TESTAPP_BIN -i 10 + lttng_snapshot_record $session_name + stop_lttng_tracing_ok $session_name + validate_trace_count $EVENT_NAME $trace_path 10 +} + +function test_ust_streaming_snapshot () +{ + diag "Test ust streaming snapshot clear" + + create_lttng_session_uri $SESSION_NAME net://localhost "--snapshot" + do_ust_snapshot $SESSION_NAME $TRACE_PATH + destroy_lttng_session_ok $SESSION_NAME +} + +function test_ust_local_snapshot () +{ + diag "Test ust local snapshot clear" + + create_lttng_session_ok $SESSION_NAME $TRACE_PATH "--snapshot" + do_ust_snapshot $SESSION_NAME $TRACE_PATH + destroy_lttng_session_ok $SESSION_NAME +} + +function test_ust_local_snapshot_per_pid () +{ + diag "Test ust local snapshot clear per pid " + local channel_name="channel0" + local file_sync_before_last=$(mktemp -u) + local file_sync_before_last_touch=$(mktemp -u) + + create_lttng_session_ok $SESSION_NAME $TRACE_PATH "--snapshot" + enable_ust_lttng_channel_ok $SESSION_NAME $channel_name --buffers-pid + enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $channel_name + start_lttng_tracing_ok $SESSION_NAME + + # Generate 10 events that will sit in the buffers. + $TESTAPP_BIN -i 10 -w 0 \ + --sync-before-last-event ${file_sync_before_last} \ + --sync-before-last-event-touch ${file_sync_before_last_touch} >/dev/null 2>&1 & + + # Continue only when there is only the last event remaining. + while [ ! -f "${file_sync_before_last_touch}" ]; do + sleep 0.5 + done + + # Take a first snapshot and validate that the events are present. + lttng_snapshot_record $SESSION_NAME + stop_lttng_tracing_ok $SESSION_NAME + validate_trace_count $EVENT_NAME $TRACE_PATH 9 + + # Clean the output path + clean_path $TRACE_PATH + start_lttng_tracing_ok $SESSION_NAME + + lttng_clear_session_ok $SESSION_NAME + + # Make sure the subsequent snapshot is empty and valid. + lttng_snapshot_record $SESSION_NAME + stop_lttng_tracing_ok $SESSION_NAME + validate_trace_empty $TRACE_PATH + + touch ${file_sync_before_last} + wait + destroy_lttng_session_ok $SESSION_NAME + + rm -f ${file_sync_before_last} + rm -f ${file_sync_before_last_touch} +} + +plan_tests $NUM_TESTS + +print_test_banner "$TEST_DESC" + + +tests=( + test_ust_streaming + test_ust_streaming_live + test_ust_local + test_ust_streaming_snapshot + test_ust_local_snapshot + test_ust_local_snapshot_per_pid +) + +start_lttng_relayd "-o $TRACE_PATH" +start_lttng_sessiond + +for fct_test in ${tests[@]}; +do + SESSION_NAME=$(randstring 16 0) + ${fct_test} + clean_path $TRACE_PATH +done + +stop_lttng_sessiond +stop_lttng_relayd