tests: Move to kernel style SPDX license identifiers
[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
16 DIR=$(readlink -f $TESTDIR)
17
18 NUM_TESTS=41
19
20 source $TESTDIR/utils/utils.sh
21
22 # MUST set TESTDIR before calling those functions
23 plan_tests $NUM_TESTS
24
25 print_test_banner "$TEST_DESC"
26
27 # Expected to fail
28 function save_lttng_fail()
29 {
30 local sess_name=$1
31 local opts=$2
32
33 $TESTDIR/../src/bin/lttng/$LTTNG_BIN save $sess_name $opts >/dev/null 2>&1
34 if [ $? -ne 0 ]; then
35 ok 0 "Session failed to be saved. Expected!"
36 else
37 ok 1 "Session has been saved. NOT expected!"
38 fi
39 }
40
41 function is_session_saved()
42 {
43 local path=$1
44 local name=$2
45
46 [ -f "$path/$name.lttng" ];
47 ok $? "Session $name.lttng file found!"
48 }
49
50 function test_basic_save()
51 {
52 diag "Test basic save"
53
54 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
55 enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME
56 enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
57 lttng_track_ok "-p 666 -u -s $SESSION_NAME"
58
59 lttng_save $SESSION_NAME "-o $TRACE_PATH"
60
61 is_session_saved $TRACE_PATH $SESSION_NAME
62
63 destroy_lttng_session_ok $SESSION_NAME
64 }
65
66 function test_basic_save_all()
67 {
68 diag "Test basic save all"
69
70 create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH
71 create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH
72 create_lttng_session_ok $SESSION_NAME-3 $TRACE_PATH
73
74 enable_ust_lttng_channel_ok $SESSION_NAME-1 $CHANNEL_NAME
75 enable_ust_lttng_channel_ok $SESSION_NAME-2 $CHANNEL_NAME
76 enable_ust_lttng_channel_ok $SESSION_NAME-3 $CHANNEL_NAME
77
78 enable_ust_lttng_event_ok $SESSION_NAME-1 $EVENT_NAME $CHANNEL_NAME
79 enable_ust_lttng_event_ok $SESSION_NAME-2 $EVENT_NAME $CHANNEL_NAME
80 enable_ust_lttng_event_ok $SESSION_NAME-3 $EVENT_NAME $CHANNEL_NAME
81
82 lttng_track_ok "-p 666 -u -s $SESSION_NAME-1"
83 lttng_track_ok "-p 666 -u -s $SESSION_NAME-2"
84 lttng_track_ok "-p 666 -u -s $SESSION_NAME-3"
85
86 lttng_save "" "-a -o $TRACE_PATH"
87
88 is_session_saved $TRACE_PATH $SESSION_NAME-1
89 is_session_saved $TRACE_PATH $SESSION_NAME-2
90 is_session_saved $TRACE_PATH $SESSION_NAME-3
91
92 destroy_lttng_session_ok $SESSION_NAME-1
93 destroy_lttng_session_ok $SESSION_NAME-2
94 destroy_lttng_session_ok $SESSION_NAME-3
95 }
96
97 function test_overwrite()
98 {
99 diag "Test overwrite session file"
100
101 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
102 enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME
103 enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
104
105 lttng_save $SESSION_NAME "-o $TRACE_PATH"
106
107 is_session_saved $TRACE_PATH $SESSION_NAME
108
109 destroy_lttng_session_ok $SESSION_NAME
110
111 # Create a new session with same name so we can force the overwrite
112 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
113 enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME
114 enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
115
116 # This one MUST fail
117 save_lttng_fail $SESSION_NAME "-o $TRACE_PATH"
118
119 # This one MUST succeed
120 lttng_save $SESSION_NAME "-f -o $TRACE_PATH"
121
122 is_session_saved $TRACE_PATH $SESSION_NAME
123
124 destroy_lttng_session_ok $SESSION_NAME
125 }
126
127 start_lttng_sessiond
128
129 TESTS=(
130 test_basic_save
131 test_basic_save_all
132 test_overwrite
133 )
134
135 for fct_test in ${TESTS[@]};
136 do
137 TRACE_PATH=$(mktemp -d)
138
139 ${fct_test}
140 if [ $? -ne 0 ]; then
141 break;
142 fi
143 # Only delete if successful
144 rm -rf $TRACE_PATH
145 done
146
147 stop_lttng_sessiond
This page took 0.032203 seconds and 4 git commands to generate.