3 # Copyright (C) 2014 David Goulet <dgoulet@efficios.com>
5 # SPDX-License-Identifier: LGPL-2.1-only
7 TEST_DESC
="Save session(s)"
10 TESTDIR
=$CURDIR/..
/..
/..
/
12 SESSION_NAME
="save-42"
13 CHANNEL_NAME
="chan-save"
14 EVENT_NAME
="tp:tptest"
15 MAP_32_NAME
="ze-map-32"
16 MAP_64_NAME
="ze-map-64"
18 DIR
=$
(readlink
-f $TESTDIR)
22 source $TESTDIR/utils
/utils.sh
24 FULL_LTTNG_BIN
="${TESTDIR}/../src/bin/lttng/${LTTNG_BIN}"
26 # MUST set TESTDIR before calling those functions
29 print_test_banner
"$TEST_DESC"
32 function save_lttng_fail
()
37 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN save
$sess_name $opts >/dev
/null
2>&1
39 ok
0 "Session failed to be saved. Expected!"
41 ok
1 "Session has been saved. NOT expected!"
45 function is_session_saved
()
50 [ -f "$path/$name.lttng" ];
51 ok $?
"Session $name.lttng file found!"
54 function test_basic_save
()
56 diag
"Test basic save"
58 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
59 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME
60 enable_ust_lttng_event_ok
$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
61 lttng_add_map_ok
$MAP_32_NAME $SESSION_NAME -u 32 "" ""
62 lttng_add_map_ok
$MAP_64_NAME $SESSION_NAME -u 64 "" ""
63 lttng_track_ok
"-p 666 -u -s $SESSION_NAME"
65 lttng_save
$SESSION_NAME "-o $TRACE_PATH"
67 is_session_saved
$TRACE_PATH $SESSION_NAME
69 local session_file
="$TRACE_PATH/$SESSION_NAME.lttng"
71 local map_count
=$
(xmllint
--xpath 'count(/sessions/session[1]/domains/domain[./type = "UST"]/maps/map)' "$session_file")
74 local bitness_32
=$
(xmllint
--xpath '/sessions/session[1]/domains/domain[./type = "UST"]/maps/map[./name = "ze-map-32"]/bitness/text()' "$session_file")
77 local bitness_64
=$
(xmllint
--xpath '/sessions/session[1]/domains/domain[./type = "UST"]/maps/map[./name = "ze-map-64"]/bitness/text()' "$session_file")
80 destroy_lttng_session_ok
$SESSION_NAME
83 function test_basic_save_all
()
85 diag
"Test basic save all"
87 create_lttng_session_ok
$SESSION_NAME-1 $TRACE_PATH
88 create_lttng_session_ok
$SESSION_NAME-2 $TRACE_PATH
89 create_lttng_session_ok
$SESSION_NAME-3 $TRACE_PATH
91 enable_ust_lttng_channel_ok
$SESSION_NAME-1 $CHANNEL_NAME
92 enable_ust_lttng_channel_ok
$SESSION_NAME-2 $CHANNEL_NAME
93 enable_ust_lttng_channel_ok
$SESSION_NAME-3 $CHANNEL_NAME
95 enable_ust_lttng_event_ok
$SESSION_NAME-1 $EVENT_NAME $CHANNEL_NAME
96 enable_ust_lttng_event_ok
$SESSION_NAME-2 $EVENT_NAME $CHANNEL_NAME
97 enable_ust_lttng_event_ok
$SESSION_NAME-3 $EVENT_NAME $CHANNEL_NAME
99 lttng_track_ok
"-p 666 -u -s $SESSION_NAME-1"
100 lttng_track_ok
"-p 666 -u -s $SESSION_NAME-2"
101 lttng_track_ok
"-p 666 -u -s $SESSION_NAME-3"
103 lttng_save
"" "-a -o $TRACE_PATH"
105 is_session_saved
$TRACE_PATH $SESSION_NAME-1
106 is_session_saved
$TRACE_PATH $SESSION_NAME-2
107 is_session_saved
$TRACE_PATH $SESSION_NAME-3
109 destroy_lttng_session_ok
$SESSION_NAME-1
110 destroy_lttng_session_ok
$SESSION_NAME-2
111 destroy_lttng_session_ok
$SESSION_NAME-3
114 function test_overwrite
()
116 diag
"Test overwrite session file"
118 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
119 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME
120 enable_ust_lttng_event_ok
$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
122 lttng_save
$SESSION_NAME "-o $TRACE_PATH"
124 is_session_saved
$TRACE_PATH $SESSION_NAME
126 destroy_lttng_session_ok
$SESSION_NAME
128 # Create a new session with same name so we can force the overwrite
129 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
130 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME
131 enable_ust_lttng_event_ok
$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
134 save_lttng_fail
$SESSION_NAME "-o $TRACE_PATH"
136 # This one MUST succeed
137 lttng_save
$SESSION_NAME "-f -o $TRACE_PATH"
139 is_session_saved
$TRACE_PATH $SESSION_NAME
141 destroy_lttng_session_ok
$SESSION_NAME
152 for fct_test
in ${TESTS[@]};
154 TRACE_PATH
=$
(mktemp
-d)
157 if [ $?
-ne 0 ]; then
160 # Only delete if successful