Skip to content

Commit ea2fbeb

Browse files
committed
Add kernel_kselftest.sh
This is a helper script for running kselftests against a kernel under test. It attempts to install the appropriate dependencies for different versions of Rocky Linux and attempts to run appropriate tests, with appropriate permissions, for a few select kernel versions. This is just a starting point. Hopefully this continues to evolve, increasing the number of successful that can reliably be run.
1 parent b651e1b commit ea2fbeb

File tree

1 file changed

+244
-0
lines changed

1 file changed

+244
-0
lines changed

kernel_kselftest.sh

Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
1+
#!/bin/sh
2+
set -e
3+
4+
# So we can detect what version of Rocky we are running on
5+
. /etc/os-release
6+
7+
if [ ! -f .config ] ; then
8+
echo "No .config found. Please configure before testing"
9+
exit 1
10+
fi
11+
12+
if [ $# -eq 1 ] ; then
13+
runs=$1
14+
else
15+
runs=1
16+
fi
17+
18+
install_kselftest_deps_8() {
19+
echo
20+
echo "Installing kselftest deps for Rocky 8"
21+
echo
22+
sudo dnf -y groupinstall 'Development Tools'
23+
sudo dnf -y install epel-release
24+
sudo dnf -y install --enablerepo=devel \
25+
VirtualGL \
26+
alsa-lib-devel \
27+
bc \
28+
clang \
29+
curl \
30+
dropwatch \
31+
dwarves \
32+
glibc \
33+
iperf3 \
34+
jq \
35+
kernel-devel \
36+
libasan \
37+
libcap-devel \
38+
libcap-ng-devel \
39+
libmnl-devel \
40+
libreswan \
41+
libubsan \
42+
llvm \
43+
ncurses-devel \
44+
net-tools \
45+
netsniff-ng \
46+
nmap-ncat \
47+
numactl-devel \
48+
openssl-devel \
49+
perf \
50+
popt-devel \
51+
python3-pip \
52+
rsync \
53+
socat \
54+
tcpdump \
55+
wget
56+
57+
# Doesn't work for 8.6?
58+
sudo dnf -y install --enablerepo=devel \
59+
fuse-devel \
60+
gcc-toolset-13-libasan-devel \
61+
glibc-static \
62+
kernel-selftests-internal
63+
64+
pip3 install --user \
65+
netaddr \
66+
packaging \
67+
pyftpdlib \
68+
pyparsing \
69+
pytest \
70+
scapy \
71+
tftpy
72+
}
73+
74+
install_kselftest_deps_9() {
75+
echo
76+
echo "Installing kselftest deps for Rocky 9"
77+
echo
78+
sudo dnf -y groupinstall 'Development Tools'
79+
sudo dnf -y install epel-release
80+
sudo dnf -y install --enablerepo=crb,devel \
81+
VirtualGL \
82+
alsa-lib-devel \
83+
bc \
84+
clang \
85+
curl \
86+
dropwatch \
87+
dwarves \
88+
fuse-devel \
89+
gcc-toolset-13-libasan-devel \
90+
glibc \
91+
glibc-static \
92+
iperf3 \
93+
jq \
94+
kernel-devel \
95+
kernel-selftests-internal \
96+
libasan \
97+
libcap-devel \
98+
libcap-ng-devel \
99+
libmnl-devel \
100+
libreswan \
101+
libubsan \
102+
llvm \
103+
ncurses-devel \
104+
net-tools \
105+
netsniff-ng \
106+
nmap-ncat \
107+
numactl-devel \
108+
openssl-devel \
109+
packetdrill \
110+
perf \
111+
popt-devel \
112+
python3-pip \
113+
rsync \
114+
socat \
115+
tcpdump \
116+
virtme-ng \
117+
wget
118+
119+
pip3 install --user \
120+
netaddr \
121+
packaging \
122+
pyftpdlib \
123+
pyparsing \
124+
pytest \
125+
scapy \
126+
tftpy \
127+
wheel
128+
}
129+
130+
install_kselftest_deps_10() {
131+
echo
132+
echo "Installing kselftest deps for Rocky 10"
133+
echo
134+
sudo dnf -y groupinstall 'Development Tools'
135+
sudo dnf -y install epel-release
136+
sudo dnf -y install --enablerepo=crb,devel \
137+
alsa-lib-devel \
138+
bc \
139+
clang \
140+
curl \
141+
dropwatch \
142+
dwarves \
143+
fuse-devel \
144+
glibc \
145+
glibc-static \
146+
iperf3 \
147+
kernel-devel \
148+
kernel-selftests-internal \
149+
libasan \
150+
libasan-static \
151+
libcap-devel \
152+
libcap-ng-devel \
153+
libmnl-devel \
154+
libreswan \
155+
libubsan \
156+
llvm \
157+
ncurses-devel \
158+
net-tools \
159+
nmap-ncat \
160+
numactl-devel \
161+
openssl-devel \
162+
packetdrill \
163+
perf \
164+
popt-devel \
165+
python3-pip \
166+
rsync \
167+
socat \
168+
tcpdump \
169+
virtme-ng \
170+
wget
171+
172+
pip3 install --user \
173+
netaddr \
174+
packaging \
175+
pyftpdlib \
176+
pyparsing \
177+
pytest \
178+
scapy \
179+
tftpy \
180+
wheel
181+
}
182+
183+
run_kselftest() {
184+
SUDO_TARGETS=$1
185+
SKIP_TARGETS=$2
186+
make -C tools/testing/selftests SKIP_TARGETS="$SKIP_TARGETS"
187+
for run in $(seq 1 $runs) ; do
188+
make -C tools/testing/selftests SKIP_TARGETS="$SUDO_TARGETS $SKIP_TARGETS" run_tests | tee ~/selftest-$(uname -r)-$run.log
189+
sudo make -C tools/testing/selftests TARGETS="$SUDO_TARGETS" run_tests | tee -a ~/selftest-$(uname -r)-$run.log
190+
done
191+
}
192+
193+
case "$ROCKY_SUPPORT_PRODUCT" in
194+
Rocky-Linux-10)
195+
install_kselftest_deps_10
196+
;;
197+
Rocky-Linux-9)
198+
install_kselftest_deps_9
199+
;;
200+
Rocky-Linux-8)
201+
install_kselftest_deps_8
202+
;;
203+
esac
204+
205+
case $(uname -r) in
206+
*3.10.0*)
207+
echo
208+
echo "Running 3.10.0 kselftests"
209+
echo
210+
SUDO_TARGETS="x86"
211+
SKIP_TARGETS=""
212+
;;
213+
*4.18.0*)
214+
echo
215+
echo "Running 4.18.0 kselftests"
216+
echo
217+
SUDO_TARGETS="capabilities cpu-hotplug cpufreq efivars efivarfs fpu ipc intel_pstate kexec lib livepatch memfd memory-hotplug mptcp mqueue net netfilter sync sysctl timens timers vm x86 zram"
218+
SKIP_TARGETS=""
219+
;;
220+
*5.14.0*)
221+
echo
222+
echo "Running 5.14.0 kselftests"
223+
echo
224+
SUDO_TARGETS="binderfs capabilities cgroup cpu-hotplug cpufreq efivars efivarfs firmware fpu gpio ipc intel_pstate ir kexec lib livepatch memfd memory-hotplug mptcp mqueue net netfilter sync sysctl timens timers vm x86 zram"
225+
SKIP_TARGETS="lkdtm proc"
226+
;;
227+
*6.12.*)
228+
echo
229+
echo "Running 6.12 kselftests"
230+
echo
231+
SUDO_TARGETS="binderfs capabilities cgroup clone3 cpu-hotplug cpufreq damon drivers/net efivars efivarfs exec firmware fpu gpio ipc intel_pstate ir kexec lib livepatch memfd memory-hotplug mptcp mqueue net netfilter sync sysctl timens timers vm x86 zram"
232+
SKIP_TARGETS="lkdtm"
233+
;;
234+
*)
235+
echo
236+
echo "Warning: Unknown kernel version ($(uname -r)). No kselftest targets defined."
237+
echo "SUDO_TARGETS and SKIP_TARGETS will be empty."
238+
SUDO_TARGETS=""
239+
SKIP_TARGETS=""
240+
;;
241+
esac
242+
243+
run_kselftest "$SUDO_TARGETS" "$SKIP_TARGETS"
244+

0 commit comments

Comments
 (0)