Hitachi

Hitachi System Information Capture リファレンス 


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をリターンしても、ダミー電文を破棄します。

注意事項