File: test_path_separators

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 (101 lines) | stat: -rwxr-xr-x 3,021 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
#!/bin/bash
#
# SPDX-FileCopyrightText: 2023 Kienan Stewart <kstewart@efficios.com>
#
# SPDX-License-Identifier: LGPL-2.1-only
#

TEST_DESC="Verifies the behaviour of the sessiond and applications with multiple LTTNG_UST_APP_PATHs and multiple LTTNG_UST_CTL_PATHS, including the verification oPython agents"

CURDIR="$(dirname "${0}")"
TESTDIR="${CURDIR}/../../../"

# shellcheck source=../../../utils/utils.sh
source "${TESTDIR}/utils/utils.sh"

TESTAPP="${TESTDIR}/utils/testapp/gen-ust-events/gen-ust-events"
EVENT_NAMES="tp:tptest"
SESSION_NAME="ust-app-ctl-path-separator"
CHANNEL_NAME="ust-app-ctl-path-separator"

NUM_TESTS=20

#
# There is no escaping of the path separator
#

function test_ctl_path_with_separators
{
	CTL_PATH="$(mktemp -d -t "tmp.${FUNCNAME[0]}.ctl.XXXXXX")"
	CTL_PATH2="$(mktemp -d -t "tmp.${FUNCNAME[0]}.ctl2.XXXXXX")"
	TRACE_PATH="$(mktemp -d -t "tmp.${FUNCNAME[0]}.trace.XXXXXX")"

	# The current implementation should ignore paths other than the first
	env_vars=(
		LTTNG_UST_CTL_PATH="${CTL_PATH}:${CTL_PATH2}"
	)
	# shellcheck disable=SC2119
	LTTNG_SESSIOND_ENV_VARS="${env_vars[*]}" start_lttng_sessiond
	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_NAMES}" "${CHANNEL_NAME}"
	start_lttng_tracing_ok "${SESSION_NAME}"

	LTTNG_UST_APP_PATH="${CTL_PATH}" "${TESTAPP}" -i 100 -w 0
	LTTNG_UST_APP_PATH="${CTL_PATH2}" "${TESTAPP}" -i 100 -w 0

	stop_lttng_tracing_ok "${SESSION_NAME}"
	destroy_lttng_session_ok "${SESSION_NAME}" --no-wait

	validate_trace_count "${EVENT_NAMES}" "${TRACE_PATH}" 100

	# shellcheck disable=SC2119
	stop_lttng_sessiond

	# Cleanup
	rm -rf "${CTL_PATH}" "${CTL_PATH2}" "${TRACE_PATH}"
}

function test_app_path_with_separators
{
	# The current implementation should ignore paths other than the first
	CTL_PATH="$(mktemp -d -t "tmp.${FUNCNAME[0]}.ctl.XXXXXX")"
	CTL_PATH2="$(mktemp -d -t "tmp.${FUNCNAME[0]}.ctl2.XXXXXX")"
	TRACE_PATH="$(mktemp -d -t "tmp.${FUNCNAME[0]}.trace.XXXXXX")"

	env_vars=(
		LTTNG_UST_CTL_PATH="${CTL_PATH}"
	)
	# shellcheck disable=SC2119
	LTTNG_SESSIOND_ENV_VARS="${env_vars[*]}" start_lttng_sessiond
	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_NAMES}" "${CHANNEL_NAME}"
	start_lttng_tracing_ok "${SESSION_NAME}"

	LTTNG_UST_APP_PATH="${CTL_PATH}:${CTL_PATH2}" "${TESTAPP}" -i 100 -w 0

	stop_lttng_tracing_ok "${SESSION_NAME}"
	destroy_lttng_session_ok "${SESSION_NAME}" --no-wait

	validate_trace_count "${EVENT_NAMES}" "${TRACE_PATH}" 100

	# shellcheck disable=SC2119
	stop_lttng_sessiond

	# Cleanup
	rm -rf "${CTL_PATH}" "${CTL_PATH2}" "${TRACE_PATH}"
}

plan_tests "${NUM_TESTS}"
print_test_banner "${TEST_DESC}"
bail_out_if_no_babeltrace

TESTS=(
	test_app_path_with_separators
	test_ctl_path_with_separators
)

for TEST in "${TESTS[@]}" ; do
	"${TEST}"
done