3 # Copyright (C) 2020 Francis Deslauriers <francis.deslauriers@efficios.com>
5 # SPDX-License-Identifier: LGPL-2.1-only
7 TEST_DESC
="Triggers - Start and stop actions"
9 CURDIR
=$
(dirname "$0")/
10 TESTDIR
=${CURDIR}/..
/..
/..
/..
12 # shellcheck source=../../../../utils/utils.sh
13 source "$TESTDIR/utils/utils.sh"
15 TESTAPP_PATH
="$TESTDIR/utils/testapp"
16 GEN_UST_EVENTS_TESTAPP_NAME
="gen-ust-events"
17 GEN_UST_EVENTS_TESTAPP_BIN
="$TESTAPP_PATH/$GEN_UST_EVENTS_TESTAPP_NAME/$GEN_UST_EVENTS_TESTAPP_NAME"
18 FULL_LTTNG_BIN
="$TESTDIR/../src/bin/lttng/$LTTNG_BIN"
19 NOTIFICATION_CLIENT_BIN
="$CURDIR/../utils/notification-client"
25 function lttng_add_trigger_ust
()
27 local expected_to_fail
="$1"
28 local trigger_name
="$2"
31 "$FULL_LTTNG_BIN" add-trigger
--id "$trigger_name" "$@" 1> /dev
/null
2> /dev
/null
33 if [[ $expected_to_fail -eq "1" ]]; then
35 ok $?
"Add trigger $trigger_name failed as expected"
37 ok
$ret "Add trigger $trigger_name"
41 function lttng_remove_trigger_ust
()
43 local expected_to_fail
="$1"
44 local trigger_name
="$2"
46 "$FULL_LTTNG_BIN" remove-trigger
"$trigger_name" 1> /dev
/null
2> /dev
/null
48 if [[ $expected_to_fail -eq "1" ]]; then
50 ok $?
"Remove trigger $trigger_name failed as expected"
52 ok
$ret "Remove trigger $trigger_name"
56 function lttng_add_trigger_ust_ok
()
58 lttng_add_trigger_ust
0 "$@"
61 function lttng_remove_trigger_ust_ok
()
63 lttng_remove_trigger_ust
0 "$@"
66 function lttng_session_is_active
()
68 local SESSION_NAME
="$1"
69 "$FULL_LTTNG_BIN" list
"$SESSION_NAME" |
grep "Tracing session" |
grep -q "\[active\]"
71 ok
$ret "Session \"$SESSION_NAME\" is active"
74 function lttng_session_is_inactive
()
76 local SESSION_NAME
="$1"
77 "$FULL_LTTNG_BIN" list
"$SESSION_NAME" |
grep "Tracing session" |
grep -q "\[inactive\]"
79 ok
$ret "Session \"$SESSION_NAME\" is inactive"
82 function test_start_session_action
()
84 local SESSION_NAME
="my_triggered_session"
85 local TRIGGER_NAME
="trigger1"
86 local TRACE_PATH
=$
(mktemp
-d test-start-action-trace.XXXXXX
)
87 local SYNC_AFTER_NOTIF_REGISTER_PATH
=$
(mktemp test-notif-register.XXXXXX
)
89 diag
"Start session action"
91 create_lttng_session_ok
$SESSION_NAME "$TRACE_PATH"
93 enable_ust_lttng_event_ok
$SESSION_NAME "tp:tptest"
95 lttng_session_is_inactive
$SESSION_NAME
97 # Add `start-session` action to an event-rule condition _followed_ by
99 lttng_add_trigger_ust_ok \
101 --condition on-event
-u "tp:tptest" \
102 --action start-session
$SESSION_NAME \
105 # Launch notification listener.
106 $NOTIFICATION_CLIENT_BIN \
107 --trigger $TRIGGER_NAME \
108 --sync-after-notif-register "$SYNC_AFTER_NOTIF_REGISTER_PATH"
111 while [ ! -f "${SYNC_AFTER_NOTIF_REGISTER_PATH}" ]; do
115 # Artificially produce the desired event-rule condition.
116 $GEN_UST_EVENTS_TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT > /dev
/null
2>&1
118 # notification-client will exit once it receives a notification.
119 wait $notif_client_pid
121 ok $?
"notification client exited successfully"
123 # Test that the session as started.
124 lttng_session_is_active
$SESSION_NAME
127 lttng_remove_trigger_ust_ok
$TRIGGER_NAME
128 stop_lttng_tracing_ok
$SESSION_NAME
129 destroy_lttng_session_ok
$SESSION_NAME
131 rm -f "$SYNC_AFTER_NOTIF_REGISTER_PATH"
135 function test_stop_session_action
()
137 local SESSION_NAME
="my_triggered_session"
138 local TRIGGER_NAME
="trigger1"
139 local TRACE_PATH
=$
(mktemp
-d test-stop-action-trace.XXXXXX
)
140 local SYNC_AFTER_NOTIF_REGISTER_PATH
=$
(mktemp test-notif-register.XXXXXX
)
142 diag
"Stop session action"
143 create_lttng_session_ok
$SESSION_NAME "$TRACE_PATH"
145 enable_ust_lttng_event_ok
$SESSION_NAME "tp:tptest"
147 start_lttng_tracing_ok
$SESSION_NAME
149 lttng_session_is_active
$SESSION_NAME
151 # Add `stop-session` action to an event-rule condition _followed_ by
153 lttng_add_trigger_ust_ok \
155 --condition on-event
-u "tp:tptest" \
156 --action stop-session
$SESSION_NAME \
159 # Launch notification listener.
160 $NOTIFICATION_CLIENT_BIN \
161 --trigger $TRIGGER_NAME \
162 --sync-after-notif-register "$SYNC_AFTER_NOTIF_REGISTER_PATH"
165 while [ ! -f "${SYNC_AFTER_NOTIF_REGISTER_PATH}" ]; do
169 # Artificially produce the desired event-rule condition.
170 $GEN_UST_EVENTS_TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT > /dev
/null
2>&1
172 # notification-client will exit once it receives a notification.
173 wait $notif_client_pid
175 ok $?
"notification client exited successfully"
177 # Test that the session as started.
178 lttng_session_is_inactive
$SESSION_NAME
181 lttng_remove_trigger_ust_ok
$TRIGGER_NAME
182 destroy_lttng_session_ok
$SESSION_NAME
184 rm -f "$SYNC_AFTER_NOTIF_REGISTER_PATH"
188 # MUST set TESTDIR before calling those functions
189 plan_tests
$NUM_TESTS
191 print_test_banner
"$TEST_DESC"
193 start_lttng_sessiond_notap
195 test_start_session_action
196 test_stop_session_action
198 stop_lttng_sessiond_notap