Home | History | Annotate | Line # | Download | only in unit
      1 #!/usr/bin/env bash
      2 
      3 # SPDX-FileCopyrightText: 2023 EfficiOS Inc.
      4 #
      5 # SPDX-License-Identifier: GPL-2.0-or-later
      6 
      7 if [ "x${URCU_TESTS_SRCDIR:-}" != "x" ]; then
      8 	UTILSSH="$URCU_TESTS_SRCDIR/utils/utils.sh"
      9 else
     10 	UTILSSH="$(dirname "$0")/../utils/utils.sh"
     11 fi
     12 
     13 # shellcheck source=../utils/utils.sh
     14 source "$UTILSSH"
     15 
     16 # shellcheck source=../../utils/tap.sh
     17 source "$URCU_TESTS_SRCDIR/utils/tap.sh"
     18 
     19 CURDIR="${URCU_TESTS_BUILDDIR}/unit"
     20 
     21 STD_OUTPUT="/dev/null"
     22 STD_ERROR="/dev/null"
     23 
     24 NUM_TESTS=13
     25 
     26 TESTDIR=$(mktemp -d)
     27 
     28 populate_testdir() {
     29 	local cpus=("$@")
     30 
     31 	mkdir "$TESTDIR"
     32 
     33 	for i in "${cpus[@]}"; do
     34 		mkdir "$TESTDIR/$i"
     35 	done
     36 }
     37 
     38 test_get_max_cpuid_from_sysfs() {
     39 	local num_cpus=$1
     40 	shift
     41 	local current_cpus=("$@")
     42 	local result
     43 
     44 	populate_testdir "${current_cpus[@]}" >"$STD_OUTPUT" 2>"$STD_ERROR"
     45 	result=$("${CURDIR}/get_max_cpuid_from_sysfs" "$TESTDIR")
     46 	is "$result" "$num_cpus" "get_max_cpuid_from_sysfs - cpu set: '${current_cpus[*]}', expected: '$num_cpus', result: '$result'"
     47 	rm -rf "$TESTDIR"
     48 }
     49 
     50 if [ "$URCU_TESTS_OS_TYPE" == "linux" ]; then
     51 	plan_tests $NUM_TESTS
     52 
     53 	diag "get_max_cpuid_from_sysfs"
     54 
     55 	test_data=(0 "cpu0")
     56 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     57 
     58 	test_data=(1 "cpu0" "cpu1")
     59 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     60 
     61 	test_data=(1 "cpu1" "cpu0")
     62 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     63 
     64 	test_data=(3 "cpu3")
     65 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     66 
     67 	test_data=(99 "cpu99")
     68 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     69 
     70 	test_data=(3 "cpu0" "cpu3")
     71 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     72 
     73 	test_data=(3 "cpufreq" "cpuidle" "cpu0" "cpu1" "cpu2" "cpu3")
     74 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     75 
     76 	test_data=(0 "cpu" "cpu0")
     77 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     78 
     79 	test_data=(5 "cpu" "cpu5")
     80 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     81 
     82 
     83 	test_data=(-1 "toto")
     84 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     85 
     86 	test_data=(-1 "cpu")
     87 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     88 
     89 	test_data=(-1 "cpua" "cpud")
     90 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     91 
     92 	test_data=(-1 "cpufreq" "cpuidle")
     93 	test_get_max_cpuid_from_sysfs "${test_data[@]}"
     94 else
     95 	plan_skip_all "Linux specific tests."
     96 fi
     97