【Issue#1031 動作確認】 Issue#1031が解決され、既存機能に影響がないことをIssueで報告されたテストプログラム(1項目)と、 McKernelでのsigaction()の基本動作確認(10項目)の計11項目のテストによって確認した。 なお、各テストの実行結果は./result.log として格納している。 1. Issueで報告されたテストプログラムによる確認 ・Issue#1031 (https://postpeta.pccluster.org/redmine/issues/1031) 報告で使用されたテストプログラムを用いて、現象が再現しないことを確認した。 実行時の出力を./result.log に記載している 2. McKernelでのsigaction()の基本動作確認 以下の内容で、Issue#1031による変更が既存機能に影響しないことを確認した。 基本動作確認の詳細を以下に示す。 (1) テストの実行方法 以下の手順でテストを実行する 1. Makefileの変数MCK_DIRの内容を、McKernelがインストールされているディレクトリに変更する 2. sh make test を実行する (2) テスト項目 CT_001: SIG_RESETHAND 指定時の動作 1. SIG_RESETHANDを指定したsigaction()でSIG_USR1にハンドラを設定 2. 自身にSIGUSR1を送る 3. 1.で登録したハンドラが呼び出される 4. 自身にSIGUSR1を送る 5. 1.で登録したハンドラが呼び出されず、プロセスが終了する CT_002: SIG_RESETHAND 未指定時の動作 1. SIG_RESETHANDを指定しないsigaction()でSIGUSR1にハンドラを設定 2. 自身にSIGUSR1を送る 3. 1.で登録したハンドラが呼び出される 4. 自身にSIGUSR1を送る 5. 1.で登録したハンドラが呼び出される CT_003: SIG_RESETHANDO 指定ハンドラへの上書き登録時の動作 1. SIG_RESETHANDを指定したsigaction()でSIG_USR1にハンドラを設定 2. SIG_RESETHANDを指定しないsigaction()でSIG_USR1にハンドラを設定 3. 自身にSIGUSR1を送る 4. 2.で登録したハンドラが呼び出される 5. 自身にSIGUSR1を送る 6. 2.で登録したハンドラが呼び出される CT_004: 複数のsig_numへのハンドラ登録時の動作 1. SIG_RESETHANDを指定したsigaction()でSIG_USR1にハンドラを設定 2. SIG_RESETHANDを指定したsigaction()でSIG_USR2にハンドラを設定 3. 自身にSIGUSR1を送る 4. 1.で登録したハンドラが呼び出される 5. 自身にSIGUSR2を送る 6. 2.で登録したハンドラが呼び出される 7. 自身にSIGUSR1を送る 8. 1.で登録したハンドラが呼び出されず、プロセスが終了する CT_005: 複数回(非上書き)のSIG_RESETHAND 指定時の動作 1. SIG_RESETHANDを指定したsigaction()でSIG_USR1にハンドラを設定 2. 自身にSIGUSR1を送る 3. 1.で登録したハンドラが呼び出される 4. SIG_RESETHANDを指定したsigaction()でSIG_USR1にハンドラを設定 5. 自身にSIGUSR1を送る 6. 4.で登録したハンドラが呼び出される 7. 自身にSIGUSR1を送る 8. 4.で登録したハンドラが呼び出されず、プロセスが終了する CT_006: 設定中のハンドラ情報の取得 (上書き時) 1. SIG_RESETHANDを指定したsigaction()でSIG_USR1にハンドラを設定 2. sigaction(SIGUSR1, NULL, &act) で設定情報を取得できる 3. SIG_RESETHANDを指定しないsigaction()でSIG_USR1にデフォルトハンドラを設定 4. sigaction(SIGUSR1, NULL, &act) で3.で指定した設定情報を取得できる CT_007: 設定中のハンドラ情報の取得 (デフォルトに戻った時) 1. SIG_RESETHANDを指定したsigaction()でSIG_USR1にハンドラを設定 2. 自身にSIGUSR1を送る 3. 1.で登録したハンドラが呼び出される 4. sigaction(SIGUSR1, NULL, &act) で設定情報を取得できる CT_008: 不正なsig_numへのハンドラ登録 1. 範囲外(上限、下限)のsignumへのハンドラ登録が失敗する 2. SIGKILL, SIGSTOPへのハンドラ登録が失敗する CT_009: SIGKILL, SIGSTOPのハンドラ情報の取得 1. sigaction(SIGKILL, NULL, &act) で設定情報を取得できる 2. sigaction(SIGSTOP, NULL, &act) で設定情報を取得できる CT_010: sig_numの有効確認 1. sigaction(SIGUSR1, NULL, NULL) が成功する(有効) 2. sigaction(SIGKILL, NULL, NULL) が成功する(有効) 3. sigaction(SIGSTOP, NULL, NULL) が成功する(有効) 4. sigaction(_NSIG, NULL, NULL) が失敗する(無効) (3) 結果 テストプログラムの実行結果をresult.log に示す。 上記の11項目がPASSしていることを確認した。