前のトピック: TCP次のトピック: CICS の記録(LINK DTP MRO)


TCP の仮想化

TCP トランスポート プロトコルでは、1 つ以上のクライアントと 1 つのサーバ間で RAW TCP/IP トラフィックを仮想化できます。 このトランスポートは HTTP プロトコルに類似しており、同じ機能の多くを使用します。

レコーディング時に、エンドポイント モードで HTTP を設定するのとまったく同様に TCP プロトコルを設定します。 リスンするソケット、ターゲット サーバ、および送信先を指定します。 このプロトコルは、クライアントとサーバ間でデータを転送し、そのデータを「リスン」して VSE トランザクションを作成します。

バイトから VSE トランザクションへの変換

要求または応答を構成しているすべてのもの、およびそれらの要求と応答を関連付ける方法を知るのは簡単ではありません。 TCP データには固有の構造がありません。 受信データ ストリームで要求を識別するには、要求区切り文字が必要です。 また、応答区切り文字は厳密には必要ありませんが、応答区切り文字も選択できます。

レコーダは、以下のルールを使用して要求と応答を特定し、要求と応答を一緒にトランザクションに関連付けます。

  1. 要求には 0 または 1 つの応答が続きます。
  2. 各応答は、完了した最新の要求とペアになります。
  3. 要求が完了していないことを要求区切り文字が示している場合でも、応答データを受信すると完了していると見なされます。
  4. 応答が完了していないことを応答区切り文字(存在する場合)が示している場合でも、要求データを受信すると完了していると見なされます。
  5. 応答データの受信時に、応答区切り文字によって応答の完了が検出された場合、それ以降の応答データは破棄されます。

以下に例を示します。

要求 1 - 要求 2 - 応答 A - 部分的な要求 3 - 応答 B - 要求 4 - 部分的な応答 C - 要求 5 - 応答 D と後続データ

このデータは、以下のようにトランザクションへと解析されます。

クライアントとサーバが同期要求/応答パラダイムに従っており、応答のない要求を処理する場合には、このシステムが機能します。 このシステムは、非同期通信、または複数の応答を持つ要求を処理しません。

 

会話の作成

デフォルトでは、VSE は、TCP サービス イメージを記録し、マシン名(または IP アドレス)および送信ソケットに基づいて会話を作成します。 送信ソケットが変更されるたびに、新しい会話が開始されます。 この動作を変更するには、[すべてのトランザクションをステートレスとして処理]チェック ボックスをオンにします。

 

標準の区切り文字

DevTest には以下の区切り文字があります。

レコードは行末で終了する

1 つ以上の改行文字によって、各要求/応答が終了します。 区切り文字自体は、要求/応答に含まれません。

レコードは固定長

各要求/応答は、特定のバイト数の長さです。

レコードを特定の文字によって区切る

カンマなどの特定の文字または文字のシーケンスによって、各要求/応答が終了します。 シーケンス全体が一致する必要があります。 区切り文字自体は、要求/応答に含まれません。 このオプションは、CSV ファイルのインポートに類似しています。

区切り文字は正規表現に一致する

正規表現に一致するバイト セットによって、各要求/応答が終了します。 区切り文字自体は、要求/応答に含まれません。

要求/応答に区切り文字が含まれていない場合(ほとんどの場合)、連続する区切り文字のセットは無視されます。

注: レコーディングが完了した後は、選択された区切り文字を編集できません。 モデル エディタでは、選択された区切り文字を変更できません。

 

[要求をテキストとして処理]および[応答をテキストとして処理]

要求をテキストとして処理]チェック ボックスと[応答をテキストとして処理]チェック ボックスは、要求データと応答データの解析方法を制御します。

要求をテキストとして処理

要求を VSE 要求のボディとして使用するかどうかを指定します。

要求をテキストとして処理

要求を VSE 要求のボディとして使用するかどうかを指定します。

 

トランザクション数が正しくない理由

トランザクション数は、常に少なくとも 1 ずつ遅延します。 TCP プロトコルは、完了したトランザクションを検出すると、次のトランザクションが開始されるまでそのトランザクションをキャッシュします。その理由は、応答後に、サーバが意図的にソケットを閉じる場合があるためです。 この状況が発生すると、TCP プロトコルはそれを検出し、応答に lisa.vse.close_socket_after_response=TRUE を設定します。 このプロパティが設定されると、VSE は、再生時に応答を送信した後、サーバ側のソケットを閉じます。

応答区切り文字を使用しない場合、トランザクション数はさらに 1 つ遅延します。 TCP プロトコルは、新しい要求が開始されるまで、応答が完了したことを知りません。 したがって、合計数に 2 つの差がある可能性があります。 レコーディングが完了すると、その数は正しくなります。