VSE により、十分に定義された境界に沿って、プロセス、サービス、またはそれらの一部をスタブ アウトできます。 これらのプロセスおよびサービスの内部要素は、カスタム ユーザ定義ルールに従って DevTest によって実行されるレイヤと置換できます。 DevTest が実行するこれらのレイヤは、モデルと呼ばれます。 通常、これらのルールのデフォルトの開始点は、ライブ システムのインタラクションの記録から取得されます。
DevTest は、すでに、HTTP プロトコル(Web アプリケーションおよび Web サービスの仮想化を実現可能)、JMS、および JDBC に対して VSE をある程度までサポートしています。 エージェントは、サーバ プロセスの内部から直接仮想化を可能にする API を提供するため、仮想化はプロトコルに依存しません。 仮想化は、HTTP、JMS、JDBC だけでなく、RMI、EJB、または任意のカスタム Java オブジェクトに対しても有効にできます。
DevTest(またはエージェントのその他のクライアント)は、AgentClient.getInstance().getVSEClient() によって取得される com.itko.lisa.remote.client.VSEClient で定義された以下の API を使用して、この仮想化を実現できます。
注: エージェントの JavaDocs で、このクラスに関する詳細情報を表示できます。 JavaDocs は、LISA_HOME\doc ディレクトリにあります。
/** * 実装が true の場合、名前が指定した正規表現に一致するすべてのクラス/インターフェースの名前のリスト、または、 * 名前が指定した正規表現に一致するクラス/インターフェースを拡張/実装するすべてのクラス/インターフェースの名前のリスト * を返します。 アノテーションの検索は、以下の構文でサポートされています。 * class regex@annotation regex (e.g. ".*.Remote@.*.Stateless"). * @param agentInfo * @param regex * @param impl * @return */ public String[] getMatchingClasses(IAgentInfo info, String regex, boolean impl) throws JMSInvocationException /** * すべての仮想化されたメソッドに対してレコーディング モードで onFrameRecord が呼び出され、 * すべての仮想化されたメソッドに対して再生モードで onFramePlayback メソッドが呼び出される * 指定したエージェントに VSE コールバックを登録します。 * @param info * @param callback */ public void registerVSECallback(IAgentInfo info, IVSECallback callback); /** * 指定したエージェントへの VSE コールバックの登録を解除します。 * @param info * @param callback */ public void unregisterVSECallback(IAgentInfo info, IVSECallback callback); /** * 指定したエージェントで仮想化記録コールバックのコールを起動します。 * @param agentInfo * @throws RemoteException */ public void startVSERecording(IAgentInfo agentInfo) throws JMSInvocationException /** * 指定したエージェントで仮想化再生コールバックのコールを起動します。 * @param agentInfo * @throws RemoteException */ public void startVSEPlayback(IAgentInfo agentInfo) throws JMSInvocationException /** * 指定したエージェントで仮想化を停止します。 * @param agentInfo * @throws RemoteException */ public void stopVSE(IAgentInfo agentInfo) throws JMSInvocationException /** * 指定したエージェントで指定したクラス/インターフェースおよびそのすべての子孫を仮想化します。 * @param agentInfo * @param className * @return */ public void virtualize(IAgentInfo agentInfo, String className) throws JMSInvocationException
コールバック API のインターフェースは、com.itko.lisa.remote.vse.IVSECallback によって定義されており、以下のメソッドが定義されています。
/** * これは、メソッドの仮想化がコールされたときに、VSE レコーディングがオンになっているエージェント * によって呼び出されるメソッドです。 VSE フレームには、既存の記録されたフレームと照合し、その結果(および参照引数によって) * すべての情報が格納されます。 * @param frame * @throws RemoteException */ void onFrameRecord(VSEFrame frame) throws RemoteException; /** * これは、メソッドの仮想化がコールされたときに、VSE 再生がオンになっているエージェント * によって呼び出されるメソッドです。 VSE フレームには、既存の記録されたフレームと照合し、その結果(および参照引数によって) * を適切に設定できるようにするために必要なすべての情報が * 格納されます。 * @param frame * @return * @throws RemoteException */ VSEFrame onFramePlayback(VSEFrame frame) throws RemoteException;
最後に、com.itko.lisa.remote.vse.VSEFrame オブジェクトは、以下のプロパティのゲッターとセッターを備えた POJO です。
/** このフレームの一意の識別子を取得/設定します */ public String getFrameId(); public void setFrameId(String frameId); /** このフレームの送信元のエージェント ID */ public long getAgentGuid(); public void setAgentGuid(long agentId); /** このフレーム メソッドが呼び出されたスレッド名 */ public String getThreadName(); public void setThreadName(String threadName); /** このフレーム メソッドが呼び出されたクラスの名前 */ public String getClassName(); public void setClassName(String className); /** VM のライフスパンに対してオブジェクトを追跡する一意の識別子 */ public String getSourceId(); public void setSourceId(String srcId); /** このフレームを格納している最も内側のセッションにスコープされたプロトコルのセッション ID */ public String getSessionId(); public void setSessionId(String sessionId); /** 呼び出されたメソッドの名前 */ public String getMethod(); public void setMethod(String method); /** 呼び出されたメソッドの XStream が実行された引数の配列 */ public String[] getArgumentsXML(); public void setArgumentsXML(String[] argumentsXML); /** 呼び出されたメソッドの XStream が実行された結果 */ public String getResultXML(); public void setResultXML(String resultXML); /** メソッドが呼び出された(サーバ)時間 */ public long getTime(); public void setTime(long time); /** メソッドの実行に要した時間 */ public long getClockDuration(); public void setClockDuration(long duration); /** 再生モードで目的の結果を計算するために、getCode と ResultXML のどちらを使用するのかを指定します */ public boolean isUseCode(); public void setUseCode(boolean useCode); /** * isUseCode が true の場合にサーバで実行するコード。 オブジェクト($0)およびメソッドの引数($1、$2 など) * にアクセスできる任意のコードを指定できます */ public String getCode(); public void setCode(String code);
|
Copyright © 2014 CA Technologies.
All rights reserved.
|
|