xref: /linux/tools/testing/selftests/ftrace/test.d/remotes/functions (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
10a1b0325SVincent Donnefort# SPDX-License-Identifier: GPL-2.0
20a1b0325SVincent Donnefort
30a1b0325SVincent Donnefortsetup_remote()
40a1b0325SVincent Donnefort{
50a1b0325SVincent Donnefort	local name=$1
60a1b0325SVincent Donnefort
70a1b0325SVincent Donnefort	[ -e $TRACING_DIR/remotes/$name/write_event ] || exit_unresolved
80a1b0325SVincent Donnefort
90a1b0325SVincent Donnefort	cd remotes/$name/
100a1b0325SVincent Donnefort	echo 0 > tracing_on
110a1b0325SVincent Donnefort	clear_trace
120a1b0325SVincent Donnefort	echo 7 > buffer_size_kb
130a1b0325SVincent Donnefort	echo 0 > events/enable
140a1b0325SVincent Donnefort	echo 1 > events/$name/selftest/enable
150a1b0325SVincent Donnefort	echo 1 > tracing_on
160a1b0325SVincent Donnefort}
170a1b0325SVincent Donnefort
180a1b0325SVincent Donnefortsetup_remote_test()
190a1b0325SVincent Donnefort{
200a1b0325SVincent Donnefort	[ -d $TRACING_DIR/remotes/test/ ] || modprobe remote_test || exit_unresolved
210a1b0325SVincent Donnefort
220a1b0325SVincent Donnefort	setup_remote "test"
230a1b0325SVincent Donnefort}
240a1b0325SVincent Donnefort
250a1b0325SVincent Donnefortassert_loaded()
260a1b0325SVincent Donnefort{
27*ec07906bSVincent Donnefort	grep -q "(loaded)" buffer_size_kb || return 1
280a1b0325SVincent Donnefort}
290a1b0325SVincent Donnefort
300a1b0325SVincent Donnefortassert_unloaded()
310a1b0325SVincent Donnefort{
32*ec07906bSVincent Donnefort	grep -q "(unloaded)" buffer_size_kb || return 1
33*ec07906bSVincent Donnefort}
34*ec07906bSVincent Donnefort
35*ec07906bSVincent Donnefortreload_remote()
36*ec07906bSVincent Donnefort{
37*ec07906bSVincent Donnefort	echo 0 > tracing_on
38*ec07906bSVincent Donnefort	clear_trace
39*ec07906bSVincent Donnefort	assert_unloaded
40*ec07906bSVincent Donnefort	echo 1 > tracing_on
41*ec07906bSVincent Donnefort	assert_loaded
420a1b0325SVincent Donnefort}
430a1b0325SVincent Donnefort
440a1b0325SVincent Donnefortdump_trace_pipe()
450a1b0325SVincent Donnefort{
460a1b0325SVincent Donnefort    output=$(mktemp $TMPDIR/remote_test.XXXXXX)
470a1b0325SVincent Donnefort    cat trace_pipe > $output &
480a1b0325SVincent Donnefort    pid=$!
490a1b0325SVincent Donnefort    sleep 1
500a1b0325SVincent Donnefort    kill -1 $pid
510a1b0325SVincent Donnefort
520a1b0325SVincent Donnefort    echo $output
530a1b0325SVincent Donnefort}
540a1b0325SVincent Donnefort
550a1b0325SVincent Donnefortcheck_trace()
560a1b0325SVincent Donnefort{
570a1b0325SVincent Donnefort	start_id="$1"
580a1b0325SVincent Donnefort	end_id="$2"
590a1b0325SVincent Donnefort	file="$3"
600a1b0325SVincent Donnefort
610a1b0325SVincent Donnefort	# Ensure the file is not empty
620a1b0325SVincent Donnefort	test -n "$(head $file)"
630a1b0325SVincent Donnefort
640a1b0325SVincent Donnefort	prev_ts=0
650a1b0325SVincent Donnefort	id=0
660a1b0325SVincent Donnefort
670a1b0325SVincent Donnefort	# Only keep <timestamp> <id>
680a1b0325SVincent Donnefort	tmp=$(mktemp $TMPDIR/remote_test.XXXXXX)
690a1b0325SVincent Donnefort	sed -e 's/\[[0-9]*\]\s*\([0-9]*.[0-9]*\): [a-z]* id=\([0-9]*\)/\1 \2/' $file > $tmp
700a1b0325SVincent Donnefort
710a1b0325SVincent Donnefort	while IFS= read -r line; do
720a1b0325SVincent Donnefort		ts=$(echo $line | cut -d ' ' -f 1)
730a1b0325SVincent Donnefort		id=$(echo $line | cut -d ' ' -f 2)
740a1b0325SVincent Donnefort
750a1b0325SVincent Donnefort		test $(echo "$ts>$prev_ts" | bc) -eq 1
760a1b0325SVincent Donnefort		test $id -eq $start_id
770a1b0325SVincent Donnefort
780a1b0325SVincent Donnefort		prev_ts=$ts
790a1b0325SVincent Donnefort		start_id=$((start_id + 1))
800a1b0325SVincent Donnefort	done < $tmp
810a1b0325SVincent Donnefort
820a1b0325SVincent Donnefort	test $id -eq $end_id
830a1b0325SVincent Donnefort	rm $tmp
840a1b0325SVincent Donnefort}
850a1b0325SVincent Donnefort
860a1b0325SVincent Donnefortget_cpu_ids()
870a1b0325SVincent Donnefort{
880a1b0325SVincent Donnefort    sed -n 's/^processor\s*:\s*\([0-9]\+\).*/\1/p' /proc/cpuinfo
890a1b0325SVincent Donnefort}
900a1b0325SVincent Donnefort
91*ec07906bSVincent Donnefortget_page_size()
92*ec07906bSVincent Donnefort{
930a1b0325SVincent Donnefort    sed -ne 's/^.*data.*size:\([0-9][0-9]*\).*/\1/p' events/header_page
940a1b0325SVincent Donnefort}
950a1b0325SVincent Donnefort
96*ec07906bSVincent Donnefortget_selftest_event_size()
97*ec07906bSVincent Donnefort{
980a1b0325SVincent Donnefort    sed -ne 's/^.*field:.*;.*size:\([0-9][0-9]*\);.*/\1/p' events/*/selftest/format | awk '{s+=$1} END {print s}'
990a1b0325SVincent Donnefort}
100