7.3.4 電文情報プラグイン
機能
電文の各種情報を設定します。
形式
ANSI C、C++の形式
#include <esfrw.h> ESLONG plg_func(ESFRW_INFO_IF *parm)
「plg_func」部分には、システム内で一意の名称を指定してください。
説明
電文情報プラグインは、本番環境から電文をキャプチャしたとき、もしくはテスト対象システムから電文を受信した時に、その電文の要否や電文情報(ペアリングキー等)を設定します。
キャプチャまたは受信に失敗した時、ダミーの電文情報を引数として、本プラグインを呼出します。必要に応じて後処理(テスト中断、独自確保したリソースの解放等)を行ってください。なお、ダミーの電文情報の場合、電文データ等の一部の情報は参照できません。
パラメタの内容
ESFRW_INFO_IFのパラメタ内容
typedef struct es_frw_info_interface { ESULONG call_timing; …………………… 呼び出し契機 ESULONG error_flg; ……………… エラー情報 ESFRW_COMMON *cominf; ……………………… プラグイン共通情報 ESFRW_CLIENT *cltinf; ……………………… テスト実行単位情報 ESFRW_CONNECTION *conninf; ……………………… コネクション情報 ESFRW_TELEGRAM *telinf; ……………………… 電文情報 ESULONG msgform; …………………… 電文形態 ESULONG pair_use; ………………… ペアリング要否 char pair_key[64]; …………… ペアリングキー char client_id[16]; …………… クライアント識別子 } ESFRW_INFO_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_CLIENTのパラメタ内容
typedef struct es_frw_cltinfo { ESFRW_CONTAINER *continf; …………………… 引継ぎ領域情報 char client_id[16]; ……………… クライアント識別子 } ESFRW_CLIENT;
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_TELEGRAM_RPCの内容
typedef struct es_frw_telegram_rpc { char protocol_type; …………… プロトコル詳細種別 char clt_nid[5];………………… クライアント側ノードID char srv_nid[5];………………… サーバ側ノードID char reserve1[5]; ……………… 予備 char group[32]; ………………… サービスグループ名 char service[32]; ……………… サービス名 ESLONG rtncode; …………………… RPCリターンコード ESULONG out_len; …………………… 応答データ長 } ESFRW_TELEGRAM_RPC;
ESFRW_CONTAINERのパラメタ内容
typedef struct es_frw_continfo { ESULONG contid; …………………… 通番 char conttype; ………………… 引継ぎ領域種別 char contstat; ………………… 引継ぎ領域状態 ESCOM_AREA data_area; ………………… 引継ぎ領域 } ESFRW_CONTAINER;
es_com_area(ESCOM_AREA)のパラメタ内容
typedef struct es_com_area { ESULONG size; ……………… 領域サイズ char reserve[4]; ……………… 予備領域 char *data; ……………… 領域先頭アドレス } ESCOM_AREA;
ESFRW_ADDRのパラメタ内容
typedef struct es_frw_addr { ESCOM_IPADDR ip; …………………… IPアドレス unsigned short portno; …………………… ポート番号 } ESFRW_ADDR;
es_com_ipaddr(ESCOM_IPADDR)のパラメタ内容
typedef union es_com_ipaddr{ ESCOM_IPV4 ipv4; ……………… IPアドレス(IPv4) char reserve[16]; ……………… 予備領域 } ESCOM_IPADDR;
es_com_ipv4(ESCOM_IPV4)のパラメタ内容
typedef struct es_com_ipv4 { char reserve[12]; ……………… 予備領域 char ip[4]; ……………… IPアドレス(IPv4) } ESCOM_IPV4;
各テーブル間は以下のチェイン構造となります。
システム検証支援が値を設定するパラメタ項目
対象となる電文種別やその他条件により、システムテスト支援が設定する項目が異なります。以下に、電文種別毎の設定有無を示します。なお、記載されていない項目については、電文種別やその他条件による差異はありません。
項目 |
電文種別 |
||
---|---|---|---|
要求電文 (本番環境) |
応答電文 (本番環境) |
応答電文 (テスト環境) |
|
テスト実行単位情報 |
× |
× |
○ |
ESFRW_INFO_IFのパラメタ項目
- call_timing
-
プラグインの呼び出し契機を設定します。以下のどれかとなります。
ESFRW_TIMING_PKTCAP:パケットのキャプチャ時
ESFRW_TIMING_FILRED :電文ファイルからの電文読込み時
ESFRW_TIMING_PKTRCV:パケットの受信時
- error_flg
-
フレームワーク機能で検知したエラー有無、およびエラー内容を設定します。以下のどれかとなります。
ESFRW_ERROR_NONE:エラー無し
ESFRW_ERROR_RECV_CON:コネクション切断による受信不可
ESFRW_ERROR_RECV_LOST:ロスト検知による受信不可
ESFRW_ERROR_BUILD_TIMEOUT:後続パケット待ちタイムアウトによる受信不可
ESFRW_ERROR_RECV_TIMEOUT:応答待ちタイムアウトによる受信不可
- cominf
-
プラグインに共通する情報(フェーズ、テスト識別子等)を格納しているESFRW_COMMONアドレスを設定します。
- cltinf
-
ESFRW_TIMING_PKTRCVの場合、テスト実行単位の情報(引継ぎ情報等)を格納したESFRW_CLIENTアドレスを設定します。それ以外の場合はNULLを設定します。
- conninf
-
呼び出し契機となったコネクションの情報(IPアドレス等)を格納したESFRW_CONNECTIONアドレスを設定します。
- telinf
-
電文の情報(サイズ等)を格納しているESFRW_TELEGRAMアドレスを設定します。
- msgform
-
要求電文(本番環境)の場合にユーザが設定する項目です。システム検証支援はデフォルト値として、ESFRW_MSGFORM_SYNC_ANSWER(同期応答型)を設定します。
- pair_use
-
要求電文(本番環境)の場合にユーザが設定する項目です。システム検証支援はデフォルト値として、ESFRW_PAIR_YES(ペアリング要)を設定します。framework_definition定義の-uオプションのproduction_pairingフラグメンバ値がNの場合はESFRW_PAIR_NO(ペアリング不要)を設定します。
- pair_key
-
プロトコル種別がTCPの場合、ユーザが設定する項目です。
以下の条件を全て満たす場合、システム検証支援では、デフォルト値として、蓄積ファイル内の電文情報の電文キー値を設定します。
-
テスト実行フェーズ
-
プロトコル種別がTCPの場合、かつ電文ファイルの種別が蓄積ファイル(framework_definition定義の-fオプションのtelegram_file_typeフラグメンバに"afl"を指定)
-
蓄積ファイル内の電文情報に電文キーが設定されている
上記の条件を満たさない場合は、デフォルト値として、コネクション毎にユニークとなる値を設定します。このデフォルト値を使用した場合、同一コネクションの要求電文と応答電文がペアリングされます。
-
- client_id
-
要求電文(本番環境)の場合にユーザが設定する項目です。システム検証支援はデフォルト値として、コネクション毎にユニークとなる値を設定します。
なお、framework_definition定義の-uオプションのipaddr_serializeフラグメンバ値にYを指定した場合は、デフォルト値として、外部システムのIPアドレスごとにユニークな値を設定します。
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_CLIENTのパラメタ項目
- continf
-
テスト実行単位の引継ぎ領域情報(サイズ等)を格納したESFRW_CONTAINERアドレスを設定します。framework_definition定義の-bオプションのclient_area_sizeに0(引継ぎ領域を使用しない)を指定した場合、NULLを設定します。
- client_id
-
テストの実行単位となるクライアント識別子を設定します。
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アドレス、ポート番号等)を設定します。
本番環境の場合は、外部システムのアドレス情報となります。テスト環境の場合は、システム検証支援基盤のアドレス情報となります。
- clt_addr
-
サーバ側のアドレス情報を設定します。
本番環境の場合は、既存システムのアドレス情報となります。テスト環境の場合は、テスト対象システムのアドレス情報となります。
- continf
-
コネクション用の引継ぎ領域情報(サイズ等)を格納したESFRW_CONTAINERアドレスを設定します。framework_definition定義の-bオプションのconnection_area_sizeに0(引継ぎ領域を使用しない)を指定した場合、NULLを設定します。
ESFRW_TELEGRAMのパラメタ項目
- protocol
-
当該電文のプロトコル種別を設定します。以下のどちらかとなります。
ESFRW_PROT_TCP:TCP
ESFRW_PROT_HTTP:HTTP
ESFRW_PROT_RPC:RPC
- msgtype
-
電文種別を設定します。以下のどれかとなります。
ESFRW_MSGTYPE_REQUEST_PRO:要求電文(本番環境)
ESFRW_MSGTYPE_RESPONSE_PRO:応答電文(本番環境)
ESFRW_MSGTYPE_RESPONSE_TST:応答電文(テスト環境)
- msgform
-
電文種別を設定します。以下のどれかとなります。
ESFRW_MSGFORM_NONE:電文形態未決定
ESFRW_MSGFORM_SYNC_ANSWER:同期応答型
ESFRW_MSGFORM_NOANSWER:非応答型
ESFRW_MSGFORM_NOSYNC_ANSWER:非同期応答型
- head_area
-
プロトコル種別がHTTPの場合、電文のHTTPヘッダ情報(サイズ等)を設定します。なお、HTTP電文先頭のリクエスト行/レスポンス行、およびHTTPヘッダとHTTPボディの間の空行(\r\n)も、HTTPヘッダに含みます。
HTTP以外の場合は、領域サイズが0、領域アドレスがNULLとなります。
エラー情報がESFRW_ERROR_NONE以外の場合は、領域サイズが0、領域アドレスがNULLとなります。
- body_area
-
電文のデータ情報(サイズ等)を設定します。プロトコル種別がHTTPで、HTTPヘッダ部のみの場合(GETリクエスト等)、領域サイズが0、領域アドレスがNULLとなります。
エラー情報がESFRW_ERROR_NONE以外の場合は、領域サイズが0、領域アドレスがNULLとなります。
- src_addr
-
電文送信元のアドレス情報(IPアドレス、ポート番号等)を設定します。
- dst_addr
-
電文送信先のアドレス情報(IPアドレス、ポート番号等)を設定します。
- continf
-
電文用の引継ぎ領域情報(サイズ等)を格納したESFRW_CONTAINERアドレスを設定します。framework_definition定義の-bオプションのtelegram_area_sizeに0(引継ぎ領域を使用しない)を指定した場合、NULLを設定します。
エラー情報がESFRW_ERROR_NONE以外の場合は、NULLを設定します。
- pair_telinf
-
NULLを設定します。
- pair_telinf
-
以下の全ての条件を満たす場合、電文ファイル内の拡張情報1、および2を設定します。
-
テスト実行フェーズ
-
電文ファイル種別がCSVファイル
-
CSVファイル内に拡張情報が存在する(電文作成フェーズにおいて、電文ファイルに拡張情報を追加した)
-
- protocol_telinf
-
プロトコル固有の情報を格納した構造体のアドレスを設定します。各プロトコル用の構造体にキャストして使用してください。
RPC:ESFRW_TELEGRAM RPC
RPC以外:NULL
ESFRW_CONTAINERのパラメタ項目
- contid
-
引継ぎ領域毎に割当てる通番を設定します。
- conttype
-
引継ぎ領域の種別を設定します。以下のどれかとなります。
ESFRW_CONTTYPE_TEL:電文単位
ESFRW_CONTTYPE_CON:コネクション単位
ESFRW_CONTTYPE_CLT:テスト実行単位
- contstat
-
引継ぎ領域の状態を設定します。以下のどれかとなります。
ESFRW_CONTST_NEW:初回(新規割当て)
ESFRW_CONTST_RENEW:初回(再割当て)
ESFRW_CONTST_CONTINUE:2回目以降
- data_area
-
引継ぎ領域の情報(サイズ等)を設定します。
ESFRW_TELEGRAM_RPCのパラメタ項目
- protocol_type
-
RPCのプロトコル詳細種別を設定します。以下のどれかになります。
ESFRW_PROT_RPC_RPC:RPC
ESFRW_PROT_RPC_RAP:RAP
- clt_nid
-
要求電文(本番環境)の場合はクライアント側のノードIDを設定します。それ以外、または電文内にノードIDが格納されていない場合は、オールNULLを設定します。
- srv_nid
-
応答電文の場合はサーバ側のノードIDを設定します。それ以外の場合はNULLを設定します。
- group
-
要求電文の場合はサービスグループ名を設定します。それ以外の場合はオールNULLを設定します。
なお、要求電文(テスト環境)かつ電文送信プラグインでサービスグループ名を変更している場合、変更したサービスグループ名を設定します。
- service
-
要求電文の場合はサービス名を設定します。それ以外の場合はオールNULLを設定します。
なお、要求電文(テスト環境)、かつ電文送信プラグインでサービス名を変更している場合、変更したサービス名を設定します。
- rtncode
-
応答電文の場合はサーバ側が設定したRPCリターンコード(dc_rpc_call()等のリターン値)を設定します。それ以外の場合は0を設定します。
- out_len
-
応答型の要求電文の場合は応答データ長(dc_rpc_call()等で指定したout_len値)を設定します。それ以外の場合は0を設定します。
ユーザが設定するパラメタ項目
対象となる電文種別やその他条件により、プラグインが設定する項目が異なります。以下に、電文種別毎の設定要否を示します。なお、記載されていない項目については、電文種別やその他条件による差異はありません。
エラー情報がESFRW_ERROR_NONE以外の場合、設定する必要はありません。設定した場合は設定値を無視します。
項目 |
電文種別 |
||
---|---|---|---|
要求電文 (本番環境) |
応答電文 (本番環境) |
応答電文 (テスト環境) |
|
電文形態 |
*1 |
× |
× |
クライアント識別子 |
*2 |
× |
× |
ペアリングキー |
*1*3 |
○ |
○*1 |
ペアリング要否 |
*3 |
× |
× |
- (凡例)
-
○:設定必要
×:設定不要(設定してもシステムテスト支援は無視)
*1:プロトコル種別がTCPの場合のみ
*2:テスト実行フェーズ(逐次実行モード)のみ
*3:応答型だけ
ESFRW_INFO_IFのパラメタ項目
- msgform
-
以下の条件を全て満たす場合、電文形態を設定してください。
-
プロトコル種別がTCP
-
要求電文(本番環境)
設定値は以下のどちらかとなります。
ESFRW_MSGFORM_SYNC_ANSWER:同期応答型
ESFRW_MSGFORM_NOANSWER:非応答型
条件を満たさない場合、設定する必要はありません。システムテスト支援は設定値を無視します。
-
- pair_use
-
以下の条件を全て満たす場合、要求電文(本番環境)と応答電文(本番環境)のペアリング要否を設定してください。
-
要求電文(本番環境)
-
msgformで設定した電文形態が同期応答型
設定値は以下のどちらかとなります。
ESFRW_PAIR_YES:ペアリング要
ESFRW_PAIR_NO:ペアリング不要
条件を満たさない場合、設定する必要はありません。システムテスト支援は設定値を無視します。
-
- pair_key
-
プロトコル種別がTCP、かつ電文形態が同期応答型の場合、ペアとなる要求電文と応答電文で同じ値となるペアリングキーを設定してください。
- client_id
-
以下の条件を全て満たす場合、テスト実行単位となるクライアント識別子を設定してください。
-
テスト実行フェーズ(逐次実行モード)
-
要求電文(本番環境)
存在しないクライアント識別子を設定した場合、テスト実行単位情報(引継ぎ領域等)を新規作成します。存在するクライアント識別子を設定した場合、既存のテスト実行単位情報を使用します。
条件を満たさない場合、設定する必要はありません。システムテスト支援は設定値を無視します。
-
リターン値
次のコードでリターン値を設定してください。
- ESFRW_OK
-
正常に終了しました。
- ESFRW_DESTRUCT
-
電文を破棄します。
- ESFRW_NG
-
プラグイン処理中に異常が発生しました。電文を破棄します。
- 上記以外
-
指定リターン値以外でリターンした場合、電文を破棄します。
エラー情報がESFRW_ERROR_NONE以外の場合は、ESFRW_OKをリターンしても、ダミー電文を破棄します。
注意事項
-
UOCで設定した値に不正があった場合、電文を破棄します。