7.3.10 電文増幅プラグイン
機能
要求電文を増幅します。
形式
ANSI C,C++の形式
#include <esfrw.h> ESLONG plg_func(ESFRW_AMPL_IF *parm)
「plg_func」部分には、システム内で一意の名称を指定してください。
説明
電文増幅プラグインは、電文ファイルから読み込んだ要求電文を増幅します。
増幅パターンとして、以下の2つがあります。
-
電文追加
-
クライアント増幅
「電文追加」は、増幅した電文を、複製元と同じクライアント識別子で実行します。
「クライアント増幅」は、増幅した電文を、複製元と異なるクライアント識別子として実行します。
「電文追加」と「クライアント増幅」を組み合わせることもできます。この場合、「電文追加」によって電文を増幅します。また、増幅された電文を、さらに「クライアント増幅」によって増幅し、異なるクライアント識別子として実行します。
「電文追加」を行う場合は、本プラグインの戻り値としてESFRW_OK_RECALLを返却してください。この場合、当該電文の送信後、複製した電文(電文内容、電文引継領域など、すべて複製)を引数として、再度本プラグインを呼び出します。「電文追加」が不要となるまで、繰り返しESFRW_OK_RECALLを返却してください。
「クライアント増幅」を行う場合は、本プラグインの戻り値としてESFRW_OK又はESFRW_OK_RECALLを返却し、かつ「クライアント増幅数」に1以上の値を設定してください。この場合、指定された「クライアント増幅数」分、電文を複製し、別クライアントとして実行します。増幅したクライアントのクライアント識別子(client_id)の14~15バイト目は、増幅通番(ネットワークバイトオーダー)となります。
パラメタの内容
ESFRW_AMPL_IFのパラメタ内容
typedef struct es_frw_ampl_interface { ESULONG call_timing; …………… 呼び出し契機 char reserve1[4]; …………… 予備領域 ESFRW_COMMON *cominf; ………………… プラグイン共通情報 ESFRW_CONNECTION *conninf; ………………… コネクション情報 ESFRW_TELEGRAM *telinf; ………………… 電文情報 ESULONG tel_ampl_time; ………… 電文追加間隔 ESULONG clt_ampl_cnt; ………… クライアント増幅数 ESULONG *clt_ampl_time; ……… クライアント増幅間隔リスト ESULONG msgform; ………………… 電文形態 char reserve1[4]; …………… 予備領域 } ESFRW_AMPL_IF;
ESFRW_COMMONのパラメタ内容
typedef struct es_frw_cominfo { ESULONG run_mode; ………………… フェーズ char testid[32]; ……………… テスト識別子 char plg_name[32]; …………… プラグイン名称 ESULONG max_msg_sz ;……………… 最大電文サイズ ESULONG protocol; ………………… プロトコル一覧 ESULONG tel_filetype; …………… 電文ファイルの種別 ESULONG res_filetype; …………… 結果ファイルの種別 char sel_mode; ……………… 実行モード char reserve1[3]; …………… 予備 } ESFRW_COMMON;
ESFRW_CONNECTIONのパラメタ内容
typedef struct es_frw_connection { ESULONG protocol; ………………… プロトコル種別 char conntype; …………………… コネクション種別 char reserve1[3]; ……………… 予備 ESFRW_ADDR clt_addr; ………………… クライアントアドレス情報 ESFRW_ADDR srv_addr; …………………… サーバアドレス情報 ESFRW_CONTAINER *continf; …………………… 引継ぎ領域情報 } ESFRW_CONNECTION;
ESFRW_TELEGRAMのパラメタ内容
typedef struct es_frw_telinfo { ESULONG protocol; ……………………プロトコル種別 unsigned char msgtype; …………………… 電文種別 unsigned char msgform; …………………… 電文形態 char reserve1[2]; ……………… 予備 ESFRW_AREA head_area; ………………… 電文(HTTPヘッダ) ESFRW_AREA body_area; ………………… 電文(データ) ESFRW_ADDR src_addr; ………………… 送信元アドレス情報 ESFRW_ADDR dst_addr; ………………… 送信先アドレス情報 ESFRW_CONTAINER *continf; ………………… 引継ぎ領域情報 ESFRW_TELEGRAM *pair_telinf; …………… ペアリング電文情報 ESFRW_EXT_INF extinf; ………………… 電文拡張情報 char protoinf[128]; …………… 製品情報1(参照出来ません) void *protocol_telinf; ……… プロトコル固有情報 } ESFRW_TELEGRAM;
テーブル関連図
各テーブル間は以下のチェイン構造となります。
システム検証支援が値を設定するパラメタ項目
ESFRW_AMPL_IFのパラメタ項目
- call_timing
-
プラグインの呼び出し契機を設定します。以下になります。
ESFRW_TIMING_FILRED:電文ファイルからの電文読込み時
- cominf
-
プラグインに共通する情報(フェーズ、テスト識別子等)を格納しているESFRW_COMMONアドレスを設定します。
- conninf
-
呼び出し契機となったコネクションの情報(IPアドレス等)を格納したESFRW_CONNECTIONアドレスを設定します。
- telinf
-
電文の情報(サイズ等)を格納しているESFRW_TELEGRAMアドレスを設定します。電文追加により増幅された電文の場合、増幅元となる電文情報(電文内容、引継領域等)が設定されます。
- tel_ampl_time
-
ユーザが設定する項目です。システム検証支援はデフォルト値として、0を設定します。
- clt_ampl_cnt
-
ユーザが設定する項目です。システム検証支援はデフォルト値として、0を設定します。
- clt_ampl_time
-
ユーザが設定する項目です。システム検証支援はデフォルト値として、0を設定します。
- msgform
-
ユーザが設定する項目です。システム検証支援はデフォルト値として、ESFRW_MSGFORM_SYNC_ANSWER(同期応答型)を設定します。
ESFRW_COMMONのパラメタ項目
- run_mode
-
フレームワークのフェーズを設定します。以下のどれかとなります。
ESFRW_RUNMODE_CREATE_C:電文作成フェーズ(PCAP)
ESFRW_RUNMODE_CREATE_A:電文作成フェーズ(キャプチャ)
ESFRW_RUNMODE_TEST_R:テスト実行フェーズ
ESFRW_RUNMODE_TEST_C:テスト実行フェーズ(PCAP)
- test_id
-
システムテスト支援開始時に指定したテスト識別子を設定します。
- plg_name
-
framework_definition定義の-pオプションのnameフラグメンバで指定したプラグイン名称を設定します。
- max_msg_sz
-
framework_definition定義の-bオプションのmax_message_sizeフラグメンバで指定した最大電文サイズを設定します。
- protocol
-
address_destinationで指定したプロトコルを設定します。以下の論理和となります。
ESFRW_PROT_TCP :TCP
ESFRW_PROT_HTTP:HTTP
ESFRW_PROT_RPC:RPC
- tel_filetype
-
電文ファイルの種別を設定します。以下のどちらかの値となります。
ESFRW_FILE_AFL:蓄積ファイル
ESFRW_FILE_CSV:csvファイル
電文ファイルの種別は、framework_definition定義の-fオプションのtelegram_file_typeフラグメンバ値で指定します。
- res_filetype
-
テスト実行フェーズの場合、結果ファイルの種別を設定します。以下のどちらかの値となります。
ESFRW_FILE_AFL:蓄積ファイル
ESFRW_FILE_CSV:csvファイル
電文ファイルの種別は、framework_definition定義の-fオプションのresult_file_typeフラグメンバ値で指定します。電文作成フェーズの場合は、ESFRW_FILE_NONE(無し)を設定します。
- sel_mode
-
電文作成フェーズでは、ESFRW_SELMODE_NONEを設定します。
テスト実行フェーズでは、開始終了プラグインで設定された実行モードを設定します。開始終了プラグインを指定していない場合は、ESFRW_SELMODE_SEQ(逐次実行モード)を設定します。
ESFRW_CONNECTIONのパラメタ項目
- protocol
-
コネクションのプロトコル種別を設定します。以下のどちらかとなります。
ESFRW_PROT_TCP:TCP
ESFRW_PROT_HTTP:HTTP
ESFRW_PROT_RPC:RPC
- conntype
-
当該コネクションの種別を設定します。以下のどちらかとなります。
ESFRW_CONTYPE_PRO:本番環境のコネクション
ESFRW_CONTYPE_TST:テスト環境のコネクション
- clt_addr
-
クライアント側のアドレス情報(IPアドレス、ポート番号等)を設定します。
本番環境の場合は、外部システムのアドレス情報となります。テスト環境の場合は、システム検証支援基盤のアドレス情報となります。
- srv_addr
-
サーバ側のアドレス情報を設定します。
本番環境の場合は、既存システムのアドレス情報となります。テスト環境の場合は、テスト対象システムのアドレス情報となります。
- continf
-
コネクション用の引継ぎ領域情報(サイズ等)を格納したESFRW_CONTAINERアドレスを設定します。framework_definition定義の-bオプションのconnection_area_sizeに0(引継ぎ領域を使用しない)を指定した場合、NULLを設定します。
ESFRW_TELEGRAMのパラメタ項目
- protocol
-
プロトコル種別を設定します。以下のどちらかとなります。
ESFRW_PROT_HTTP:HTTP
ESFRW_PROT_TCP:TCP
ESFRW_PROT_RPC:RPC
- msgtype
-
電文種別を設定します。以下のどれかとなります。
ESFRW_MSGTYPE_REQUEST_PRO:要求電文(本番環境)
ESFRW_MSGTYPE_RESPONSE_PRO:応答電文(本番環境)
ESFRW_MSGTYPE_REQUEST_TST:要求電文(テスト環境)
ESFRW_MSGTYPE_RESPONSE_TST:応答電文(テスト環境)
- msgform
-
電文種別を設定します。以下になります。
ESFRW_MSGFORM_SYNC_ANSWER:同期応答型
- head_area
-
電文のHTTPヘッダ情報(サイズ等)を設定します。なお、HTTP電文先頭のリクエスト行/レスポンス行、及び、HTTPヘッダとHTTPボディの間の空行(\r\n)も、HTTPヘッダに含みます。
- body_area
-
電文のデータ情報(サイズ等)を設定します。HTTPヘッダ部のみの場合(GETリクエスト等)、領域サイズが0、領域アドレスがNULLとなります。
- src_addr
-
電文送信元のアドレス情報(IPアドレス、ポート番号等)を設定します。
- dst_addr
-
電文送信先のアドレス情報(IPアドレス、ポート番号等)を設定します。
- continf
-
電文用の引継ぎ領域情報(サイズ等)を格納したESFRW_CONTAINERアドレスを設定します。
framework_definition定義の-bオプションのtelegram_area_sizeに0(引継ぎ領域を使用しない)を指定した場合、NULLを設定します。
- pair_telinf
-
NULLを設定します。
- protocol_telinf
-
プロトコル固有の編集情報を格納した構造体のアドレスを設定します。各プロトコル用の構造体にキャストして使用してください。
RPC:ESFRW_SEND_IF_RPC
RPC以外:NULL
ユーザが設定するパラメタ項目
ESFRW_AMPL_IFのパラメタ項目
- tel_ampl_time
-
「電文追加」を行う場合(ESFRW_OK_RECALLでリターン)、増幅した電文の送信間隔(当該電文と増幅電文の送信時間差異)をミリ秒単位(0~3600000)で設定してください。0(デフォルト値)を指定した場合は、即時に送信します。
本設定値は実行形態関連定義reply_send_modeの影響を受けます。
倍速送信実行時は、同定義で指定された倍速値で短縮した送信間隔となります。等間隔送信実行時、および連続送信実行時は、本設定値を無視します。
- clt_ampl_cnt
-
「クライアント増幅」を行う場合、増幅するクライアント数(0~20000)を設定してください。
0(デフォルト値)を指定した場合、クライアント増幅は行いません。1以上を指定した場合、クライアント増幅を行います。
- clt_ampl_time
-
「クライアント増幅」を行う場合、増幅した電文の送信間隔(当該電文と増幅電文の送信時間差異)をミリ秒単位(0~3600000)でクライアント毎に設定してください。
0(デフォルト値)を指定した場合は、即時に送信します。
- clt_amplify_cntが3の場合の例
-
parm->clt_amplify_time[0]=1000; /* クライアント1 */
parm->clt_amplify_time[1]=0; /* クライアント2 */
parm->clt_amplify_time[2]=2000; /* クライアント3 */
- msgform
-
要求電文の種別を指定できます。リターン値ESFRW_OK_RECALLを返した(電文を増幅して本プラグインを再度呼び出した)場合、電文情報プラグインが呼び出されないため、要求電文の種別を設定してください。次の電文種別を指定できます。
-
ESFRW_MSGFORM_SYNC_ANSWER:同期応答型
テスト対象システムからの応答電文を待ちます。
-
ESFRW_MSGFORM_NOANSWER:非応答型
テスト対象システムからの応答電文を待たずに、次の要求電文を送信します。
要求電文種別は次の条件をすべて満たす場合に設定してください。
-
プロトコル種別がTCP
-
要求電文(本番環境)
条件を満たさない場合、設定する必要はありません。システム検証支援基盤は設定値を無視します。
-
リターン値
plg_func()は次のコードでリターンしてください。
- ESFRW_OK
-
正常。電文追加を行いません。クライアント増幅数が指定されていれば、クライアント増幅を行います。
- ESFRW_OK_RECALL
-
正常。電文追加を行います。クライアント増幅数が指定されていれば、クライアント増幅を行います。
- ESFRW_DESTRUCT
-
正常。電文を破棄します。
- ESFRW_NG
-
プラグイン処理中に異常発生。システム検証支援はメッセージログを出力し、増幅を行わずに処理を継続します。
- 上記以外
-
ESFRW_NGを返したと見なします。
注意事項
-
ユーザの設定した値が不正な場合、システム検証支援はメッセージログを出力し、増幅を行わずに処理を継続します。