SoW-2020-0003: Trace Hit Counters
[lttng-tools.git] / tests / regression / tools / save-load / test_save
1 #!/bin/bash
2 #
3 # Copyright (C) 2014 David Goulet <dgoulet@efficios.com>
4 #
5 # SPDX-License-Identifier: LGPL-2.1-only
6
7 TEST_DESC="Save session(s)"
8
9 CURDIR=$(dirname $0)/
10 TESTDIR=$CURDIR/../../../
11
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"
17
18 DIR=$(readlink -f $TESTDIR)
19
20 NUM_TESTS=46
21
22 source $TESTDIR/utils/utils.sh
23
24 FULL_LTTNG_BIN="${TESTDIR}/../src/bin/lttng/${LTTNG_BIN}"
25
26 # MUST set TESTDIR before calling those functions
27 plan_tests $NUM_TESTS
28
29 print_test_banner "$TEST_DESC"
30
31 # Expected to fail
32 function save_lttng_fail()
33 {
34 local sess_name=$1
35 local opts=$2
36
37 $TESTDIR/../src/bin/lttng/$LTTNG_BIN save $sess_name $opts >/dev/null 2>&1
38 if [ $? -ne 0 ]; then
39 ok 0 "Session failed to be saved. Expected!"
40 else
41 ok 1 "Session has been saved. NOT expected!"
42 fi
43 }
44
45 function is_session_saved()
46 {
47 local path=$1
48 local name=$2
49
50 [ -f "$path/$name.lttng" ];
51 ok $? "Session $name.lttng file found!"
52 }
53
54 function test_basic_save()
55 {
56 diag "Test basic save"
57
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"
64
65 lttng_save $SESSION_NAME "-o $TRACE_PATH"
66
67 is_session_saved $TRACE_PATH $SESSION_NAME
68
69 local session_file="$TRACE_PATH/$SESSION_NAME.lttng"
70
71 local map_count=$(xmllint --xpath 'count(/sessions/session[1]/domains/domain[./type = "UST"]/maps/map)' "$session_file")
72 is "$map_count" 2
73
74 local bitness_32=$(xmllint --xpath '/sessions/session[1]/domains/domain[./type = "UST"]/maps/map[./name = "ze-map-32"]/bitness/text()' "$session_file")
75 is "$bitness_32" 32
76
77 local bitness_64=$(xmllint --xpath '/sessions/session[1]/domains/domain[./type = "UST"]/maps/map[./name = "ze-map-64"]/bitness/text()' "$session_file")
78 is "$bitness_64" 64
79
80 destroy_lttng_session_ok $SESSION_NAME
81 }
82
83 function test_basic_save_all()
84 {
85 diag "Test basic save all"
86
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
90
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
94
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
98
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"
102
103 lttng_save "" "-a -o $TRACE_PATH"
104
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
108
109 destroy_lttng_session_ok $SESSION_NAME-1
110 destroy_lttng_session_ok $SESSION_NAME-2
111 destroy_lttng_session_ok $SESSION_NAME-3
112 }
113
114 function test_overwrite()
115 {
116 diag "Test overwrite session file"
117
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
121
122 lttng_save $SESSION_NAME "-o $TRACE_PATH"
123
124 is_session_saved $TRACE_PATH $SESSION_NAME
125
126 destroy_lttng_session_ok $SESSION_NAME
127
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
132
133 # This one MUST fail
134 save_lttng_fail $SESSION_NAME "-o $TRACE_PATH"
135
136 # This one MUST succeed
137 lttng_save $SESSION_NAME "-f -o $TRACE_PATH"
138
139 is_session_saved $TRACE_PATH $SESSION_NAME
140
141 destroy_lttng_session_ok $SESSION_NAME
142 }
143
144 start_lttng_sessiond
145
146 TESTS=(
147 test_basic_save
148 test_basic_save_all
149 test_overwrite
150 )
151
152 for fct_test in ${TESTS[@]};
153 do
154 TRACE_PATH=$(mktemp -d)
155
156 ${fct_test}
157 if [ $? -ne 0 ]; then
158 break;
159 fi
160 # Only delete if successful
161 rm -rf $TRACE_PATH
162 done
163
164 stop_lttng_sessiond
This page took 0.034052 seconds and 5 git commands to generate.