59 lines
3.0 KiB
Plaintext
59 lines
3.0 KiB
Plaintext
【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 となっていることを確認。
|