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 <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: Ibdb63c7d036389104ac2f629827a6dce59e06983
STATS_BIN="$TESTDIR/utils/babelstats.pl"
NUM_TESTS=74
STATS_BIN="$TESTDIR/utils/babelstats.pl"
NUM_TESTS=74
PAGE_SIZE=$(getconf PAGE_SIZE)
TRACEFILE_SIZE=$PAGE_SIZE
source "$TESTDIR"/utils/utils.sh
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
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"
function enable_lttng_channel_count_limit ()
{
sess_name="$1"
local count_limit="$1"
local channel_name="channel"
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
local event_name="tp:tptest"
local expected_size=$((count_limit * TRACEFILE_SIZE))
local num_iter=100000