Add test cases for #840
Refs: #840 Change-Id: Ie29867d29ba6a25cfac77b95b8effc2f057aae14
This commit is contained in:
committed by
Masamichi Takagi
parent
67ebcca74d
commit
0c7384f980
@ -1,152 +1,234 @@
|
||||
#!/bin/sh
|
||||
BIN=
|
||||
SBIN=
|
||||
BOOTPARAM="-c 1-7 -m 4G@0"
|
||||
|
||||
if ! sudo ls /sys/kernel/debug | grep kmemleak > /dev/null 2>&1; then
|
||||
echo kmemleak: not found >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 'C840T01... '
|
||||
ng=0
|
||||
if [ -f ../../../config.h ]; then
|
||||
str=`grep "^#define BINDIR " ../../../config.h | head -1 | sed 's/^#define BINDIR /BINDIR=/'`
|
||||
eval $str
|
||||
fi
|
||||
|
||||
if [ -f ../../../Makefile ]; then
|
||||
str=`grep ^SBINDIR ../../../Makefile | head -1 | sed 's/ //g'`
|
||||
eval $str
|
||||
fi
|
||||
|
||||
if [ "x$BINDIR" = x ];then
|
||||
BINDIR="$BIN"
|
||||
fi
|
||||
|
||||
if [ "x$SBINDIR" = x ];then
|
||||
SBINDIR="$SBIN"
|
||||
fi
|
||||
|
||||
if lsmod | grep mcctrl > /dev/null 2>&1; then
|
||||
sudo $SBINDIR/mcstop+release.sh
|
||||
fi
|
||||
|
||||
dd if=/dev/zero of=rpf.data bs=1M count=1024
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
./ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
./mcexec ./C840T01
|
||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
||||
echo 'C840T01: NG (kmemleak)'
|
||||
ng=1
|
||||
fi
|
||||
if ! dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
||||
echo 'C840T01: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
fi
|
||||
if ! ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
||||
echo 'C840T01: WARN (syscall offloading)'
|
||||
ng=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo C840T01: OK
|
||||
fi
|
||||
|
||||
echo 'C840T01... '
|
||||
b=
|
||||
while [ x$b = x ]; do
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
sudo $SBINDIR/mcreboot.sh $BOOTPARAM
|
||||
$SBINDIR/ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
$BINDIR/mcexec ./C840T01
|
||||
sleep 3
|
||||
rpf=`dmesg | grep 'remote_page_fault:interrupted. -512'`
|
||||
offload=` $SBINDIR/ihkosctl 0 kmsg | grep 'is dead, terminate()'`
|
||||
sudo $SBINDIR/mcstop+release.sh
|
||||
sudo sh -c 'echo scan > /sys/kernel/debug/kmemleak'
|
||||
if [ x"$rpf" = x ]; then
|
||||
echo '*** C840T01: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
elif [ x"$offload" = x ]; then
|
||||
echo '*** C840T01: WARN (syscall offloading)'
|
||||
ng=1
|
||||
elif sudo cat /sys/kernel/debug/kmemleak | tee C840T01.kmemleak | grep 'mcctrl'; then
|
||||
echo '*** C840T01: NG (kmemleak)'
|
||||
ng=1
|
||||
b=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo '*** C840T01: OK'
|
||||
b=1
|
||||
fi
|
||||
done
|
||||
|
||||
echo 'C840T02... '
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
./ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
./mcexec ./C840T02
|
||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
||||
echo 'C840T02: NG (kmemleak)'
|
||||
ng=1
|
||||
fi
|
||||
if dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
||||
echo 'C840T02: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
fi
|
||||
if ! ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
||||
echo 'C840T02: WARN (syscall offloading)'
|
||||
ng=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo C840T02: OK
|
||||
fi
|
||||
b=
|
||||
while [ x$b = x ]; do
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
sudo $SBINDIR/mcreboot.sh $BOOTPARAM
|
||||
$SBINDIR/ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
$BINDIR/mcexec ./C840T02
|
||||
sleep 3
|
||||
rpf=`dmesg | grep 'remote_page_fault:interrupted. -512'`
|
||||
offload=` $SBINDIR/ihkosctl 0 kmsg | grep 'is dead, terminate()'`
|
||||
sudo $SBINDIR/mcstop+release.sh
|
||||
sudo sh -c 'echo scan > /sys/kernel/debug/kmemleak'
|
||||
if [ x"$rpf" != x ]; then
|
||||
echo '*** C840T02: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
elif [ x"$offload" = x ]; then
|
||||
echo '*** C840T02: WARN (syscall offloading)'
|
||||
ng=1
|
||||
elif sudo cat /sys/kernel/debug/kmemleak | tee C840T02.kmemleak | grep 'mcctrl'; then
|
||||
echo '*** C840T02: NG (kmemleak)'
|
||||
ng=1
|
||||
b=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo '*** C840T02: OK'
|
||||
b=1
|
||||
fi
|
||||
done
|
||||
|
||||
echo 'C840T03... '
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
./ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
./mcexec ./C840T03
|
||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
||||
echo 'C840T03: NG (kmemleak)'
|
||||
ng=1
|
||||
fi
|
||||
if dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
||||
echo 'C840T03: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
fi
|
||||
if ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
||||
echo 'C840T03: WARN (syscall offloading)'
|
||||
ng=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo C840T03: OK
|
||||
fi
|
||||
b=
|
||||
while [ x$b = x ]; do
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
sudo $SBINDIR/mcreboot.sh $BOOTPARAM
|
||||
$SBINDIR/ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
$BINDIR/mcexec ./C840T03
|
||||
sleep 3
|
||||
rpf=`dmesg | grep 'remote_page_fault:interrupted. -512'`
|
||||
offload=` $SBINDIR/ihkosctl 0 kmsg | grep 'is dead, terminate()'`
|
||||
sudo $SBINDIR/mcstop+release.sh
|
||||
sudo sh -c 'echo scan > /sys/kernel/debug/kmemleak'
|
||||
if [ x"$rpf" != x ]; then
|
||||
echo '*** C840T03: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
elif [ x"$offload" != x ]; then
|
||||
echo '*** C840T03: WARN (syscall offloading)'
|
||||
ng=1
|
||||
elif sudo cat /sys/kernel/debug/kmemleak | tee C840T03.kmemleak | grep 'mcctrl'; then
|
||||
echo '*** C840T03: NG (kmemleak)'
|
||||
ng=1
|
||||
b=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo '*** C840T03: OK'
|
||||
b=1
|
||||
fi
|
||||
done
|
||||
|
||||
echo 'C840T04... '
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
./ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
timeout -s 9 2 ./mcexec ./C840T04
|
||||
sleep 2
|
||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
||||
echo 'C840T04: NG (kmemleak)'
|
||||
ng=1
|
||||
fi
|
||||
if ! dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
||||
echo 'C840T04: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
fi
|
||||
if ! ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
||||
echo 'C840T04: WARN (syscall offloading)'
|
||||
ng=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo C840T04: OK
|
||||
fi
|
||||
b=
|
||||
while [ x$b = x ]; do
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
sudo $SBINDIR/mcreboot.sh $BOOTPARAM
|
||||
$SBINDIR/ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
timeout -s 9 2 $BINDIR/mcexec ./C840T04
|
||||
sleep 3
|
||||
rpf=`dmesg | grep 'remote_page_fault:interrupted. -512'`
|
||||
offload=` $SBINDIR/ihkosctl 0 kmsg | grep 'is dead, terminate()'`
|
||||
sudo $SBINDIR/mcstop+release.sh
|
||||
sudo sh -c 'echo scan > /sys/kernel/debug/kmemleak'
|
||||
if [ x"$rpf" = x ]; then
|
||||
echo '*** C840T04: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
elif [ x"$offload" = x ]; then
|
||||
echo '*** C840T04: WARN (syscall offloading)'
|
||||
ng=1
|
||||
elif sudo cat /sys/kernel/debug/kmemleak | tee C840T04.kmemleak | grep 'mcctrl'; then
|
||||
echo '*** C840T04: NG (kmemleak)'
|
||||
ng=1
|
||||
b=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo '*** C840T04: OK'
|
||||
b=1
|
||||
fi
|
||||
done
|
||||
|
||||
echo 'C840T05... '
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
./ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
timeout -s 9 2 ./mcexec ./C840T05
|
||||
sleep 2
|
||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
||||
echo 'C840T05: NG (kmemleak)'
|
||||
ng=1
|
||||
fi
|
||||
if dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
||||
echo 'C840T05: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
fi
|
||||
if ! ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
||||
echo 'C840T05: WARN (syscall offloading)'
|
||||
ng=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo C840T05: OK
|
||||
fi
|
||||
b=
|
||||
while [ x$b = x ]; do
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
sudo $SBINDIR/mcreboot.sh $BOOTPARAM
|
||||
$SBINDIR/ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
timeout -s 9 2 $BINDIR/mcexec ./C840T05
|
||||
sleep 3
|
||||
rpf=`dmesg | grep 'remote_page_fault:interrupted. -512'`
|
||||
offload=` $SBINDIR/ihkosctl 0 kmsg | grep 'is dead, terminate()'`
|
||||
sudo $SBINDIR/mcstop+release.sh
|
||||
sudo sh -c 'echo scan > /sys/kernel/debug/kmemleak'
|
||||
if [ x"$rpf" != x ]; then
|
||||
echo '*** C840T05: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
elif [ x"$offload" = x ]; then
|
||||
echo '*** C840T05: WARN (syscall offloading)'
|
||||
ng=1
|
||||
elif sudo cat /sys/kernel/debug/kmemleak | tee C840T05.kmemleak | grep 'mcctrl'; then
|
||||
echo '*** C840T05: NG (kmemleak)'
|
||||
ng=1
|
||||
b=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo '*** C840T05: OK'
|
||||
b=1
|
||||
fi
|
||||
done
|
||||
|
||||
echo 'C840T06... '
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
./ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
timeout -s 9 2 ./mcexec ./C840T06
|
||||
sleep 2
|
||||
if [ `sudo cat /sys/kernel/debug/kmemleak | wc -l` != 0 ]; then
|
||||
echo 'C840T06: NG (kmemleak)'
|
||||
ng=1
|
||||
fi
|
||||
if dmesg | grep 'remote_page_fault:interrupted. -512' > /dev/null 2>&1; then
|
||||
echo 'C840T06: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
fi
|
||||
if ./ihkosctl 0 kmsg | grep 'is dead, terminate()' > /dev/null 2>&1; then
|
||||
echo 'C840T06: WARN (syscall offloading)'
|
||||
ng=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo C840T06: OK
|
||||
fi
|
||||
b=
|
||||
while [ x$b = x ]; do
|
||||
ng=0
|
||||
sync
|
||||
sudo /sbin/sysctl vm.drop_caches=3 > /dev/null 2>&1
|
||||
sudo sh -c 'echo clear > /sys/kernel/debug/kmemleak'
|
||||
sudo $SBINDIR/mcreboot.sh $BOOTPARAM
|
||||
$SBINDIR/ihkosctl 0 clear_kmsg
|
||||
sudo dmesg -c > /dev/null
|
||||
timeout -s 9 2 $BINDIR/mcexec ./C840T06
|
||||
sleep 3
|
||||
rpf=`dmesg | grep 'remote_page_fault:interrupted. -512'`
|
||||
offload=` $SBINDIR/ihkosctl 0 kmsg | grep 'is dead, terminate()'`
|
||||
sudo $SBINDIR/mcstop+release.sh
|
||||
sudo sh -c 'echo scan > /sys/kernel/debug/kmemleak'
|
||||
if [ x"$rpf" != x ]; then
|
||||
echo '*** C840T06: WARN (remote_page_fault)'
|
||||
ng=1
|
||||
elif [ x"$offload" != x ]; then
|
||||
echo '*** C840T06: WARN (syscall offloading)'
|
||||
ng=1
|
||||
elif sudo cat /sys/kernel/debug/kmemleak | tee C840T06.kmemleak | grep 'mcctrl'; then
|
||||
echo '*** C840T06: NG (kmemleak)'
|
||||
ng=1
|
||||
b=1
|
||||
fi
|
||||
if [ $ng = 0 ]; then
|
||||
echo '*** C840T06: OK'
|
||||
b=1
|
||||
fi
|
||||
done
|
||||
|
||||
rm -f rpf.data rpf.out
|
||||
|
||||
Reference in New Issue
Block a user