Files
mckernel/test/signalonfork+wait/run_error_injection.sh
TOIDA,Suguru 299d47abf5 fork: memory leak detection test.
Change-Id: I9c64f8fdaee15642b3d1d2d7d869927b0bcd6511
2019-09-26 01:56:16 +00:00

76 lines
2.2 KiB
Bash

#!/bin/bash
# run_error_injection.sh COPYRIGHT FUJITSU LIMITED 2019
test_dir=$(dirname "${BASH_SOURCE[0]}")
#
# read config
#
. "${test_dir}/../common.sh"
#
# init
#
echo "@@@ initialize:"
seed="$RANDOM"
RANDOM=$seed
echo "seed for \$RANDOM=$seed"
meminfo="/sys/devices/virtual/mcos/mcos0/sys/devices/system/node/node0/meminfo"
"${MCEXEC}" 0 ./signalonfork_wait -nt 1 -t $((1000*5)) >/dev/null
sleep 1
exp_free_mem=`cat "$meminfo" | grep MemFree:`
injection="/sys/devices/virtual/mcos/mcos0/sys/kernel/debug/signalonfork_test"
#
# run
#
while read label eq val
do
if [ -z "$label" ]; then
continue
fi
val=`echo "$val" | sed 's|,.*$||g'`
msec=$((1000 + $RANDOM % 500))
echo "$val" > "$injection"
echo "@@@ run signalonfork_wait($label, $val) wait=$msec"
"${MCEXEC}" 0 ./signalonfork_wait -nt 2 -t $msec > /dev/null
sleep 1
free_mem=`cat "$meminfo" | grep MemFree:`
if [ "$exp_free_mem" != "$free_mem" ]; then
echo "NG: detected memory leak."
echo "before:"
echo " ${exp_free_mem}"
echo "after:"
echo " ${free_mem}"
exit -1
fi
done <<__EOL__
do_fork_release_cpuid_0 = 0x010000,
do_fork_destroy_thread_0 = 0x010100,
do_fork_destroy_thread_1 = 0x010101,
do_fork_destroy_thread_2 = 0x010102,
do_fork_release_ids_0 = 0x010200,
do_fork_release_ids_1 = 0x010201,
do_fork_free_mod_clone_arg_0 = 0x010300,
do_fork_free_mod_clone_arg_1 = 0x010301,
clone_thread_free_thread_0 = 0x020000,
clone_thread_free_thread_1 = 0x020001,
clone_thread_free_fp_regs_0 = 0x020100,
clone_thread_free_fp_regs_1 = 0x020101,
clone_thread_free_fork_process_proc_0 = 0x020200,
clone_thread_free_fork_process_proc_1 = 0x020201,
clone_thread_free_fork_process_asp_0 = 0x020300,
clone_thread_free_fork_process_vm_0 = 0x020400,
clone_thread_free_fork_process_cmdline_0 = 0x020500,
clone_thread_free_fork_process_cmdline_1 = 0x020501,
clone_thread_free_fork_process_mckfd_0 = 0x020600,
clone_thread_free_fork_clone_process_0 = 0x020700,
clone_thread_free_copy_user_ranges_0 = 0x020800,
copy_user_ranges_err_rollback_0 = 0x030000,
__EOL__
echo "OK"
exit 0