xref: /linux/tools/testing/selftests/ftrace/test.d/remotes/reset.tc (revision 5ea5880764cbb164afb17a62e76ca75dc371409d)
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: Test trace remote reset
4# requires: remotes/test
5
6. $TEST_DIR/remotes/functions
7
8check_reset()
9{
10    write_event_path="write_event"
11    taskset=""
12
13    clear_trace
14
15    # Is the buffer empty?
16    output=$(dump_trace_pipe)
17    test $(wc -l $output | cut -d ' ' -f1) -eq 0
18
19    if $(echo $(pwd) | grep -q "per_cpu/cpu"); then
20        write_event_path="../../write_event"
21        cpu_id=$(echo $(pwd) | sed -e 's/.*per_cpu\/cpu//')
22        taskset="taskset -c $cpu_id"
23    fi
24    rm $output
25
26    # Can we properly write a new event?
27    $taskset echo 7890 > $write_event_path
28    output=$(dump_trace_pipe)
29    test $(wc -l $output | cut -d ' ' -f1) -eq 1
30    grep -q "id=7890" $output
31    rm $output
32}
33
34test_global_interface()
35{
36    output=$(mktemp $TMPDIR/remote_test.XXXXXX)
37
38    # Confidence check
39    echo 123456 > write_event
40    output=$(dump_trace_pipe)
41    grep -q "id=123456" $output
42    rm $output
43
44    # Reset single event
45    echo 1 > write_event
46    check_reset
47
48    # Reset lost events
49    for i in $(seq 1 10000); do
50        echo 1 > write_event
51    done
52    check_reset
53}
54
55test_percpu_interface()
56{
57    [ "$(get_cpu_ids | wc -l)" -ge 2 ] || return 0
58
59    for cpu in $(get_cpu_ids); do
60        taskset -c $cpu echo 1 > write_event
61    done
62
63    check_non_empty=0
64    for cpu in $(get_cpu_ids); do
65        cd per_cpu/cpu$cpu/
66
67        if [ $check_non_empty -eq 0 ]; then
68            check_reset
69            check_non_empty=1
70        else
71            # Check we have only reset 1 CPU
72            output=$(dump_trace_pipe)
73            test $(wc -l $output | cut -d ' ' -f1) -eq 1
74            rm $output
75        fi
76        cd -
77    done
78}
79
80test_reset()
81{
82    test_global_interface
83    test_percpu_interface
84}
85
86if [ -z "$SOURCE_REMOTE_TEST" ]; then
87    set -e
88    setup_remote_test
89    test_reset
90fi
91