SoW-2020-0003: Trace Hit Counters
[lttng-tools.git] / tests / regression / tools / save-load / test_save
CommitLineData
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
7TEST_DESC="Save session(s)"
8
9CURDIR=$(dirname $0)/
10TESTDIR=$CURDIR/../../../
e02b109b
DG
11
12SESSION_NAME="save-42"
13CHANNEL_NAME="chan-save"
14EVENT_NAME="tp:tptest"
ebdb334b
JR
15MAP_32_NAME="ze-map-32"
16MAP_64_NAME="ze-map-64"
e02b109b
DG
17
18DIR=$(readlink -f $TESTDIR)
19
ebdb334b 20NUM_TESTS=46
e02b109b
DG
21
22source $TESTDIR/utils/utils.sh
23
ebdb334b
JR
24FULL_LTTNG_BIN="${TESTDIR}/../src/bin/lttng/${LTTNG_BIN}"
25
e02b109b
DG
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
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
ebdb334b
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
ebdb334b
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
83function 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
114function 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
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
edb62ef5 161 rm -rf $TRACE_PATH
e02b109b
DG
162done
163
164stop_lttng_sessiond
This page took 0.060781 seconds and 5 git commands to generate.