【Issue#1259 動作確認】
□ テスト内容
1. Large pageでマップされたメモリ領域でのxpmemの動作確認
C1259T01:
Large pageでマップされたメモリ領域に対してxpmem_attachを行った場合、
attach先の領域がxpmem_makeでページインされることを確認する
また、xpmemでもLarge pageが利用されることを確認する
C1259T02:
Large pageでかつ、最後のページがLarge pageサイズでアラインされていない
メモリ領域に対してxpmem_attachを行った場合、
xpmemでもLarge pageが利用されることを確認する
C1259T03:
Small pageでマップされたメモリ領域に対してxpmem_attachを行った場合、
xpmemでもSmall pageが利用されることを確認する
C1259T04:
small - large - small のように、異なるページサイズの複数のvm_rangeから
構成されるメモリ領域に対してxpmem_attach を行った場合、
xpmemでも同じ構成でLarge pageが利用されることを確認する
2. xpmemのテストスイートによる動作確認
xpmemに付属するテストスイートをMcKernelで実行し、PASSすることを確認する
3. xpmemの基本操作の確認
xpmemで操作するメモリ領域は、Large pageでマップする
XTP_001: 単一プロセスでのXPMEM操作
1. 実行したプロセスがxpmem_make -> xpmem_get -> xpmem_attach -> xpmem_detach -> xpmem_remove
XTP_002: 子プロセスでのXPMEM操作
1. 親プロセスがfork()
2. 子プロセスがxpmem_make -> xpmem_get -> xpmem_attach -> xpmem_detach ->xpmem_remove
3. 子プロセス終了後、親プロセスが終了
XTP_003: 親プロセスがmakeした共有領域への子プロセスによるXPMEM操作
1. 親プロセスがxpmem_make
2. fork()で子プロセスを作成
3. 子プロセスで、xpmem_get -> xpmem_attach -> 値(TEST_VAL)の設定 -> xpmem_detach
4. 子プロセスが終了
5. 親プロセスが、子プロセスによって設定された値(TEST_VAL)を確認
6. 親プロセスがxpmem_remove
XTP_004: fork()後に親プロセスがmakeした共有領域への子プロセスによるXPMEM操作
1. fork()で子プロセスを作成
2. 親プロセスがxpmem_make
3. 子プロセスで、xpmem_get -> xpmem_attach -> 値(TEST_VAL)の設定 -> xpmem_detach
4. 子プロセスが終了
5. 親プロセスが、子プロセスによって設定された値(TEST_VAL)を確認
6. 親プロセスがxpmem_remove
XTP_005: 子プロセスがxpmem_attach後、xpmem_detachをせずに終了
1. 親プロセスがxpmem_make
2. fork()で子プロセスを作成
3. 子プロセスで、xpmem_get -> xpmem_attach
4. 子プロセスが終了
5. 親プロセスがxpmem_remove
XTP_006: 子プロセスがXPMEM操作を行う時点で、xpmem_makeをした親プロセスが終了している
1. 親プロセスがxpmem_make
2. fork()で子プロセスを作成
3. 親プロセスが終了
4. 子プロセスで、xpmem_get (失敗)
5. 子プロセスが終了
XTP_007: xpmem_make 呼び出しの異常系
1. xpmem_make の第1引数に不正なアドレスを指定する (失敗)
2. 1度xpmem_make を実施したメモリ領域に対して、再度xpmem_make を行う (成功)
XTP_008: xpmem_get 呼び出しの異常系
1. xpmem_get の第1引数に不正なsegidを指定する (失敗)
2. 1度xpmem_get を実施したsegidで、再度xpmem_get を行う (成功)
XTP_009: xpmem_attach 呼び出しの異常系
1. xpmem_attach の第1引数に不正なapidを指定する (失敗)
2. 1度xpmem_attach を実施したapidで、再度xpmem_attach を行う (成功)
XTP_010: xpmem_detach 呼び出しの異常系
1. xpmem_detach の第1引数に不正なアドレスを指定する (成功)
2. 1度xpmem_detach を実施したメモリ領域に対して、再度xpmem_detach を行う (成功)
XTP_011: xpmem_remove 呼び出しの異常系
1. xpmem_remove の第1引数に不正なsegidを指定する (失敗)
2. 1度xpmem_remove を実施したsegidで、再度xpmem_remove を行う (失敗)
□ 実行手順
1. xpmemのインストールディレクトリをMakefileとC1259.sh中のXPMEM_DIRに記載する
2. xpmemのビルドディレクトリをC1259.sh中のXPMEM_BUILD_DIRに記載する
3. 下記の手順でテストを実行する
$ cd <mckernel>
$ patch -p0 < test/issues/1259/large_page.patch
(build mckernel)
$ cd test/issues/1259
$ make test
McKernelのインストール先や、OSTEST, LTPの配置場所は、
$HOME/.mck_test_config を参照している
.mck_test_config は、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを
$HOMEにコピーし、適宜編集する
□ 実行結果
x86_64_result.log, aarch64_result.log 参照。
すべての項目をPASSしていることを確認。