【Issue#1021 動作確認】
□ テスト内容
1. procfs ファイルに対するファイルオペレーションのテスト
Issue#1021 の対応において、procfs の以下のファイル処理を変更している。
/proc/stat
/proc/pid/auxv
/proc/pid/cmdline
/proc/pid/maps
/proc/pid/status
/proc/pid/task/tid/stat
これらのファイルに対するファイルオペレーションとして、以下をテストする。
1) ファイルをopen(2)できること。
2) ファイルディスクリプタをdup(2)できること。
3) 1バイト単位にファイル終端までread(2)できること。
4) lseek(2) できること。(※2)
5) lseek(2) 後に、1024バイト単位に read(2) できること。最初の read(2)と内容が
一致していること。
6) close(2) できること。
7) dup(2) したファイルディスクリプタが EOF になっていること (5 の read(2) の
影響)。
8) dup(2) したファイルディスクリプタを lseek(2) できること。
9) dup(2) したファイルディスクリプタを read(2) し、ファイル全体を 1 回の read(2)
で読み込むことができること。また、最初の read(2) と内容が一致していること。
10) dup(2) したファイルを close(2) できること。
テストケースは以下の通りである。
C1021T01-C1021T10 /proc/stat に対する上記 1) - 10) のテスト
C1021T11-C1021T20 /proc/pid/auxv に対する上記 1) - 10) のテスト
C1021T21-C1021T30 /proc/pid/cmdline に対する上記 1) - 10) のテスト
C1021T31-C1021T40 /proc/pid/maps に対する上記 1) - 10) のテスト (※1, ※2)
C1021T41-C1021T50 /proc/pid/status に対する上記 1) - 10) のテスト
C1021T51-C1021T60 /proc/pid/rask/tid/stat に対する上記 1) - 10) のテスト
※1 /proc/pid/maps はユーザプログラムのメモリの使い方により非常に大きなファイル
になることがあるので、予め mmap を複数回行って4kB以上の read が発生するよう
にしておく。(McKernel 内のバッファが複数ページになる場合のテストを兼ねる)。
※2 /proc/pid/maps の読み込み中に情報が変化しても後続の read(2) に影響しない
ことを確認するため、/proc/pid/maps の lseek(2) 後に munmap(2) を行い、
McKernel の内部情報を変化させる。(後続の read(2) では、munmap 前の情報を
読み込む仕様)。
2. メモリリークが発生していないことの確認
C1021T61 kmemleak を用いて mcctrl の procfs 処理がメモリリークを起こして
いないことを確認する。
□ 実行手順
$ make test
McKernelのインストール先や、OSTEST, LTPの配置場所は、
$HOME/.mck_test_config を参照している
.mck_test_config は、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを
$HOMEにコピーし、適宜編集する
□ 実行結果
C1021.txt 参照。
全ての項目が OK となっていることを確認。