Commit | Line | Data |
---|---|---|
e02b109b DG |
1 | #!/bin/bash |
2 | # | |
9d16b343 | 3 | # Copyright (C) 2014 David Goulet <dgoulet@efficios.com> |
e02b109b | 4 | # |
9d16b343 | 5 | # SPDX-License-Identifier: LGPL-2.1-only |
e02b109b DG |
6 | |
7 | TEST_DESC="Save session(s)" | |
8 | ||
9 | CURDIR=$(dirname $0)/ | |
10 | TESTDIR=$CURDIR/../../../ | |
e02b109b DG |
11 | |
12 | SESSION_NAME="save-42" | |
13 | CHANNEL_NAME="chan-save" | |
14 | EVENT_NAME="tp:tptest" | |
c3e68e71 JR |
15 | MAP_32_NAME="ze-map-32" |
16 | MAP_64_NAME="ze-map-64" | |
e02b109b DG |
17 | |
18 | DIR=$(readlink -f $TESTDIR) | |
19 | ||
c3e68e71 | 20 | NUM_TESTS=46 |
e02b109b DG |
21 | |
22 | source $TESTDIR/utils/utils.sh | |
23 | ||
c3e68e71 JR |
24 | FULL_LTTNG_BIN="${TESTDIR}/../src/bin/lttng/${LTTNG_BIN}" |
25 | ||
e02b109b DG |
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 | ||
bf6ae429 | 58 | create_lttng_session_ok $SESSION_NAME $TRACE_PATH |
827caf52 | 59 | enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME |
c4926bb5 | 60 | enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME |
c3e68e71 JR |
61 | lttng_add_map_ok $MAP_32_NAME $SESSION_NAME -u 32 "" "" |
62 | lttng_add_map_ok $MAP_64_NAME $SESSION_NAME -u 64 "" "" | |
722f854b | 63 | lttng_track_ok "-p 666 -u -s $SESSION_NAME" |
e02b109b DG |
64 | |
65 | lttng_save $SESSION_NAME "-o $TRACE_PATH" | |
66 | ||
67 | is_session_saved $TRACE_PATH $SESSION_NAME | |
68 | ||
c3e68e71 JR |
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 | ||
67b4c664 | 80 | destroy_lttng_session_ok $SESSION_NAME |
e02b109b DG |
81 | } |
82 | ||
83 | function test_basic_save_all() | |
84 | { | |
85 | diag "Test basic save all" | |
86 | ||
bf6ae429 JR |
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 | |
e02b109b | 90 | |
827caf52 JR |
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 | |
e02b109b | 94 | |
c4926bb5 JR |
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 | |
e02b109b | 98 | |
722f854b JR |
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 | ||
e02b109b DG |
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 | ||
67b4c664 JR |
109 | destroy_lttng_session_ok $SESSION_NAME-1 |
110 | destroy_lttng_session_ok $SESSION_NAME-2 | |
111 | destroy_lttng_session_ok $SESSION_NAME-3 | |
e02b109b DG |
112 | } |
113 | ||
114 | function test_overwrite() | |
115 | { | |
116 | diag "Test overwrite session file" | |
117 | ||
bf6ae429 | 118 | create_lttng_session_ok $SESSION_NAME $TRACE_PATH |
827caf52 | 119 | enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME |
c4926bb5 | 120 | enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME |
e02b109b DG |
121 | |
122 | lttng_save $SESSION_NAME "-o $TRACE_PATH" | |
123 | ||
124 | is_session_saved $TRACE_PATH $SESSION_NAME | |
125 | ||
67b4c664 | 126 | destroy_lttng_session_ok $SESSION_NAME |
e02b109b DG |
127 | |
128 | # Create a new session with same name so we can force the overwrite | |
bf6ae429 | 129 | create_lttng_session_ok $SESSION_NAME $TRACE_PATH |
827caf52 | 130 | enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME |
c4926bb5 | 131 | enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME |
e02b109b DG |
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 | ||
67b4c664 | 141 | destroy_lttng_session_ok $SESSION_NAME |
e02b109b DG |
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 | |
edb62ef5 | 161 | rm -rf $TRACE_PATH |
e02b109b DG |
162 | done |
163 | ||
164 | stop_lttng_sessiond |