Tests: regression testing for lttng-relayd --group-output-by-*
[lttng-tools.git] / tests / regression / tools / relayd-grouping / test_ust
diff --git a/tests/regression/tools/relayd-grouping/test_ust b/tests/regression/tools/relayd-grouping/test_ust
new file mode 100755 (executable)
index 0000000..6c7eb98
--- /dev/null
@@ -0,0 +1,710 @@
+#!/bin/bash
+#
+# Copyright (C) - 2018 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+#
+# 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-<datetime>.
+       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
+
This page took 0.030567 seconds and 5 git commands to generate.