ブロックされているアクションの検出

Performance Test Execution Engine は、アクションがブロックされたことを検出する機能を備えています。 ブロックされた状態の定義は、アクションの作成者が指定します。これは、アクションの実行中にエンジン・ワーカー・スレッドがブロックされたと見なされるまで、エンジン・ワーカー・スレッドを無応答にすることができる時間として定義されます。 Performance Test Execution Engine では、ブロックされているアクションの検出が、問題判別ログの「詳細 (高)」レベルでログに記録されます。 最も単純な事例では、実行がハングアップした場合、「停止」をクリックして実行を終了すると、ブロックされているアクションが問題判別ログの検査をにより自動検出されます。

ブロックされているアクションの検出以外に、アクションがブロックされていることをプロトコルに通知することもできます。 ブロックされているエンジン・スレッドへの参照がアクションと共に提供されるので、プロトコルは、ブロックされているエンジン・スレッドにメッセージを送信することが可能になります。ブロックされているアクションが通知されると、プロトコルは、アクションの再試行、アクションの完了、次のアクションへの移動、仮想ユーザーによる実行の終了のいずれかを実行できます。

IKAction インターフェースは、ブロックされているアクション条件に対してプロトコルが反応するためのエントリー・ポイントとして、以下のメソッドを提供します。

public void blocked() blocked() を入力すると、KAction オブジェクトの状態は破壊される可能性があります。 プロトコルの作成者は、このアクションに関連付けられているいずれかまたはすべてのデータは安全でないと見なす必要があります。 さらに、execute() の実行中に保持されていたすべてのロックは、解放されています。

public long getBlockedTimeout()

ブロックされているアクションのタイムアウト値を返します。 デフォルトは 0 で、ブロックを無期限に続行するという意味です。

public WorkerThread getWorkerThread()

ブロックされている状態が検出されたときにアクションを実行しているエンジン WorkerThread を返します。

IEngine

Performance Test エンジン・インターフェースにより、public boolean createWorker() が追加されました。 createWorker() の目的は、ブロックされているアクションを実行していることが判明したワーカーを除去したことに対応して、標識スレッドのモニター・ワーカーがワーカーを新規に追加できるようにすることです。


フィードバック