File: test_save

package info (click to toggle)
ltt-control 2.14.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,860 kB
  • sloc: cpp: 192,012; sh: 28,777; ansic: 10,960; python: 7,108; makefile: 3,520; java: 109; xml: 46
file content (147 lines) | stat: -rwxr-xr-x 3,491 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/bin/bash
#
# SPDX-FileCopyrightText: 2014 David Goulet <dgoulet@efficios.com>
#
# SPDX-License-Identifier: LGPL-2.1-only

TEST_DESC="Save session(s)"

CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../../../

SESSION_NAME="save-42"
CHANNEL_NAME="chan-save"
EVENT_NAME="tp:tptest"

DIR=$(readlink -f $TESTDIR)

NUM_TESTS=41

source $TESTDIR/utils/utils.sh

# MUST set TESTDIR before calling those functions
plan_tests $NUM_TESTS

print_test_banner "$TEST_DESC"

# Expected to fail
function save_lttng_fail()
{
	local sess_name=$1
	local opts=$2

	$TESTDIR/../src/bin/lttng/$LTTNG_BIN save $sess_name $opts >/dev/null 2>&1
	if [ $? -ne 0 ]; then
		ok 0 "Session failed to be saved. Expected!"
	else
		ok 1 "Session has been saved. NOT expected!"
	fi
}

function is_session_saved()
{
	local path=$1
	local name=$2

	[ -f "$path/$name.lttng" ];
	ok $? "Session $name.lttng file found!"
}

function test_basic_save()
{
	diag "Test basic save"

	create_lttng_session_ok $SESSION_NAME $TRACE_PATH
	enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME
	enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
	lttng_track_ok "-p 666 -u -s $SESSION_NAME"

	lttng_save $SESSION_NAME "-o $TRACE_PATH"

	is_session_saved $TRACE_PATH $SESSION_NAME

	destroy_lttng_session_ok $SESSION_NAME
}

function test_basic_save_all()
{
	diag "Test basic save all"

	create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH
	create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH
	create_lttng_session_ok $SESSION_NAME-3 $TRACE_PATH

	enable_ust_lttng_channel_ok $SESSION_NAME-1 $CHANNEL_NAME
	enable_ust_lttng_channel_ok $SESSION_NAME-2 $CHANNEL_NAME
	enable_ust_lttng_channel_ok $SESSION_NAME-3 $CHANNEL_NAME

	enable_ust_lttng_event_ok $SESSION_NAME-1 $EVENT_NAME $CHANNEL_NAME
	enable_ust_lttng_event_ok $SESSION_NAME-2 $EVENT_NAME $CHANNEL_NAME
	enable_ust_lttng_event_ok $SESSION_NAME-3 $EVENT_NAME $CHANNEL_NAME

	lttng_track_ok "-p 666 -u -s $SESSION_NAME-1"
	lttng_track_ok "-p 666 -u -s $SESSION_NAME-2"
	lttng_track_ok "-p 666 -u -s $SESSION_NAME-3"

	lttng_save "" "-a -o $TRACE_PATH"

	is_session_saved $TRACE_PATH $SESSION_NAME-1
	is_session_saved $TRACE_PATH $SESSION_NAME-2
	is_session_saved $TRACE_PATH $SESSION_NAME-3

	destroy_lttng_session_ok $SESSION_NAME-1
	destroy_lttng_session_ok $SESSION_NAME-2
	destroy_lttng_session_ok $SESSION_NAME-3
}

function test_overwrite()
{
	diag "Test overwrite session file"

	create_lttng_session_ok $SESSION_NAME $TRACE_PATH
	enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME
	enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME

	lttng_save $SESSION_NAME "-o $TRACE_PATH"

	is_session_saved $TRACE_PATH $SESSION_NAME

	destroy_lttng_session_ok $SESSION_NAME

	# Create a new session with same name so we can force the overwrite
	create_lttng_session_ok $SESSION_NAME $TRACE_PATH
	enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME
	enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME

	# This one MUST fail
	save_lttng_fail $SESSION_NAME "-o $TRACE_PATH"

	# This one MUST succeed
	lttng_save $SESSION_NAME "-f -o $TRACE_PATH"

	is_session_saved $TRACE_PATH $SESSION_NAME

	destroy_lttng_session_ok $SESSION_NAME
}

start_lttng_sessiond

TESTS=(
	test_basic_save
	test_basic_save_all
	test_overwrite
)

for fct_test in ${TESTS[@]};
do
	TRACE_PATH=$(mktemp -d -t tmp.test_save_trace_path.XXXXXX)

	${fct_test}
	if [ $? -ne 0 ]; then
		break;
	fi
	# Only delete if successful
	rm -rf $TRACE_PATH
done

stop_lttng_sessiond