Test "mcexec_destroy_per_process_data: System calls delegation can not be terminated in error when the last process that closed /dev/mcos0 is a child process." on arm64

Change-Id: I6bc3023c1fa6089bc2ca6365b59bbab384b3e1d7
Refs: #882
This commit is contained in:
Shiratori, Takehiro
2018-11-30 11:51:14 +09:00
committed by Masamichi Takagi
parent 0ee446923a
commit a11d4d7a9d
12 changed files with 724 additions and 514 deletions

View File

@ -0,0 +1,50 @@
/* README COPYRIGHT FUJITSU LIMITED 2018 */
mcexec でのシグナル応答とfork 処理との衝突回避機能テストセットREADME
(1) テストの実行方法
以下の手順でテストを実行する
1. $HOME/.mck_test_configを用意する
当該ファイルは、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを
$HOMEにコピーし、適宜編集する
2. ストレステストバイナリを用意し、./run.sh内のSTRESSBIN定義を適宜変更する
3. ./run.shを実行する
(2) テスト項目詳細
Issue#882で指摘されたテストプログラムを利用する項目
CT1001 プログラム終了後にMcKernelのプロセス残留がない事を確認する。
CT1002 プログラム終了後にMcKernelのスレッド残留がない事を確認する。
CT1003 プログラム終了後にLinuxにmcexecの残留が無い事を確認する。
なお、Issue#882はタイミング依存の問題があるため、5回以上の複数回実施で問題がない
ことを確認する。
LTPを利用する項目
fork01 fork後に子プロセスのプロセスIDが正しいことを確認する。
fork02 fork後にwaitを行い、waitが子プロセスのPIDを返却することを確認する。
fork03 forkで生成した子プロセスが処理を行った後でもfork返却値に変化が無い
(親プロセス側の返却値で上書きされていない)ことを確認する。
fork04 forkで生成した子プロセスが環境変数を変更しても、親プロセス側の環境変数に変化が無いことを確認する。
fork07 forkした子プロセスに、親プロセスからファイルディスクリプタを引き継いでいることを確認する。
fork08 forkした複数の子プロセスが、それぞれ親プロセスから引き継いだファイル
ディスクリプタを別個に操作できることを確認する。(ある子プロセスがcloseしても別な子プロセスがI/O可能)
(3) 実行結果ログ
result.logファイル内に実行時のログを記載する。
実行に利用したIHK/McKernelは、IA版における下記の版数相当の
arm64版移植IHK/McKernelである。
IHK
commit d6fcbee8cb91f9ec4b49f97c918e696ac0335aaf
Author: Shiratori, Takehiro <fj0300es@aa.jp.fujitsu.com>
Date: Tue Oct 16 16:25:33 2018 +0900
McKernel
commit 6f9fef2b13447c74c36d15cf5ebd186f8395ccca
Author: Ken Sato <ken.sato.ty@hitachi-solutions.com>
Date: Tue Sep 25 10:05:41 2018 +0900
(4) 備考
特になし。
以上。

View File

@ -0,0 +1,6 @@
fork01
fork02
fork03
fork04
fork07
fork08

View File

@ -0,0 +1,116 @@
mcstop+release.sh ... done
mcreboot.sh -c 4-15 -m 4G@0,4G@1,4G@2,4G@3 -O ... done
SUCCESS kmsg
SUCCESS clear_kmsg
timeout -s 9 60 /opt/stress_test/src/killit -np 16 -t 4000 /opt/ppos//bin/mcexec /opt/stress_test/src/signalonfork -nosignal 1> /tmp/dtest.log 2>&1
SUCCESS mcexec
SUCCESS /opt/stress_test/src/killit -np 16 -t 4000 mcexec /opt/stress_test/src/signalonfork -nosignal
SUCCESS kmsg
mck-mcexec.sh: WARNING: kmsg isn't empty
=== kmsg begins ====
[ 6]: ERROR: forking host process
[ 3]: ERROR: forking host process
[ 11]: ERROR: forking host process
[ 10]: ERROR: forking host process
[ 2]: ERROR: forking host process
[ 0]: ERROR: forking host process
=== kmsg ends ====
SUCCESS ioctl 40000000 1
SUCCESS kmsg
SUCCESS 0 processes found
SUCCESS ioctl 40000000 2
SUCCESS kmsg
SUCCESS 0 threads found
SUCCESS mcexec not found
SUCCESS kmsg
SUCCESS clear_kmsg
timeout -s 9 60 /opt/stress_test/src/killit -np 16 -t 4000 /opt/ppos//bin/mcexec /opt/stress_test/src/signalonfork -nosignal 1> /tmp/dtest.log 2>&1
SUCCESS mcexec
SUCCESS /opt/stress_test/src/killit -np 16 -t 4000 mcexec /opt/stress_test/src/signalonfork -nosignal
SUCCESS kmsg
mck-mcexec.sh: WARNING: kmsg isn't empty
=== kmsg begins ====
[ 9]: ERROR: forking host process
[ 1]: fileobj_free(ffff800044330020 ffff8001c15d0900): free failed. -32
[ 3]: ERROR: forking host process
[ 11]: ERROR: forking host process
=== kmsg ends ====
SUCCESS ioctl 40000000 1
SUCCESS kmsg
SUCCESS 0 processes found
SUCCESS ioctl 40000000 2
SUCCESS kmsg
SUCCESS 0 threads found
SUCCESS mcexec not found
SUCCESS kmsg
SUCCESS clear_kmsg
timeout -s 9 60 /opt/stress_test/src/killit -np 16 -t 4000 /opt/ppos//bin/mcexec /opt/stress_test/src/signalonfork -nosignal 1> /tmp/dtest.log 2>&1
SUCCESS mcexec
SUCCESS /opt/stress_test/src/killit -np 16 -t 4000 mcexec /opt/stress_test/src/signalonfork -nosignal
SUCCESS kmsg
mck-mcexec.sh: WARNING: kmsg isn't empty
=== kmsg begins ====
[ 5]: ERROR: forking host process
[ 2]: ERROR: forking host process
[ 0]: set_host_vma(1000000b0000,190000,5) failed. -32
[ 0]: do_mmap:set_host_vma failed. -32
[ 8]: fileobj_free(ffff800642572960 ffff8001c15d0900): free failed. -32
=== kmsg ends ====
SUCCESS ioctl 40000000 1
SUCCESS kmsg
SUCCESS 0 processes found
SUCCESS ioctl 40000000 2
SUCCESS kmsg
SUCCESS 0 threads found
SUCCESS mcexec not found
SUCCESS kmsg
SUCCESS clear_kmsg
timeout -s 9 60 /opt/stress_test/src/killit -np 16 -t 4000 /opt/ppos//bin/mcexec /opt/stress_test/src/signalonfork -nosignal 1> /tmp/dtest.log 2>&1
SUCCESS mcexec
SUCCESS /opt/stress_test/src/killit -np 16 -t 4000 mcexec /opt/stress_test/src/signalonfork -nosignal
SUCCESS kmsg
mck-mcexec.sh: WARNING: kmsg isn't empty
=== kmsg begins ====
[ 11]: ERROR: forking host process
[ 7]: ERROR: forking host process
[ 4]: ERROR: forking host process
[ 1]: ERROR: forking host process
=== kmsg ends ====
SUCCESS ioctl 40000000 1
SUCCESS kmsg
SUCCESS 0 processes found
SUCCESS ioctl 40000000 2
SUCCESS kmsg
SUCCESS 0 threads found
SUCCESS mcexec not found
SUCCESS kmsg
SUCCESS clear_kmsg
timeout -s 9 60 /opt/stress_test/src/killit -np 16 -t 4000 /opt/ppos//bin/mcexec /opt/stress_test/src/signalonfork -nosignal 1> /tmp/dtest.log 2>&1
SUCCESS mcexec
SUCCESS /opt/stress_test/src/killit -np 16 -t 4000 mcexec /opt/stress_test/src/signalonfork -nosignal
SUCCESS kmsg
mck-mcexec.sh: WARNING: kmsg isn't empty
=== kmsg begins ====
[ 5]: ERROR: forking host process
[ 3]: ERROR: forking host process
[ 1]: ERROR: forking host process
=== kmsg ends ====
SUCCESS ioctl 40000000 1
SUCCESS kmsg
SUCCESS 0 processes found
SUCCESS ioctl 40000000 2
SUCCESS kmsg
SUCCESS 0 threads found
SUCCESS mcexec not found
CT1001-3: OK
fork01: OK
fork02: OK
fork03: OK
fork04: OK
fork07: OK
fork08: OK

View File

@ -0,0 +1,38 @@
#!/bin/sh
## run.sh COPYRIGHT FUJITSU LIMITED 2018 ##
USELTP=1
USEOSTEST=0
. ../../../../common.sh
STRESSBIN=
result=0
for i in `seq 1 5`
do
${STRESSBIN}/mck-mcexec.sh ${STRESSBIN}/killit -np 16 -t 4000 - ${STRESSBIN}/signalonfork -nosignal
if [ $? != 0 ]; then
result=-1
break
fi
done
if [ ${result} == 0 ]; then
echo "CT1001-3: OK"
else
echo "CT1001-3: NG"
fi
while read line
do
${MCEXEC} ${LTPBIN}/${line} > /dev/null
if [ $? == 0 ]; then
echo "${line}: OK"
else
echo "${line}: NG"
result=-1
fi
done < ./ltplist.txt
exit ${result}