被試験装置におけるインタフェースに関連する不具合は、経験的に、通信のリトライ処理の失敗の場合、リトライアウト後のリカバリー処理の失敗の場合に多く検出される。このため、被試験装置のインタフェース試験においては、擬似的にインタフェース障害を発生させて、通信のリトライ処理、及び、リトライアウト後のリカバリー処理を評価する。
通信についてのリトライ処理およびリトライアウト処理について、例えば、インタフェースにおける断線障害が発生した例を用いて説明する。
例えば、送信装置が受信装置に対してライトコマンドを送信すると、受信装置が送信装置に対してコマンドレスポンスを送信する。コマンドレスポンスを受信した送信装置は、受信装置に対して複数のライトデータを送信する。複数のライトデータを受信した受信装置は、送信装置に対してステータスを送信する。ステータスを受信した送信装置は、受信装置に対してステータスレスポンスを送信する。以上により、送信装置と受信装置との間における通信は、正常に終了する。
しかし、例えば、送信装置が、インタフェースの不具合、例えば一時的な信号の切断により、コマンドレスポンスを受信できない場合がある。
この場合、ライトコマンドを送信した送信装置は、受信装置からのコマンドレスポンスを、予め定められたタイムアウト規定時間まで待つ。タイムアウト規定時間が経過すると、送信装置は、再度、ライトコマンドを送信する。換言すれば、送信装置は、タイムアウトを検出すると、ライトコマンドについてのリトライを実行する。リトライは、失敗した通信、例えばライトコマンドの送信を、再度実行することである。
送信装置は、以上の動作をリトライ回数分を繰り返しても、受信装置からのコマンドレスポンスを受信しなかった場合に、リトライに失敗したとして、リトライアウト処理を実行する。リトライ回数は、1回の通信の失敗につき、当該通信についてのリトライが繰り返される回数である。
ここで、タイムアウト規定時間は、インタフェースの規格において定められている、換言すれば、規格化されている。従って、インタフェース試験の評価者は、インタフェースの規格を調査すれば、予め知ることができる。
しかし、リトライアウトとなるリトライ回数は、規格化されていないために、殆ど全ての場合、予め知ることができない。換言すれば、リトライ回数は、個々の送信装置のベンダーに固有の値であり、公開されていない。これは、受信装置についても同様である。更に、経験的に、種々の事情から、個々の送受信装置毎に、リトライ回数が異なる場合もある。
従って、インタフェース試験の評価者は、個々の被試験装置について、リトライアウトを発生させるリトライ回数を推測してリトライ回数を設定した上で、インタフェース試験を実行することになる。リトライアウトの発生に失敗した場合、インタフェース試験の評価者は、リトライ回数を少しずつ変化させるように、手作業でリトライ回数をインタフェース試験装置に設定することを繰り返す必要がある。このため、個々の被試験装置について、繰り返しリトライ回数を推測し設定することは、インタフェース試験の評価者にとっての負担が非常に大きい。
なお、リトライ回数が判明していれば、(タイムアウト規定時間)×(リトライ回数)の演算により、リトライアウトとなる時間を算出することができる。しかし、前述したように、リトライ回数が不明であるので、リトライアウトとなる時間を算出することはできない。
開示のインタフェース試験装置及びインタフェース試験方法は、通信路の切断時間をインタフェース障害が発生するタイミングに設定することができるインタフェース試験装置及びインタフェース試験方法を提供する。
図1は、インタフェース試験装置の構成の一例を示す図である。
インタフェース試験装置1は、例えば、第1の送受信装置であるサーバ2と、第2の送受信装置であるディスク装置3との間に挿入される。第1の送受信装置は、サーバ2に限られない。第1の送受信装置は、他の送受信装置との間で信号を送受信する装置であれば良く、例えばホストコンピュータ等であって良い。第2の送受信装置は、ディスク装置3に限られない。第2の送受信装置は、他の送受信装置との間で信号を送受信する装置であれば良く、例えばコンピュータ等であって良い。
図1の例において、サーバ2は、例えば、ライトコマンドをディスク装置3に送信する送信装置であり、ディスク装置3からのコマンドレスポンスを受信する受信装置である。また、ディスク装置3は、ライトコマンドを受信する受信装置であり、サーバ2へコマンドレスポンスを送信する送信装置である。
サーバ2とディスク装置3は、通信路51及び52により接続される。通信路51は、サーバ2からディスク装置3へ信号を送信するパスである。通信路52は、通信路51とは通信の方向が異なるパスであって、ディスク装置3からサーバ2へ信号を送信するパスである。通信路51及び52は、例えば高速のシリアル信号を伝送する伝送路である。
なお、通信路51及び52は、インタフェース試験装置1の外部の部分と、インタフェース試験装置1の内部の部分とを含む。インタフェース試験装置1の外部の通信路51及び52は、例えば接続ケーブル又は接続コネクタである。インタフェース試験装置1の内部の通信路51及び52は、例えばインタフェース試験装置1の内部配線である。
インタフェース試験装置1は、スイッチ部11と、スイッチ制御部12と、パラメータ設定部13とを含む。スイッチ部11は、電気的なスイッチ111及び112を含む。スイッチ111及び112は、インタフェース試験装置1の内部の通信路51及び52を構成するインタフェース試験装置1の内部配線に接続される。
スイッチ部11は、スイッチ制御部12の制御に従って、サーバ2とディスク装置3との間に挿入される。換言すれば、図1に示すように、通信路51にスイッチ111が挿入され、通信路52にスイッチ112が挿入される。スイッチ111及びスイッチ112は、例えば、MOSFETにより構成されるバススイッチである。スイッチ111及びスイッチ112のオン及びオフは、スイッチ制御部12により制御される。
スイッチ部11は、サーバ2とディスク装置3との間における通信を可能とする状態又は通信を不可能とする状態のいずれかの状態とされる。通信を可能とする状態は、インタフェース障害が無い状態であり、サーバ2及びディスク装置3が正常動作する状態である。通信を不可能とする状態は、インタフェース障害が有る状態であり、サーバ2及びディスク装置3が正常動作しない状態である。
従って、スイッチ部11が通信を不可能とする状態である場合に、サーバ2が例えばリトライ処理及びリトライアウト処理を実行する可能性がある。スイッチ部11が通信を不可能とする状態が継続する時間が、切断時間Toffである。これに対して、スイッチ部11が通信を可能とする状態が継続する時間が、通信時間Tonである。
一方、パラメータ設定部13は、初期値格納部131と、増加量格納部132と、最大値格納部133と、通信時間格納部134と、テスト回数格納部135と、テスト間隔格納部136とを含む。初期値格納部131は、切断時間Toffについての予め定められた初期値t0を格納する。増加量格納部132は、切断時間Toffについての予め定められた増加量Δtを格納する。最大値格納部133は、切断時間Toffについての予め定められた最大値N・Δtを格納する。通信時間格納部134は、予め定められた通信時間Tonを格納する。テスト回数格納部135はテスト回数Tを格納する。テスト間隔格納部136はテスト間隔T0を格納する。
初期値t0は、被試験装置であるサーバ2が失敗した通信の1回のリトライの実行に要する時間、換言すれば、リトライ時間である。例えば、初期値t0は、サーバ2が、通信を不可能とする状態により、ライトコマンドの送信が正常に行われない場合に、ライトコマンドの送信の1回のリトライの実行に要する時間である。リトライは、失敗した通信を再度実行する動作である。なお、リトライ時間と、リトライのタイムアウト規定時間との関係については、図6を参照して後述する。
増加量Δtは、被試験装置であるサーバ2が失敗した通信の1回のリトライの実行に要する時間、換言すれば、リトライ時間である。従って、図1のインタフェース試験装置1において、増加量Δtは、初期値t0と等しい。
テスト回数Tは、切断時間Toffが初期値t0から最大値N・Δtに到達するまでを1回のテストとした場合における、当該テストの繰り返しの回数である。テスト回数Tは予め定められる。テスト間隔T0は、先行する1回のテストの終了から次回のテストの開始までの時間である。テスト間隔T0は予め定められる。
例えば、初期値t0は1ミリ秒(ms)、増加量Δtは1ミリ秒、最大値N・Δtは256ミリ秒である。テスト回数Tは、例えば100回〜1000回である。テスト間隔T0は、例えば5ミリ秒〜10ミリ秒である。なお、これらの数値は、一例であって、個々の被試験装置毎に設定される。
初期値t0、増加量Δt、最大値N・Δt、通信時間Ton、テスト回数T、テスト間隔T0は、インタフェース試験のパラメータである。インタフェース試験のパラメータは、インタフェース試験の開始に先立って、インタフェース試験の評価者の入力に従って、制御コンピュータ4から、パラメータ設定部13に格納される。これにより、インタフェース試験の評価者は、最初にインタフェース試験のパラメータをパラメータ設定部13に設定するのみで、インタフェース試験を実行することができる。
また、増加量Δtと初期値t0と等しくすることにより、規格化されたリトライ時間を増加の単位として徐々に切断時間Toffを増加させることができる。換言すれば、リトライアウトを発生した時点の切断時間Toffをリトライ時間で割ることにより、リトライアウトを発生した時点までに実行されたリトライの回数、換言すれば、リトライ回数を知ることができる。これにより、インタフェース試験の評価者は、インタフェース試験のパラメータを設定した後は、手動による介入をすることなく、インタフェース試験を実行することができる。
スイッチ制御部12は、パラメータ設定部13に格納されたパラメータに基づいて、スイッチ部11における前記通信を可能とする状態と通信を不可能とする状態との切替えの都度に、切断時間Toffを、予め定められた増加量だけ増加させるように、スイッチ部11を制御する。換言すれば、切断時間Toffは、スイッチ部11をオン及びオフを切替える都度に増加させられる。また、スイッチ制御部12は、パラメータ設定部13に格納されたパラメータに基づいて、スイッチ部11における通信を可能とする状態と通信を不可能とする状態とを交互に切替えるように、スイッチ部11を制御する。換言すれば、スイッチ制御部12は、スイッチ部11のオン及びオフを制御する。
これにより、図1のインタフェース試験装置1において、通信時間Tonと切断時間Toffとが交互に切替えられる。この時、切断時間Toffは、増加量Δtを増加の単位として、徐々に増加させられる。一方、通信時間Tonは、例えば一定とされる。
このために、スイッチ制御部12は、タイマ121と、時間増加制御部122とを含む。タイマ121は、インタフェース試験装置1におけるローカルなタイマである。タイマは、スイッチ制御部12により参照される。
時間増加制御部122は、パラメータ設定部13に格納された初期値t0と、パラメータ設定部13に格納された増加量Δtとに基づいて、切断時間Toffを決定する。時間増加制御部122は、切断時間Toffが予め定められた最大値N・Δtに到達した場合に、その後の最初の通信を可能とする状態から通信を不可能とする状態への切替えの際に、切断時間Toffを初期値t0にする。
これにより、スイッチ制御部12は、前記通信を可能とする状態と通信を不可能とする状態との切替えの都度に切断時間Toffを増加量Δtだけ増加させた後、通信を不可能とする状態へ切替えるように、スイッチ部11を制御する。この後、スイッチ制御部12は、増加させられた切断時間Toffが経過した場合に、通信を可能とする状態へ切替えるように、スイッチ部11を制御する。
スイッチ制御部12は、1回のテストにおいて、切断時間Toffと通信時間Tonとに従って、通信を不可能とする状態と通信時間に従って通信を可能とする状態とを交互に切替えるように、スイッチ部11を制御する。スイッチ制御部12は、切断時間Toffが予め定められた最大値N・Δtに到達した場合に、1回のテストを終了する。スイッチ制御部12は、1回のテストの終了の後に、テスト間隔T0を挟んで、次回のテストを行う。この時、切断時間Toffは初期値t0とされる。スイッチ制御部12は、1回のテストを繰り返しの単位として、テスト回数分のテストを実行する。
ここで、図1のインタフェース試験装置1においては、サーバ2とディスク装置3との間における通信を不可能とする状態は、スイッチ112をオフとすることにより実現されるものとする。スイッチ112をオフとすることにより、コマンドレスポンスの通過する通信路52が切断される。これを、図2において、通信路52に×印を付して示す。なお、スイッチ112により切断される信号は、ライトコマンドのコマンドレスポンス、又は、種々のコマンドに対するコマンドレスポンスに限られない。
換言すれば、スイッチ部11は、送信装置であるサーバ2に対する受信装置であるディスク装置3からの応答を切断することにより、サーバ2とディスク装置3との間における通信を不可能とする状態とされる。なお、スイッチ112により切断される信号は、応答に限られず、ディスク装置3からサーバ2へ送信される信号であれば良い。
このために、実際には、スイッチ制御情報が、当該パラメータと共に、制御コンピュータ4により、パラメータ設定部13に格納される。スイッチ制御情報は、インタフェース試験のパラメータがスイッチ111又はスイッチ112のいずれについての制御パラメータであるかを示す。図1のインタフェース試験装置1においては、スイッチ112を制御するためのパラメータであることを示すスイッチ制御情報が、パラメータ設定部13に格納される。
なお、サーバ2とディスク装置3との間における通信を不可能とする状態は、スイッチ111をオフとすることにより実現されるようにしても良い。換言すれば、スイッチ部11は、送信装置であるサーバ2からの通信を切断することにより、サーバ2とディスク装置3との間における通信を不可能とする状態にするようにしても良い。なお、スイッチ111により切断される信号は、ライトコマンド、又は、種々のコマンドに限られない。
また、サーバ2とディスク装置3との間における通信を不可能とする状態は、物理的にスイッチ111又は112を切断する以外の手段により実現するようにしても良い。例えば、通信路51又は52を論理的に切断するようにしても良い。又は、通信路51又は52により、サーバ2とディスク装置3との間で正常な信号の送受信が行われないようにしても良い。
以上のように、通信を不可能とする状態、換言すれば、通信の切断とは、被試験装置が通信を正常に終了することができない状態を生じる状態であれば良く、その原因は問われない。被試験装置は、通信を不可能とする状態を生じた原因を意識することは無い。被試験装置が通信を正常に終了することができない結果、被試験装置は、当該切断された通信を再度実行する。換言すれば、当該通信についてのリトライを実行する。
図2は、インタフェース試験の説明図であり、主として、被試験装置であるサーバ2の構成の一例を示す。
サーバ2は、送受信部21と、エラー発生検出部22と、エラー処理部23と、エラー出力格納部24とを含む。エラー処理部23は、リトライ処理部231と、正常動作復帰部232と、リトライアウト処理部233と、エラー報告処理部234とを含む。ディスク装置3は、送受信部31を含む。
サーバ2の送受信部21は、通信路51を介して、ディスク装置3の送受信部31に予め定められた信号を送信する。この信号は、前述したように、例えば、ライトコマンドである。送受信部21は、通信路52を介して、送受信部31から予め定められた信号を受信する。この信号は、前述したように、例えばコマンドレスポンスである。
エラー発生検出部22は、送受信部21を監視し、信号の送受信におけるエラーを検出する。例えば、エラー発生検出部22は、送受信部21が信号、例えばライトコマンドを送信すると、送受信部21が送受信部31からの応答信号、例えばコマンドレスポンスの受信を、タイムアウト規定時間まで待つ。タイムアウト規定時間が経過すると、エラー発生検出部22は、エラー発生の検出を、エラー処理部23に通知する。なお、前述したように、タイムアウト規定時間は、規格化されている。
エラー発生の検出が通知された場合、エラー処理部23において、リトライ処理部231が、送受信部21に監視対象であるライトコマンドのリトライを指示する。エラー発生検出部22は、リトライ、換言すれば、ライトコマンドの再度の送信も、前述と同様に、監視する。
このリトライにより送受信部21がタイムアウト規定時間内にコマンドレスポンスを受信すると、例えば、エラー発生検出部22は、コマンドレスポンスの受信を、エラー処理部23に通知する。コマンドレスポンスの受信が通知された場合、エラー処理部23において、リトライ処理部231は、正常動作復帰部232に、正常動作に復帰するための処理、換言すれば、リカバリー処理の実行を指示する。これに応じて、正常動作復帰部232はリカバリー処理を実行する。
一方、前記リトライによっても送受信部21がタイムアウト規定時間内にコマンドレスポンスを受信しない場合、リトライ処理部231は、リトライ回数分だけリトライを繰り返して実行する。リトライを繰り返す間に送受信部21がタイムアウト規定時間内にコマンドレスポンスを受信すると、前述したように、正常動作復帰部232がリカバリー処理を実行する。なお、前述したように、リトライ回数は予め知ることはできない。
リトライをリトライ回数分だけ繰り返しても送受信部21がタイムアウト規定時間内にコマンドレスポンスを受信しない場合、リトライ処理部231は、リトライアウトであると判断して、リトライアウト処理部233に、リトライアウト処理の実行を指示する。これに応じて、リトライアウト処理部233はリトライアウト処理を実行する。これにより、例えばリトライアウトである旨の出力がサーバ2の表示出力装置に表示出力される。また、リトライアウト処理部233からの指示に従って、エラー報告処理部234が、エラー出力格納部24にエラー情報を格納する。エラー情報は、例えば、リトライアウトが発生したこと、リトライアウトを発生するまでに実行されたリトライの回数、リトライアウトの時点におけるログ等を含む。インタフェース試験の評価者は、エラー出力格納部24のエラー情報を読み出すことにより、リトライアウトが発生した時のリトライ回数やログを得ることができる。
以下、図3〜図7を参照して、図1のインタフェース試験装置1による、図2のサーバ2についてのインタフェース試験について説明する。
図3は、インタフェース試験の説明図であり、特に、インタフェース試験装置1による、サーバ2とディスク装置3との間における通信の状態の切換えについて示す。なお、図3の場合、スイッチ部11において、通信路52を構成するスイッチ112がオフとされるものとする。
図3(A)は、ディスク装置3からのスイッチ部11への入力を模式的に表す。換言すれば、図3(A)は、ディスク装置3がサーバ2への信号を正常に出力している状態を示す。従って、ディスク装置3の出力する信号は、インタフェース試験装置1には、正常に到達する。
しかし、前述したように、スイッチ部11は、サーバ2とディスク装置3との間における通信を可能とする状態と通信を不可能とする状態とを交互に切替える。これに応じて、スイッチ部11の出力は、図3(B)に示すように変化する。
図3(B)は、スイッチ部11からサーバ2への出力を模式的に表す。換言すれば、図3(B)は、サーバ2がディスク装置3からの信号を正常に受信する場合と正常に受信しない場合が交互に繰り返される状態を示す。
例えば、スイッチ部11が通信を可能とする状態、換言すれば、ONである場合、スイッチ部11からサーバ2への出力は、図3(A)に示されるディスク装置3からのスイッチ部11への入力と等しくなる。これにより、ディスク装置3の出力する信号は、サーバ2に正常に到達する。
この後、スイッチ部11は、スイッチ制御部12により、スイッチ部11が通信を不可能とする状態、換言すれば、OFFに切替えられる。この場合、スイッチ部11からサーバ2への出力は、ディスク装置3からのスイッチ部11への入力が存在するにも拘らず、
存在しない。これにより、ディスク装置3の出力する信号は、サーバ2に正常に到達しない。換言すれば、サーバ2とディスク装置3との間における通信が切断される。通信が切断される期間が切断時間である。
図4は、インタフェース試験の説明図であり、特に、インタフェース試験における通信の切断について示す。
スイッチ制御部12は、前述したように、パラメータ設定部13に設定されたパラメータに従って、スイッチ部11をオン又はオフする。なお、図4の場合、前述したように、スイッチ部11において、通信路52を構成するスイッチ112がオフとされるものとする。
具体的には、スイッチ制御部12は、テスト間隔T0で、同一のテストを、テスト回数Tの分だけ繰り返す。従って、テスト#1〜テスト#Tが実行される。テスト間隔T0において、スイッチ部11は、例えばオンとされる。なお、テスト間隔T0において、スイッチ部11をオフとするようにしても良い。
1回のテストにおいて、通信時間Tonと、切断時間Toffとが交互に繰り返される。通信時間Tonは、スイッチ部11がオンとされることにより、サーバ2とディスク装置3との間の通信が可能とされる時間である。切断時間Toffは、スイッチ部11がオフとされることにより、サーバ2とディスク装置3との間の通信が不可能とされる時間である。
通信時間Tonは、例えば一定とされる。換言すれば、Ton(1)=Ton(2)=・・・Ton(N+1)である。ここで、例えば、Ton(1)は1回目の通信時間である。
これに対して、切断時間Toffは、1回のテストにおいて、スイッチ部11のオン及びオフの切替えの都度に、最大値N・Δtに達するまで、増加量Δtだけ増加される。切断時間Toffの初期値は、初期値t0とされる。従って、1回目の切断時間Toff(1)はt0であり、2回目の切断時間Toff(2)はt0+Δtである。
実際には、増加量Δtと初期値t0とは、等しい値とされる。従って、切断時間Toffの最大値N・Δtはt0+(N−1)Δtである。例えば、Nは256であり、Δt=t0は1ミリ秒である。
増加量Δt及び初期値t0は、サーバ2のリトライ時間に基づいて定まる時間である。概略的に言えば、増加量Δt及び初期値t0は、サーバ2のリトライ時間にほぼ等しい。しかし、当該時間内に1回のリトライが完了できることが要求される。従って、厳密には、増加量Δt及び初期値t0は、サーバ2のリトライ時間より、やや長い時間である。
一方、例えばNが256である場合、例えば、最大値256・Δtは、その時間内において、256回のリトライが実行できるが、257回は実行できない値であることが要求される。従って、厳密には、増加量Δt又は初期値t0と、サーバ2のリトライ時間との差分Sは、リトライ時間を、N=256で割った値よりも小さい時間である。なお、差分Sの値は、Nの値が256以外の値である場合には、Nの値に応じて変化する。
図5は、インタフェース試験の説明図であり、特に、通信路51及び52が正常である結果、サーバ2とディスク装置3との間における通信が正常である場合について示す。
サーバ2は、通信路51を介して、ディスク装置3に対してライトコマンドを送信する。ライトコマンドを受信したディスク装置3は、通信路52を介して、サーバ2に対してコマンドレスポンスを送信する。
コマンドレスポンスを受信したサーバ2は、通信路51を介して、ディスク装置3に対して複数のライトデータを送信する。複数のライトデータを受信したディスク装置3は、通信路52を介して、サーバ2に対してステータスを送信する。
ステータスを受信したサーバ2は、通信路51を介して、ディスク装置3に対してステータスレスポンスを送信する。以上により、サーバ2とディスク装置3との間における通信は、正常に終了する。
図6は、インタフェース試験の説明図であり、特に、通信路51及び52が正常でない結果、サーバ2とディスク装置3との間における通信が正常でない場合について示す。この場合、前述したように、スイッチ部11において、通信路52を構成するスイッチ112がオフとされるものとする。
サーバ2は、通信路51を介して、ディスク装置3に対して1回目のライトコマンド#1を送信する。ライトコマンド#1を受信したディスク装置3は、通信路52を介して、サーバ2に対して1回目のコマンドレスポンス#1を送信する。サーバ2は、ライトコマンド#1の送信の後、ライトコマンド#1に対するコマンドレスポンス#1の受信についての時間監視#1の処理を実行する。
しかし、前述したように、通信路52を構成するスイッチ112がオフであるので、サーバ2は、ライトコマンド#1に対するコマンドレスポンス#1を受信することができない。このため、サーバ2は、コマンドレスポンス#1についてのタイムアウト規定時間の経過、換言すれば、時間監視#1の処理のタイムアウトを検出する。なお、タイムアウト規定時間は、いずれの時間監視においても同一である。
ここで、図6から判るように、リトライ時間は、例えばリトライのタイムアウト規定時間、換言すれば、時間監視#1の処理のタイムアウトを検出する時間であり、前述したように、規格化される。
なお、リトライ時間を、例えばリトライのタイムアウト規定時間に、予め定められたマージン、例えばリトライによるライトコマンドを送信するための時間を加えた時間としても良い。このように、リトライ時間それ自体が、リトライのタイムアウト規定時間にマージンを加えた時間である場合には、増加量Δt及び初期値t0は、サーバ2のリトライ時間と等しい値であって良い。
タイムアウトを検出したサーバ2は、ライトコマンドの送信をリトライする。これにより、リトライ回数、換言すれば、ライトコマンドの送信の回数は、2回となる。具体的には、サーバ2は、ディスク装置3に対して2回目のライトコマンド#2を送信し、2回目のコマンドレスポンス#2の受信についての時間監視#2の処理を実行する。しかし、通信路52を構成するスイッチ112がオフであるので、サーバ2は、ライトコマンド#2に対するコマンドレスポンス#2を受信することができない。このため、サーバ2は、コマンドレスポンス#2についての時間監視#2の処理のタイムアウトを検出する。
同様に、サーバ2は、ライトコマンドの送信をリトライする。これにより、リトライ回数は、3回となる。具体的には、サーバ2は、ディスク装置3に対して3回目のライトコマンド#3を送信し、3回目のコマンドレスポンス#3の受信についての時間監視#3の処理を実行する。しかし、前述したように、サーバ2は、コマンドレスポンス#3を受信することができない。このため、サーバ2は、コマンドレスポンス#3についての時間監視#3の処理のタイムアウトを検出する。
この後、例えば、後述する図7のように、リトライ回数が5回と定められている場合において、サーバ2が5回目のライトコマンドを送信したにも拘らず、コマンドレスポンスについての時間監視の処理のタイムアウトを検出する。この場合、サーバ2は、リトライアウト処理を実行する。
一方、例えば、後述する図7のように、リトライ回数が5回と定められている場合において、サーバ2が、5回目のライトコマンドを送信した後に、コマンドレスポンスを受信する。この場合、サーバ2は、リカバリー処理を実行する。
図7は、インタフェース試験の説明図であり、特に、通信のリトライとリトライアウトについて示す。
なお、前述したように、初期値t0は1ミリ秒(ms)、増加量Δtは1ミリ秒、最大値N・Δtは256ミリ秒、テスト回数Tは100回、テスト間隔T0は10ミリ秒であるとする。
図7(A)において、最初に、インタフェース試験装置1のスイッチ制御部12により、スイッチ部11が、サーバ2とディスク装置3との間での通信が可能な状態とされる。換言すれば、スイッチ112がオンとされる。
この状態で、サーバ2とディスク装置3が、図5に示すように、通信を実行する。換言すれば、ライトコマンド、コマンドレスポンス、複数のライトデータ、ステータス、ステータスレスポンスの送受信が実行される。ステータスレスポンスを受信したサーバ2が再度ライトコマンドを送信する。これにより、サーバ2とディスク装置3は、図5に示す通信を繰り返す。
図5に示す通信の繰り返しにおいて、ディスク装置3があるライトコマンドを受信した後でかつコマンドレスポンスを送信する前のタイミングにおいて、通信時間Tonが経過したとする。これに応じて、スイッチ制御部12により、スイッチ部11が、サーバ2とディスク装置3との間での通信が不可能な状態とされる。換言すれば、スイッチ112がオフとされる。最初の通信の切断であるので、切断の時間は、初期値t0である1ミリ秒(ms)である。
この結果、サーバ2は、ライトコマンドを送信したにも拘らず、コマンドレスポンスを受信することができない。そこで、サーバ2は、ライトコマンドの送信についてリトライする。
前述したように、切断の時間はリトライ時間よりやや長い。換言すれば、サーバ2が1回目のリトライを実行した時点ではスイッチ112はオフであるが、その直後にスイッチ112がオンとされ、サーバ2が2回目のリトライを実行した時点ではスイッチ112はオンである。従って、サーバ2は、1回目のリトライによっては正常動作に復帰できないが、2回目のリトライによって正常動作に復帰する。
これにより、テスト結果としては、1回目の切断時間OFF#1において1回のリトライが実行されるがサーバ2は正常動作に復帰せず、その後の通信時間Tonにおいて、2回目のリトライによりリカバリー処理が実行されて、サーバ2は正常動作に復帰する。このテスト結果は記録されないが、エラー出力格納部24とは別に正常出力格納部を設けて、これに格納するようにしても良い。
次に、正常動作に復帰したサーバ2は、ディスク装置3との間で、図5に示す通信を繰り返す。更に、この通信の繰り返しにおいて、ディスク装置3があるライトコマンドを受信した後でかつコマンドレスポンスを送信する前のタイミングにおいて、通信時間Tonが経過したとする。これに応じて、スイッチ112がオフとされる。2回目の通信の切断であるので、切断の時間は、初期値t0にΔtを加算した2ミリ秒(ms)である。
サーバ2は、コマンドレスポンスを受信することができないので、ライトコマンドの送信についてリトライする。この場合、サーバ2が2回目のリトライを実行した時点ではスイッチ112はオフであるが、その直後にスイッチ112がオンとされ、サーバ2が3回目のリトライを実行した時点ではスイッチ112はオンである。従って、サーバ2は、3回目のリトライによって正常動作に復帰する。テスト結果としては、2回目の切断時間OFF#2において2回のリトライが実行されるがサーバ2は正常動作に復帰せず、その後の通信時間Tonにおいて、3回目のリトライによりリカバリー処理が実行されて、サーバ2は正常動作に復帰する。
次に、正常動作に復帰したサーバ2が図5に示す通信を繰り返す過程で、2回目の通信の切断と同様に通信時間Tonが経過して、スイッチ112がオフとされる。3回目の通信の切断であるので、切断の時間は、初期値t0に2Δtを加算した3ミリ秒(ms)である。この場合、サーバ2が3回目のリトライを実行した時点ではスイッチ112はオフであるが、サーバ2が4回目のリトライを実行した時点ではスイッチ112はオンである。従って、サーバ2は、4回目のリトライによって正常動作に復帰する。テスト結果としては、3回目の切断時間OFF#3において3回のリトライが実行されるがサーバ2は正常動作に復帰せず、その後の通信時間Tonにおいて、4回目のリトライによりリカバリー処理が実行されて、サーバ2は正常動作に復帰する。
次に、正常動作に復帰したサーバ2が図5に示す通信を繰り返す過程で、2回目の通信の切断と同様に通信時間Tonが経過して、スイッチ112がオフとされる。4回目の通信の切断であるので、切断の時間は、初期値t0に3Δtを加算した4ミリ秒(ms)である。この場合、サーバ2が4回目のリトライを実行した時点ではスイッチ112はオフであるが、サーバ2が5回目のリトライを実行した時点ではスイッチ112はオンである。従って、サーバ2は、5回目のリトライによって正常動作に復帰する。テスト結果としては、4回目の切断時間OFF#4において4回のリトライが実行されるがサーバ2は正常動作に復帰せず、その後の通信時間Tonにおいて、5回目のリトライによりリカバリー処理が実行されて、サーバ2は正常動作に復帰する。
次に、正常動作に復帰したサーバ2が図5に示す通信を繰り返す過程で、2回目の通信の切断と同様に通信時間Tonが経過して、スイッチ112がオフとされる。5回目の通信の切断であるので、切断の時間は、初期値t0に4Δtを加算した5ミリ秒(ms)である。この場合、サーバ2が5回目のリトライを実行した時点ではスイッチ112はオフである。従って、5回目の切断時間OFF#5において5回のリトライが実行されるがサーバ2は正常動作に復帰しない。
ここで、サーバ2のリトライ回数が5回と定められているとする。このリトライ回数は、前述したように、規格化されていないので、知ることができない。
リトライ回数の規定に従って、サーバ2は、6回目のリトライを実行せず、リカバリー処理も実行しない。従って、サーバ2は、正常動作に復帰しない。これに代えて、サーバ2は、リトライアウト処理を実行する。
これにより、テスト結果としては、5回目の切断時間OFF#5において5回のリトライが実行されるがサーバ2は正常動作に復帰せず、その後、リトライアウト処理が実行される。このテスト結果は、エラー出力格納部24に出力される。更に、6回目以降の切断時間OFF#6・・においても、同様に、5回のリトライが実行されるがサーバ2は正常動作に復帰せず、リトライアウト処理が実行されたことを示すテスト結果が得られる。
以上により、例えばテスト回数T=100であるテストについて、切断時間OFF#1〜切断時間OFF#4についてのリトライアウト処理の記録は連続して存在しないが、切断時間OFF#5〜切断時間OFF#100についてのリトライアウト処理の記録が連続して存在するという記録が、エラー出力格納部24に得られる。これが正しいエラー情報である。
この結果、被試験装置であるサーバ2のリトライ回数が5回であることを知ることができる。また、被試験装置であるサーバ2は、5回のリトライを正常に実行し、4回のリカバリー処理を正常に実行したことを知ることができる。
ここで、サーバ2及びディスク装置3の動作は、インタフェース試験装置1の動作とは非同期である。換言すれば、ライトコマンド及びそのコマンドレスポンスの送信されるタイミングと、スイッチ部11による通信路51及び52の切断のタイミングとは、相互に独立とされる。これにより、インタフェース試験の評価者は、最初にインタフェース試験のパラメータをパラメータ設定部13に設定するのみで、その後は手動による介入をすることなく、インタフェース試験を実行することができる。
しかし、実際には、図7(A)において説明したように、ディスク装置3があるライトコマンドを受信した後でかつコマンドレスポンスを送信する前のタイミングにおいて、通信時間Tonが経過してスイッチ112がオフするとは限らない。また、その時の切断の時間が初期値t0=1ミリ秒(ms)であるとは限らない。
そこで、スイッチ制御部12は、図7(B)に示すように、テスト間隔T0を経過した後、同様のテストを繰り返すことにより、図4に示すテスト#1〜#Tを実行する。これにより、テスト#1〜#Tのいずれかにおいて、図7(A)に示す状態となることが、高い確率で期待できる。
例えば、A回目のテスト#Aにおいて、図7(A)に示す状態となったとする。この場合、テスト#Aにおいて得られエラー出力格納部24に格納されたエラー情報は、切断時間OFF#1〜切断時間OFF#4についてのリトライアウト処理の記録は連続して存在せず、かつ、5回目の切断時間OFF#5において5回のリトライが実行され、その後、リトライアウト処理が実行されたこと、及び、6回目以降の切断時間OFF#6・・においても、同様にリトライアウト処理が実行されたことを示す。これが、前述したように、正しいエラー情報、換言すれば、図7(A)に示す状態になった場合のエラー情報である。これにより、インタフェース試験の評価者は、A回目のテスト#Aにおいて、図7(A)に示す状態となり、リトライ回数は5回であることを知ることができる。
図8は、インタフェース試験装置が実行するインタフェース試験処理フローである。
インタフェース試験の開始に先立って、制御コンピュータ4が、インタフェース試験装置1のパラメータ設定部13に、初期値t0、増加量Δt、最大値N・Δt、通信時間Ton、テスト回数T、テスト間隔T0を格納する。
これに応じて、スイッチ制御部12は、パラメータ設定部13から、初期値t0、増加量Δt、最大値N・Δt、通信時間Ton、テスト回数T、テスト間隔T0を読み込み(ステップS1)、保持する。
この後、スイッチ制御部12は、スイッチ部11において、通信路51を構成するスイッチ111及び通信路52構成するスイッチ112をオンとする(ステップS2)。これにより、通信路51及び52を介しての通信が可能な状態とされる。また、スイッチ制御部12は、通信時間Tonの経過を監視する。
一方、サーバ2は、図5及び図6に示すように、ディスク装置3との間での通信を開始する。これにより、サーバ2とディスク装置3との間における通信は、図5に示すように実行される。
この後、スイッチ制御部12は、テスト回数に「1」を設定し、テスト間隔T0の経過の監視を開始する(ステップS3)。
テスト間隔T0が経過した場合、スイッチ制御部12は、切断時間Toffに初期値t0を設定し、通信時間Tonの経過の監視を開始する(ステップS4)。
通信時間Tonが経過した場合、スイッチ制御部12は、サーバ2とディスク装置3との間の通信を切断し、切断時間Toffの経過の監視を開始する(ステップS5)。具体的には、スイッチ制御部12は、サーバ2とディスク装置3との間の通信の切断のために、スイッチ制御部12は、通信路52を構成するスイッチ112をオフとする。
これにより、サーバ2とディスク装置3との間において、図6に示すように、ディスク装置3からのサーバ2へのコマンドレスポンスが切断される。この結果、サーバ2は、コマンドレスポンスを受信することができないので、ライトコマンドの送信についてリトライする。
更に、この場合において、切断時間Toffが(リトライ時間)×(リトライ回数)よりも長い場合、サーバ2は、リトライをリトライ回数分だけ繰り返してもコマンドレスポンスを受信することができない。そこで、サーバは、リトライアウトであると判断して、リトライアウト処理を実行して、エラー情報をエラー出力格納部24に格納する。
切断時間Toffが経過した場合、スイッチ制御部12は、ステップS5において切断した通信路52を復旧し、通信時間Tonの経過の監視を開始する(ステップS6)。具体的には、スイッチ制御部12は、サーバ2とディスク装置3との間の通信の復旧のために、スイッチ制御部12は、通信路52を構成するスイッチ112をオンとする。
これにより、サーバ2は、図5に示すように、ディスク装置3からのコマンドレスポンスを受信する。この結果、サーバ2は正常動作に復帰する。
この後、スイッチ制御部12は、現時点での切断時間Toffが最大値N・Δtか否かを判断する(ステップS7)。切断時間Toffが最大値N・Δtでない場合(ステップS7 No)、スイッチ制御部12は、現時点での切断時間Toffに増加量Δtを加えた値を新たな切断時間Toffとした上で(ステップS8)、ステップS5を繰り返す。これにより、切断時間Toffは、スイッチ部11において通信を可能とする状態と前記通信を不可能とする状態との切替えの都度に、増加量Δtづつ増加する。なお、切断時間Toffを増加させるタイミングは、変更可能である。
切断時間Toffが最大値N・Δtである場合(ステップS7 Yes)、スイッチ制御部12は、テスト回数がテスト回数Tであるか否かを判断する(ステップS9)。テスト回数がテスト回数Tでない場合(ステップS9 No)、スイッチ制御部12は、現時点でのテスト回数に「+1」を加えた値を新たなテスト回数とし、通信時間Tonが経過した後にテスト間隔T0の経過の監視を開始し(ステップS10)、ステップS4を繰り返す。
前述したように、テスト回数T分だけのテストを繰り返しても、正しいエラー情報が得られるとは限らない。この場合、例えば、最大値についてのNの値を256から1024に変更し、テスト回数Tを100から1000に変更して、インタフェース試験を繰り返す。この場合でも、インタフェース試験の評価者の負担は、最初にインタフェース試験のパラメータを設定し、次にパラメータを変更するのみで済む。