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