Skip to content

Commit e2e5763

Browse files
authored
Merge pull request qualcomm-linux#72 from smuppand/probe_fail
Refactor IPA and RMNET tests to use shared module helpers in functestlib.sh
2 parents 386f5e4 + 62baf9e commit e2e5763

File tree

10 files changed

+139
-26
lines changed

10 files changed

+139
-26
lines changed

Runner/plans/qcom-next-ci-premerge.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ run:
4040
- $PWD/utils/send-to-lava.sh $PWD/suites/Kernel/FunctionalArea/baseport/remoteproc/remoteproc.res || true
4141
- $PWD/suites/Kernel/FunctionalArea/baseport/RMNET/run.sh || true
4242
- $PWD/utils/send-to-lava.sh $PWD/suites/Kernel/FunctionalArea/baseport/RMNET/RMNET.res || true
43+
- $PWD/suites/Kernel/FunctionalArea/baseport/IPA/run.sh || true
44+
- $PWD/utils/send-to-lava.sh $PWD/suites/Kernel/FunctionalArea/baseport/IPA/IPA.res || true
45+
- $PWD/suites/Kernel/FunctionalArea/baseport/Probe_Failure_Check/run.sh || true
46+
- $PWD/utils/send-to-lava.sh $PWD/suites/Kernel/FunctionalArea/baseport/Probe_Failure_Check/Probe_Failure_Check.res || true
4347
- $PWD/suites/Kernel/FunctionalArea/baseport/rngtest/run.sh || true
4448
- $PWD/utils/send-to-lava.sh $PWD/suites/Kernel/FunctionalArea/baseport/rngtest/rngtest.res || true
4549
- $PWD/suites/Kernel/FunctionalArea/baseport/smmu/run.sh || true

Runner/suites/Connectivity/Bluetooth/run.sh

100644100755
File mode changed.

Runner/suites/Connectivity/Ethernet/run.sh

100644100755
File mode changed.

Runner/suites/Kernel/FunctionalArea/baseport/IPA/run.sh

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,44 +20,48 @@ if [ -z "$INIT_ENV" ]; then
2020
exit 1
2121
fi
2222

23-
# Only source if not already loaded (idempotent)
2423
if [ -z "$__INIT_ENV_LOADED" ]; then
2524
# shellcheck disable=SC1090
2625
. "$INIT_ENV"
2726
fi
28-
# Always source functestlib.sh, using $TOOLS exported by init_env
2927
# shellcheck disable=SC1090,SC1091
3028
. "$TOOLS/functestlib.sh"
3129

3230
TESTNAME="IPA"
3331
test_path=$(find_test_case_by_name "$TESTNAME")
3432
cd "$test_path" || exit 1
35-
# shellcheck disable=SC2034
3633
res_file="./$TESTNAME.res"
3734

3835
log_info "-----------------------------------------------------------------------------------------"
3936
log_info "-------------------Starting $TESTNAME Testcase----------------------------"
4037
log_info "=== Test Initialization ==="
4138

42-
PATH=$(find / -name "ipa.ko" 2>/dev/null)
39+
IPA_MODULE_PATH=$(find_kernel_module "ipa")
4340

44-
# Check if the file was found
45-
if [ -z "$PATH" ]; then
46-
log_error "ipa.ko file not found."
47-
exit 1
41+
if [ -z "$IPA_MODULE_PATH" ]; then
42+
log_error "ipa.ko module not found in filesystem."
43+
echo "$TESTNAME FAIL" > "$res_file"
44+
exit 1
4845
fi
4946

50-
# Insert the module
51-
TEST=$(/sbin/insmod "$PATH")
52-
log_info "output of insmod $TEST"
47+
log_info "Found ipa.ko at: $IPA_MODULE_PATH"
48+
49+
if ! load_kernel_module "$IPA_MODULE_PATH"; then
50+
echo "$TESTNAME FAIL" > "$res_file"
51+
exit 1
52+
fi
5353

54-
if /sbin/lsmod | /bin/grep "ipa"; then
55-
log_info "$(/sbin/lsmod | /bin/grep "ipa")"
54+
if is_module_loaded "ipa"; then
55+
log_info "ipa module is loaded"
5656
log_pass "$TESTNAME : Test Passed"
5757
echo "$TESTNAME PASS" > "$res_file"
5858
else
59-
log_error "rmnet module not running"
59+
log_error "ipa module not listed in lsmod"
6060
log_fail "$TESTNAME : Test Failed"
6161
echo "$TESTNAME FAIL" > "$res_file"
6262
fi
63+
64+
log_info "=== Cleanup ==="
65+
unload_kernel_module "ipa" true
66+
6367
log_info "-------------------Completed $TESTNAME Testcase----------------------------"

Runner/suites/Kernel/FunctionalArea/baseport/Probe_Failure_Check/run.sh

100644100755
File mode changed.

Runner/suites/Kernel/FunctionalArea/baseport/RMNET/run.sh

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,42 +20,48 @@ if [ -z "$INIT_ENV" ]; then
2020
exit 1
2121
fi
2222

23-
# Only source if not already loaded (idempotent)
2423
if [ -z "$__INIT_ENV_LOADED" ]; then
2524
# shellcheck disable=SC1090
2625
. "$INIT_ENV"
2726
fi
28-
# Always source functestlib.sh, using $TOOLS exported by init_env
2927
# shellcheck disable=SC1090,SC1091
3028
. "$TOOLS/functestlib.sh"
3129

3230
TESTNAME="RMNET"
3331
test_path=$(find_test_case_by_name "$TESTNAME")
3432
cd "$test_path" || exit 1
35-
# shellcheck disable=SC2034
3633
res_file="./$TESTNAME.res"
3734

3835
log_info "-----------------------------------------------------------------------------------------"
3936
log_info "-------------------Starting $TESTNAME Testcase----------------------------"
4037
log_info "=== Test Initialization ==="
4138

42-
PATH=$(find / -name "rmnet.ko" 2>/dev/null)
39+
RMNET_MODULE_PATH=$(find_kernel_module "rmnet")
4340

44-
if [ -z "$PATH" ]; then
45-
log_error "rmnet.ko file not found."
46-
exit 1
41+
if [ -z "$RMNET_MODULE_PATH" ]; then
42+
log_error "rmnet.ko module not found in filesystem."
43+
echo "$TESTNAME FAIL" > "$res_file"
44+
exit 1
4745
fi
4846

49-
TEST=$(/sbin/insmod "$PATH")
50-
log_info "output of insmod $TEST"
47+
log_info "Found rmnet.ko at: $RMNET_MODULE_PATH"
48+
49+
if ! load_kernel_module "$RMNET_MODULE_PATH"; then
50+
echo "$TESTNAME FAIL" > "$res_file"
51+
exit 1
52+
fi
5153

52-
if /sbin/lsmod | /bin/grep "rmnet"; then
53-
log_info "$(/sbin/lsmod | /bin/grep "rmnet")"
54+
if is_module_loaded "rmnet"; then
55+
log_info "rmnet module is loaded"
5456
log_pass "$TESTNAME : Test Passed"
5557
echo "$TESTNAME PASS" > "$res_file"
5658
else
57-
log_error "rmnet module not running"
59+
log_error "rmnet module not listed in lsmod"
5860
log_fail "$TESTNAME : Test Failed"
5961
echo "$TESTNAME FAIL" > "$res_file"
6062
fi
63+
64+
log_info "=== Cleanup ==="
65+
unload_kernel_module "rmnet" true
66+
6167
log_info "-------------------Completed $TESTNAME Testcase----------------------------"

Runner/suites/Kernel/FunctionalArea/baseport/shmbridge/run.sh

100644100755
File mode changed.

Runner/suites/Multimedia/Graphics/KMSCube/run.sh

100644100755
File mode changed.

Runner/suites/Multimedia/Graphics/weston-simple-egl/run.sh

100644100755
File mode changed.

Runner/utils/functestlib.sh

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,105 @@ get_kernel_log() {
3030
fi
3131
}
3232

33+
# Locate a kernel module (.ko) file by name
34+
# Tries to find it under current kernel version first, then all module trees
35+
find_kernel_module() {
36+
module_name="$1"
37+
kver=$(uname -r)
38+
39+
# Attempt to find module under the currently running kernel
40+
module_path=$(find "/lib/modules/$kver" -name "${module_name}.ko" 2>/dev/null | head -n 1)
41+
42+
# If not found, search all available module directories
43+
if [ -z "$module_path" ]; then
44+
log_warn "Module not found under /lib/modules/$kver, falling back to full search in /lib/modules/"
45+
module_path=$(find /lib/modules/ -name "${module_name}.ko" 2>/dev/null | head -n 1)
46+
47+
# Warn if found outside current kernel version
48+
if [ -n "$module_path" ]; then
49+
found_version=$(echo "$module_path" | cut -d'/' -f4)
50+
if [ "$found_version" != "$kver" ]; then
51+
log_warn "Found ${module_name}.ko under $found_version, not under current kernel ($kver)"
52+
fi
53+
fi
54+
fi
55+
echo "$module_path"
56+
}
57+
58+
# Check if a kernel module is currently loaded
59+
is_module_loaded() {
60+
module_name="$1"
61+
/sbin/lsmod | awk '{print $1}' | grep -q "^${module_name}$"
62+
}
63+
64+
# Insert a kernel module with optional parameters
65+
load_kernel_module() {
66+
module_path="$1"
67+
shift
68+
params="$*"
69+
70+
module_name=$(basename "$module_path" .ko)
71+
72+
if is_module_loaded "$module_name"; then
73+
log_info "Module $module_name is already loaded"
74+
return 0
75+
fi
76+
77+
if [ ! -f "$module_path" ]; then
78+
log_error "Module file not found: $module_path"
79+
return 1
80+
fi
81+
82+
log_info "Loading module: $module_path $params"
83+
if /sbin/insmod "$module_path" "$params" 2>insmod_err.log; then
84+
log_info "Module $module_name loaded successfully"
85+
return 0
86+
else
87+
log_error "insmod failed: $(cat insmod_err.log)"
88+
return 1
89+
fi
90+
}
91+
92+
# Remove a kernel module by name with optional forced removal
93+
unload_kernel_module() {
94+
module_name="$1"
95+
force="$2"
96+
97+
if ! is_module_loaded "$module_name"; then
98+
log_info "Module $module_name is not loaded, skipping unload"
99+
return 0
100+
fi
101+
102+
log_info "Attempting to remove module: $module_name"
103+
if /sbin/rmmod "$module_name" 2>rmmod_err.log; then
104+
log_info "Module $module_name removed via rmmod"
105+
return 0
106+
fi
107+
108+
log_warn "rmmod failed: $(cat rmmod_err.log)"
109+
log_info "Trying modprobe -r as fallback"
110+
if /sbin/modprobe -r "$module_name" 2>modprobe_err.log; then
111+
log_info "Module $module_name removed via modprobe"
112+
return 0
113+
fi
114+
115+
log_warn "modprobe -r failed: $(cat modprobe_err.log)"
116+
117+
if [ "$force" = "true" ]; then
118+
log_warn "Trying forced rmmod: $module_name"
119+
if /sbin/rmmod -f "$module_name" 2>>rmmod_err.log; then
120+
log_info "Module $module_name force removed"
121+
return 0
122+
else
123+
log_error "Forced rmmod failed: $(cat rmmod_err.log)"
124+
return 1
125+
fi
126+
fi
127+
128+
log_error "Unable to unload module: $module_name"
129+
return 1
130+
}
131+
33132
# --- Dependency check ---
34133
check_dependencies() {
35134
missing=0

0 commit comments

Comments
 (0)