From: Jonathan Rajotte Date: Thu, 19 Sep 2019 21:00:51 +0000 (-0400) Subject: Tests: regression testing for lttng-relayd --group-output-by-* X-Git-Tag: v2.12.0-rc1~250 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=a9115ebf4fb48f4a0e81a97384c9ace7df219926;p=lttng-tools.git Tests: regression testing for lttng-relayd --group-output-by-* Each test is run for --group-output-by-host and --group-output-by-session and also with automatic session name and specific session name. No need to test against kernel. Tracing domain does not have any influence at lttng-relayd level. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau --- diff --git a/configure.ac b/configure.ac index c2176cb4e..e75ad55d0 100644 --- a/configure.ac +++ b/configure.ac @@ -1167,6 +1167,7 @@ AC_CONFIG_FILES([ tests/regression/tools/base-path/Makefile tests/regression/tools/metadata/Makefile tests/regression/tools/working-directory/Makefile + tests/regression/tools/relayd-grouping/Makefile tests/regression/ust/Makefile tests/regression/ust/nprocesses/Makefile tests/regression/ust/high-throughput/Makefile diff --git a/tests/regression/Makefile.am b/tests/regression/Makefile.am index df5ae0943..874e0c08b 100644 --- a/tests/regression/Makefile.am +++ b/tests/regression/Makefile.am @@ -55,7 +55,8 @@ TESTS += ust/before-after/test_before_after \ ust/rotation-destroy-flush/test_rotation_destroy_flush \ ust/namespaces/test_ns_contexts \ ust/namespaces/test_ns_contexts_change \ - tools/metadata/test_ust + tools/metadata/test_ust \ + tools/relayd-grouping/test_ust endif # HAVE_LIBLTTNG_UST_CTL if PYTHON_BINDING diff --git a/tests/regression/tools/Makefile.am b/tests/regression/tools/Makefile.am index 6fd5f3505..032ade6e7 100644 --- a/tests/regression/tools/Makefile.am +++ b/tests/regression/tools/Makefile.am @@ -1,3 +1,3 @@ SUBDIRS = streaming filtering health tracefile-limits snapshots live exclusion save-load mi \ wildcard crash regen-metadata regen-statedump notification rotation \ - base-path metadata working-directory + base-path metadata working-directory relayd-grouping diff --git a/tests/regression/tools/relayd-grouping/Makefile.am b/tests/regression/tools/relayd-grouping/Makefile.am new file mode 100644 index 000000000..9885af19a --- /dev/null +++ b/tests/regression/tools/relayd-grouping/Makefile.am @@ -0,0 +1,16 @@ +noinst_SCRIPTS = test_ust +EXTRA_DIST = test_ust + +all-local: + @if [ x"$(srcdir)" != x"$(builddir)" ]; then \ + for script in $(EXTRA_DIST); do \ + cp -f $(srcdir)/$$script $(builddir); \ + done; \ + fi + +clean-local: + @if [ x"$(srcdir)" != x"$(builddir)" ]; then \ + for script in $(EXTRA_DIST); do \ + rm -f $(builddir)/$$script; \ + done; \ + fi diff --git a/tests/regression/tools/relayd-grouping/test_ust b/tests/regression/tools/relayd-grouping/test_ust new file mode 100755 index 000000000..6c7eb98e5 --- /dev/null +++ b/tests/regression/tools/relayd-grouping/test_ust @@ -0,0 +1,710 @@ +#!/bin/bash +# +# Copyright (C) - 2018 Jonathan Rajotte +# +# 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="LTTng relayd filesystem grouping - Userspace tracing" + +CURDIR=$(dirname "$0")/ +TESTDIR=$CURDIR/../../.. +NR_ITER=10 +NR_USEC_WAIT=100 +TESTAPP_PATH="$TESTDIR/utils/testapp" +TESTAPP_NAME="gen-ust-events" +TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" +EVENT_NAME="tp:tptest" +CHANNEL_NAME="my_channel" + +XSD_PATH=$TESTDIR/../src/common/mi-lttng-3.0.xsd + +XML_VALIDATE="$TESTDIR/regression/tools/mi/validate_xml $XSD_PATH" +XML_EXTRACT="$TESTDIR/regression/tools/mi/extract_xml" + +XPATH_CMD_OUTPUT="//lttng:command/lttng:output" +XPATH_SESSION="$XPATH_CMD_OUTPUT/lttng:sessions/lttng:session" + + +NUM_TESTS=688 + +source "$TESTDIR/utils/utils.sh" + +if [ ! -x "$TESTAPP_BIN" ]; then + BAIL_OUT "No UST events binary detected." +fi + +function get_auto_session_name () +{ + local __result=$1 + + local lttng_bin=$LTTNG_BIN + + LTTNG_BIN="${lttng_bin} --mi xml" + OUTPUT_DEST=$(mktemp) + + list_lttng_with_opts + $XML_VALIDATE "$OUTPUT_DEST" + ok $? "Valid lttng list XML" + + value=$($XML_EXTRACT "$OUTPUT_DEST" ${XPATH_SESSION}/lttng:name/text\(\)) + ok $? "Extraction of session name" + OUTPUT_DEST=/dev/null + LTTNG_BIN=$lttng_bin + + # Transfer value to passed arguments + eval "$__result='$value'" +} + +function test_ust_uid_live () +{ + local session_name="$1" + local grouping="$2" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST uid buffer live [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost --live + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + enable_ust_lttng_channel_ok "$session_name" "$CHANNEL_NAME" "--buffers-uid" + enable_ust_lttng_event_ok "$session_name" "$EVENT_NAME" "$CHANNEL_NAME" + start_lttng_tracing_ok "$session_name" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$session_name*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_pid_live () +{ + local session_name="$1" + local grouping="$2" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST pid buffer live [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost --live + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + 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" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$session_name*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_uid_live_custom_output () +{ + local session_name="$1" + local grouping="$2" + local custom_output="my_live_custom_output" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST uid buffer live, custom output [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost/$custom_output --live + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + enable_ust_lttng_channel_ok "$session_name" "$CHANNEL_NAME" "--buffers-uid" + enable_ust_lttng_event_ok "$session_name" "$EVENT_NAME" "$CHANNEL_NAME" + start_lttng_tracing_ok "$session_name" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME-*/$custom_output" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$custom_output" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_uid_streaming () +{ + local session_name="$1" + local grouping="$2" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST uid buffer streaming [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + enable_ust_lttng_channel_ok "$session_name" "$CHANNEL_NAME" "--buffers-uid" + enable_ust_lttng_event_ok "$session_name" "$EVENT_NAME" "$CHANNEL_NAME" + start_lttng_tracing_ok "$session_name" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$session_name*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_pid_streaming () +{ + local session_name="$1" + local grouping="$2" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST pid buffer streaming [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + 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" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$session_name*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_uid_streaming_custom_output () +{ + local session_name="$1" + local grouping="$2" + local custom_output="custom_second_token" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST uid buffer streaming, custom output [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost/$custom_output + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + enable_ust_lttng_channel_ok "$session_name" "$CHANNEL_NAME" "--buffers-uid" + enable_ust_lttng_event_ok "$session_name" "$EVENT_NAME" "$CHANNEL_NAME" + start_lttng_tracing_ok "$session_name" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME-*/$custom_output" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$custom_output" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_uid_streaming_rotate () +{ + local session_name="$1" + local grouping="$2" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST uid buffer rotate [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + enable_ust_lttng_channel_ok "$session_name" "$CHANNEL_NAME" "--buffers-uid" + enable_ust_lttng_event_ok "$session_name" "$EVENT_NAME" "$CHANNEL_NAME" + start_lttng_tracing_ok "$session_name" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + rotate_session_ok "$session_name" + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$session_name*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_uid_streaming_rotate_custom_output () +{ + local session_name="$1" + local grouping="$2" + local custom_output="rotate_custom_path" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST uid buffer rotate, custom output [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost/$custom_output + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + enable_ust_lttng_channel_ok "$session_name" "$CHANNEL_NAME" "--buffers-uid" + enable_ust_lttng_event_ok "$session_name" "$EVENT_NAME" "$CHANNEL_NAME" + start_lttng_tracing_ok "$session_name" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + rotate_session_ok "$session_name" + + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME-*/$custom_output" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$custom_output" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_pid_streaming_rotate () +{ + local session_name="$1" + local grouping="$2" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST pid buffer rotate with session_name [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + 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" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + rotate_session_ok "$session_name" + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$session_name*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_uid_streaming_snapshot () +{ + local session_name="$1" + local grouping="$2" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST uid buffer snapshot streaming using 'create --snapshot' [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost --snapshot + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + enable_ust_lttng_channel_ok "$session_name" "$CHANNEL_NAME" "--buffers-uid" + enable_ust_lttng_event_ok "$session_name" "$EVENT_NAME" "$CHANNEL_NAME" + start_lttng_tracing_ok "$session_name" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + lttng_snapshot_record "$session_name" + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$session_name*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_pid_streaming_snapshot () +{ + local session_name="$1" + local grouping="$2" + local is_automatic_session=false + + local file_sync_after_first + local file_sync_before_last + + file_sync_after_first=$(mktemp -u) + file_sync_before_last=$(mktemp -u) + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST pid buffer snapshot streaming using 'create --snapshot' [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_uri "$session_name" net://localhost --snapshot + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + 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" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT "$file_sync_after_first" "$file_sync_before_last" /dev/null 2>&1 & + + while [ ! -f "${file_sync_after_first}" ]; do + sleep 0.5 + done + + lttng_snapshot_record "$session_name" + + touch "$file_sync_before_last" + wait + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME-*/snapshot-1*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$session_name*/snapshot-1*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi + + rm -f "$file_sync_after_first" + rm -f "$file_sync_before_last" +} + +function test_ust_uid_streaming_snapshot_add_output_default_name () +{ + local session_name="$1" + local grouping="$2" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST uid buffer snapshot using 'add-output' with default snapshot name [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_no_output "$session_name" + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + enable_lttng_mmap_overwrite_ust_channel "$session_name" "$CHANNEL_NAME" + enable_ust_lttng_event_ok "$session_name" "$EVENT_NAME" "$CHANNEL_NAME" + start_lttng_tracing_ok "$session_name" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + + lttng_snapshot_add_output_ok "$session_name" "net://localhost" + lttng_snapshot_record "$session_name" + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME-*/snapshot-1*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$session_name*/snapshot-1*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_uid_streaming_snapshot_add_output_custom_name () +{ + local session_name="$1" + local grouping="$2" + local snapshot_name="this_is_my_snapshot" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST uid buffer snapshot using 'add-output' with custom snapshot name [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_no_output "$session_name" + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + enable_lttng_mmap_overwrite_ust_channel "$session_name" "$CHANNEL_NAME" + enable_ust_lttng_event_ok "$session_name" "$EVENT_NAME" "$CHANNEL_NAME" + start_lttng_tracing_ok "$session_name" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + + lttng_snapshot_add_output_ok "$session_name" "net://localhost" "-n $snapshot_name" + lttng_snapshot_record "$session_name" + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + # When session name is automatic, the actual directory is "auto", not + # auto-. + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME-*/$snapshot_name*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$session_name*/$snapshot_name*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +function test_ust_uid_streaming_snapshot_add_output_custom_name_custom_output () +{ + local session_name="$1" + local grouping="$2" + local snapshot_name="this_is_my_snapshot" + local custom_output="this/is/my/custom/path" + local is_automatic_session=false + + if [ -z "$session_name" ]; then + is_automatic_session=true + fi + + diag "Test UST uid buffer snapshot using 'add-output' with custom snapshot name and custom output path [$grouping][${session_name:-automatic session name}]" + + create_lttng_session_no_output "$session_name" + if [ "$is_automatic_session" = true ]; then + get_auto_session_name session_name + fi + + enable_lttng_mmap_overwrite_ust_channel "$session_name" "$CHANNEL_NAME" + enable_ust_lttng_event_ok "$session_name" "$EVENT_NAME" "$CHANNEL_NAME" + start_lttng_tracing_ok "$session_name" + + $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT + + lttng_snapshot_add_output_ok "$session_name" "net://localhost/$custom_output" "-n $snapshot_name" + lttng_snapshot_record "$session_name" + + stop_lttng_tracing_ok "$session_name" + destroy_lttng_session_ok "$session_name" + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + validate_trace "$EVENT_NAME" "$TRACE_PATH/$session_name/$HOSTNAME-*/$custom_output/$snapshot_name*" + else + validate_trace "$EVENT_NAME" "$TRACE_PATH/$HOSTNAME/$custom_output/$snapshot_name*" + fi + + if [ "$grouping" = "$GROUP_BY_SESSION" ]; then + rm -rf "${TRACE_PATH:?}/$session_name" + else + rm -rf "${TRACE_PATH:?}/$HOSTNAME" + fi +} + +plan_tests $NUM_TESTS + +print_test_banner "$TEST_DESC" + + +tests=( + test_ust_uid_live + test_ust_pid_live + test_ust_uid_live_custom_output + test_ust_uid_streaming + test_ust_pid_streaming + test_ust_uid_streaming_custom_output + test_ust_uid_streaming_rotate + test_ust_uid_streaming_rotate_custom_output + test_ust_pid_streaming_rotate + test_ust_uid_streaming_snapshot + test_ust_pid_streaming_snapshot + test_ust_uid_streaming_snapshot_add_output_default_name + test_ust_uid_streaming_snapshot_add_output_custom_name + test_ust_uid_streaming_snapshot_add_output_custom_name_custom_output +) + +GROUP_BY_SESSION="--group-output-by-session" +GROUP_BY_HOSTNAME="--group-output-by-host" + +grouping_types=( + $GROUP_BY_SESSION + $GROUP_BY_HOSTNAME +) +for fct_test in "${tests[@]}"; +do + for grouping in "${grouping_types[@]}"; + do + TRACE_PATH=$(mktemp -d) + # Set the relayd in --group-output-by-session mode + start_lttng_relayd "-o $TRACE_PATH $grouping" + start_lttng_sessiond + + name="" + # Perform test when session name is generated by the client + ${fct_test} "$name" "$grouping" + count=$(find "$TRACE_PATH/" -maxdepth 1 -mindepth 1 | wc -l) + is "$count" "0" "LTTng-relayd output directory empty" + + # Perform test when session name is given + name="my-session" + ${fct_test} "$name" "$grouping" + count=$(find "$TRACE_PATH/" -maxdepth 1 -mindepth 1 | wc -l) + is "$count" "0" "LTTng-relayd output directory empty" + + rm -rf "$TRACE_PATH" + stop_lttng_relayd + stop_lttng_sessiond + done +done +