Add test cases for #998 and #999

Refs: #998 #999
Change-Id: I86f8857594b2446c833c1e59d53b484ef022a9ee
This commit is contained in:
Tomoki Shirasawa
2018-08-01 16:06:48 +09:00
committed by Masamichi Takagi
parent c716e87c53
commit ec99adde4a
4 changed files with 145 additions and 0 deletions

View File

@ -0,0 +1,70 @@
#!/bin/sh
BIN=
SBIN=
OSTEST=
BOOTPARAM="-c 1-7,9-15,17-23,25-31 -m 10G@0,10G@1 -r 1-7:0+9-15:8+17-23:16+25-31:24"
if [ -f ../../../config.h ]; then
str=`grep "^#define BINDIR " ../../../config.h | head -1 | sed 's/^#define BINDIR /BINDIR=/'`
eval $str
fi
if [ "x$BINDIR" = x ];then
BINDIR="$BIN"
fi
if [ -f ../../../Makefile ]; then
str=`grep ^SBINDIR ../../../Makefile | head -1 | sed 's/ //g'`
eval $str
fi
if [ "x$SBINDIR" = x ];then
SBINDIR="$SBIN"
fi
if [ -f $HOME/ostest/bin/test_mck ]; then
OSTESTDIR=$HOME/ostest/
fi
if [ "x$OSTESTDIR" = x ]; then
OSTESTDIR="$OSTEST"
fi
if [ ! -x "$OSTESTDIR"/bin/test_mck ]; then
echo no ostest found $OSTEST >&2
exit 1
fi
TESTMCK="$OSTESTDIR/bin/test_mck"
if [ ! -x $SBINDIR/mcstop+release.sh ]; then
echo mcstop+release: not found >&2
exit 1
fi
echo -n "mcstop+release.sh ... "
sudo $SBINDIR/mcstop+release.sh
echo "done"
if [ ! -x $SBINDIR/mcreboot.sh ]; then
echo mcreboot: not found >&2
exit 1
fi
echo -n "mcreboot.sh $BOOTPARAM ... "
sudo $SBINDIR/mcreboot.sh $BOOTPARAM
echo "done"
if [ ! -x $BINDIR/mcexec ]; then
echo mcexec: not found >&2
exit 1
fi
for i in {1..10}; do
for j in {1..100}; do
$BINDIR/mcexec "$TESTMCK" -s wait4 -n 3 > testmck.log 2>&1
if [ $? != 0 ]; then
echo "****** ERROR ******"
cat testmck.log
exit 1
fi
echo -n .
done
echo
echo "*** $i"00" ****************************"
done
echo "*** C998+999 OK ****************************"

View File

@ -0,0 +1,29 @@
Script started on Wed Aug 1 15:08:25 2018
bash-4.2$ make test
mcstop+release.sh ... done
mcreboot.sh -c 1-7,9-15,17-23,25-31 -m 10G@0,10G@1 -r 1-7:0+9-15:8+17-23:16+25-31:24 ... done
....................................................................................................
*** 100 ****************************
....................................................................................................
*** 200 ****************************
....................................................................................................
*** 300 ****************************
....................................................................................................
*** 400 ****************************
....................................................................................................
*** 500 ****************************
....................................................................................................
*** 600 ****************************
....................................................................................................
*** 700 ****************************
....................................................................................................
*** 800 ****************************
....................................................................................................
*** 900 ****************************
....................................................................................................
*** 1000 ****************************
*** C998+999 OK ****************************
bash-4.2$ exit
exit
Script done on Wed Aug 1 15:48:56 2018

View File

@ -0,0 +1,14 @@
CC = gcc
TARGET=
CPPFLAGS =
LDFLAGS =
all:
test: all
@sh ./C998+999.sh
clean:
rm -f $(TARGET) *.o

View File

@ -0,0 +1,32 @@
【Issue#998 Issue#999 動作確認】
□ テスト内容
Issue#998 で指摘された現象は、既に解消している。
これは、IKC3のサポートによりシステムコールデリゲーションの実装が変更され、
システムコール要求がキューによって管理されるようになったため取りこぼしが
発生しないようになっているためである。
Issue#999 で指摘された現象は、既に解消されている。
これは、シグナルをMcKernelからmcexecに通知するスレッドをシグナル送信元から
シグナル受信先に変更されたことによって、シグナルの通知とシステムコール要求の
順序が入れ替わることが無くなったためである。
以上により、Issue#998とIssue#999に対するプログラム修正は不要であるが、
現象が本当に解消されていることを指摘プログラムを用いて確認する。
C998+999 mcexec test_mck -s wait4 -n 3 を 1000 回(※)連続実行し、プログラムが
正常終了することを確認する。
※ McKernelの動作タイミングによって Issue#998 と Issue#999 の現象が発生したり
しなかったりしていたため、十分な繰り返しを行い、再発しない確認とする。
□ 実行手順
$ make test
実行できない場合は、C998+999.sh の以下の行を適切に書き換えた後に実行。
BIN= mcexec が存在するパス
SBIN= mcreboot.sh が存在するパス
OSTEST= OSTEST が存在するパス
□ 実行結果
C998+999.txt 参照。
すべての項目をPASSしていることを確認。