#!/bin/sh # SPDX-License-Identifier: GPL-2.0 # description: Test trace remote consuming read # requires: remotes/test . $TEST_DIR/remotes/functions test_trace_pipe() { echo 0 > tracing_on assert_unloaded # Emit events from the same CPU for cpu in $(get_cpu_ids); do break done # # Simple test: Emit enough events to fill few pages # echo 1024 > buffer_size_kb echo 1 > tracing_on assert_loaded events_per_page=$(($(get_page_size) / $(get_selftest_event_size))) nr_events=$(($events_per_page * 4)) output=$(mktemp $TMPDIR/remote_test.XXXXXX) cat trace_pipe > $output & pid=$! for i in $(seq 1 $nr_events); do taskset -c $cpu echo $i > write_event done echo 0 > tracing_on sleep 1 kill $pid check_trace 1 $nr_events $output rm $output # # Test interaction with lost events # assert_unloaded echo 7 > buffer_size_kb echo 1 > tracing_on assert_loaded nr_events=$((events_per_page * 2)) for i in $(seq 1 $nr_events); do taskset -c $cpu echo $i > write_event done output=$(dump_trace_pipe) lost_events=$(sed -n -e '1s/CPU:.*\[LOST \([0-9]*\) EVENTS\]/\1/p' $output) test -n "$lost_events" id=$(sed -n -e '2s/\[[0-9]*\]\s*[0-9]*.[0-9]*: [a-z]* id=\([0-9]*\)/\1/p' $output) test "$id" -eq $(($lost_events + 1)) # Drop [LOST EVENTS] line sed -i '1d' $output check_trace $id $nr_events $output rm $output # # Test per-CPU interface # echo 0 > trace echo 1 > tracing_on for cpu in $(get_cpu_ids); do taskset -c $cpu echo $cpu > write_event done for cpu in $(get_cpu_ids); do cd per_cpu/cpu$cpu/ output=$(dump_trace_pipe) check_trace $cpu $cpu $output rm $output cd - > /dev/null done } if [ -z "$SOURCE_REMOTE_TEST" ]; then set -e setup_remote_test test_trace_pipe fi |