xref: /linux/tools/testing/selftests/ftrace/test.d/remotes/functions (revision 0a1b03251db15eef1709f2db9846ac6918813227)
1# SPDX-License-Identifier: GPL-2.0
2
3setup_remote()
4{
5	local name=$1
6
7	[ -e $TRACING_DIR/remotes/$name/write_event ] || exit_unresolved
8
9	cd remotes/$name/
10	echo 0 > tracing_on
11	clear_trace
12	echo 7 > buffer_size_kb
13	echo 0 > events/enable
14	echo 1 > events/$name/selftest/enable
15	echo 1 > tracing_on
16}
17
18setup_remote_test()
19{
20	[ -d $TRACING_DIR/remotes/test/ ] || modprobe remote_test || exit_unresolved
21
22	setup_remote "test"
23}
24
25assert_loaded()
26{
27	grep -q "(loaded)" buffer_size_kb
28}
29
30assert_unloaded()
31{
32	grep -q "(unloaded)" buffer_size_kb
33}
34
35dump_trace_pipe()
36{
37    output=$(mktemp $TMPDIR/remote_test.XXXXXX)
38    cat trace_pipe > $output &
39    pid=$!
40    sleep 1
41    kill -1 $pid
42
43    echo $output
44}
45
46check_trace()
47{
48	start_id="$1"
49	end_id="$2"
50	file="$3"
51
52	# Ensure the file is not empty
53	test -n "$(head $file)"
54
55	prev_ts=0
56	id=0
57
58	# Only keep <timestamp> <id>
59	tmp=$(mktemp $TMPDIR/remote_test.XXXXXX)
60	sed -e 's/\[[0-9]*\]\s*\([0-9]*.[0-9]*\): [a-z]* id=\([0-9]*\)/\1 \2/' $file > $tmp
61
62	while IFS= read -r line; do
63		ts=$(echo $line | cut -d ' ' -f 1)
64		id=$(echo $line | cut -d ' ' -f 2)
65
66		test $(echo "$ts>$prev_ts" | bc) -eq 1
67		test $id -eq $start_id
68
69		prev_ts=$ts
70		start_id=$((start_id + 1))
71	done < $tmp
72
73	test $id -eq $end_id
74	rm $tmp
75}
76
77get_cpu_ids()
78{
79    sed -n 's/^processor\s*:\s*\([0-9]\+\).*/\1/p' /proc/cpuinfo
80}
81
82get_page_size() {
83    sed -ne 's/^.*data.*size:\([0-9][0-9]*\).*/\1/p' events/header_page
84}
85
86get_selftest_event_size() {
87    sed -ne 's/^.*field:.*;.*size:\([0-9][0-9]*\);.*/\1/p' events/*/selftest/format | awk '{s+=$1} END {print s}'
88}
89