xref: /linux/tools/testing/selftests/ftrace/test.d/remotes/functions (revision 5ea5880764cbb164afb17a62e76ca75dc371409d)
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 || return 1
28}
29
30assert_unloaded()
31{
32	grep -q "(unloaded)" buffer_size_kb || return 1
33}
34
35reload_remote()
36{
37	echo 0 > tracing_on
38	clear_trace
39	assert_unloaded
40	echo 1 > tracing_on
41	assert_loaded
42}
43
44dump_trace_pipe()
45{
46    output=$(mktemp $TMPDIR/remote_test.XXXXXX)
47    cat trace_pipe > $output &
48    pid=$!
49    sleep 1
50    kill -1 $pid
51
52    echo $output
53}
54
55check_trace()
56{
57	start_id="$1"
58	end_id="$2"
59	file="$3"
60
61	# Ensure the file is not empty
62	test -n "$(head $file)"
63
64	prev_ts=0
65	id=0
66
67	# Only keep <timestamp> <id>
68	tmp=$(mktemp $TMPDIR/remote_test.XXXXXX)
69	sed -e 's/\[[0-9]*\]\s*\([0-9]*.[0-9]*\): [a-z]* id=\([0-9]*\)/\1 \2/' $file > $tmp
70
71	while IFS= read -r line; do
72		ts=$(echo $line | cut -d ' ' -f 1)
73		id=$(echo $line | cut -d ' ' -f 2)
74
75		test $(echo "$ts>$prev_ts" | bc) -eq 1
76		test $id -eq $start_id
77
78		prev_ts=$ts
79		start_id=$((start_id + 1))
80	done < $tmp
81
82	test $id -eq $end_id
83	rm $tmp
84}
85
86get_cpu_ids()
87{
88    sed -n 's/^processor\s*:\s*\([0-9]\+\).*/\1/p' /proc/cpuinfo
89}
90
91get_page_size()
92{
93    sed -ne 's/^.*data.*size:\([0-9][0-9]*\).*/\1/p' events/header_page
94}
95
96get_selftest_event_size()
97{
98    sed -ne 's/^.*field:.*;.*size:\([0-9][0-9]*\);.*/\1/p' events/*/selftest/format | awk '{s+=$1} END {print s}'
99}
100