From 206e6505316df1b86196d6582ef1e632e47d43a5 Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Tue, 9 Aug 2022 15:38:16 +0000 Subject: [PATCH] Fix: tests: don't assume sequential cpuids MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit On Linux CPU ids aren't sequential if a CPU is offlined or unplugged. Get the list of currently available CPU ids from sysfs and pick a random one, if sysfs is not available use the previous behavior. Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau Change-Id: Ibdb63c7d036389104ac2f629827a6dce59e06983 --- .../tracefile-limits/test_tracefile_count | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_count b/tests/regression/tools/tracefile-limits/test_tracefile_count index 5ca10ac23..5f114af04 100755 --- a/tests/regression/tools/tracefile-limits/test_tracefile_count +++ b/tests/regression/tools/tracefile-limits/test_tracefile_count @@ -17,16 +17,37 @@ TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" STATS_BIN="$TESTDIR/utils/babelstats.pl" NUM_TESTS=74 -NUM_CPUS=$(nproc) PAGE_SIZE=$(getconf PAGE_SIZE) TRACEFILE_SIZE=$PAGE_SIZE source "$TESTDIR"/utils/utils.sh +NUM_CPUS=$(conf_proc_count) + if [ ! -x "$TESTAPP_BIN" ]; then BAIL_OUT "No UST events binary detected." fi +function pick_random_cpuid () +{ + local cpuid=0 + + # On Linux pick a random available cpuid from sysfs + if [ -d "/sys/devices/system/cpu" ]; then + local cpuids=() + + for i in /sys/devices/system/cpu/cpu[0-9]*; do + cpuids+=("${i#/sys/devices/system/cpu/cpu}") + done + + cpuid=${cpuids[ $RANDOM % ${#cpuids[@]} ]} + else + cpuid=$((RANDOM % NUM_CPUS)) + fi + + echo $cpuid +} + function enable_lttng_channel_count_limit () { sess_name="$1" @@ -82,7 +103,7 @@ function test_tracefile_count_limit () local count_limit="$1" local channel_name="channel" - local cpuno=$((RANDOM % NUM_CPUS)) + local cpuno=$(pick_random_cpuid) local event_name="tp:tptest" local expected_size=$((count_limit * TRACEFILE_SIZE)) local num_iter=100000 -- 2.34.1