SoW-2020-0003: Trace Hit Counters
[lttng-tools.git] / tests / regression / tools / save-load / test_save
... / ...
CommitLineData
1#!/bin/bash
2#
3# Copyright (C) 2014 David Goulet <dgoulet@efficios.com>
4#
5# SPDX-License-Identifier: LGPL-2.1-only
6
7TEST_DESC="Save session(s)"
8
9CURDIR=$(dirname $0)/
10TESTDIR=$CURDIR/../../../
11
12SESSION_NAME="save-42"
13CHANNEL_NAME="chan-save"
14EVENT_NAME="tp:tptest"
15MAP_32_NAME="ze-map-32"
16MAP_64_NAME="ze-map-64"
17
18DIR=$(readlink -f $TESTDIR)
19
20NUM_TESTS=46
21
22source $TESTDIR/utils/utils.sh
23
24FULL_LTTNG_BIN="${TESTDIR}/../src/bin/lttng/${LTTNG_BIN}"
25
26# MUST set TESTDIR before calling those functions
27plan_tests $NUM_TESTS
28
29print_test_banner "$TEST_DESC"
30
31# Expected to fail
32function 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
45function 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
54function 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
83function 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
114function 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
144start_lttng_sessiond
145
146TESTS=(
147 test_basic_save
148 test_basic_save_all
149 test_overwrite
150)
151
152for fct_test in ${TESTS[@]};
153do
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
162done
163
164stop_lttng_sessiond
This page took 0.025112 seconds and 5 git commands to generate.