Hitachi

Hitachi System Information Capture リファレンス 


7.2.6 結果判定UOC

機能

結果判定UOCは、比較対象の応答電文と、テスト対象システムからの応答電文の比較や、要求電文から応答電文の妥当性の判定を行うことができます。

形式

ANSI C、C++の形式

#include <esplg_uoc.h>
ESLONG uoc_func(ESPLG_UOC_JUDGE *parm)

「uoc_func」部分には、システム内で一意の名称を指定してください。

説明

比較対象の応答電文と、テスト対象システムからの応答電文の両方を受信時に呼び出されるUOCです。

テスト比較支援機能のプラグイン使用時は、システム検証支援がエラーを検知した場合(要求電文の送信失敗等)も、本UOCを呼び出します。この場合、システム検証支援が自動的にエラーと判定するため、UOCでは結果判定は不要です。必要に応じて後処理(独自確保したリソースの解放等)のみを行ってください。

各実行形態と入力電文によるUOC実行の有無を以下に示します。

IIOP以外の場合

フェーズ

比較対象の応答電文と

テスト対象システムからの応答電文を受信

電文作成フェーズ(PCAP)

×

電文作成フェーズ(キャプチャ)

×

テスト実行フェーズ

(凡例)

○:UOCが実行される

×:UOCは実行されない

IIOPの場合

フェーズ

テスト対象システムから応答電文を受信

PCAP実行

蓄積実行

(電文作成フェーズ)

×

リプレイ実行

(テスト実行フェーズ)

(凡例)

○:UOCが実行される

×:UOCは実行されない

パラメタの内容

ESPLG_UOC_JUDGEのパラメタ内容

typedef struct es_plg_uoc_judge {
  ESULONG        run_mode;         ……………… 実行形態
  ESULONG       protocol;          ……………… プロトコル種別
  ESULONG       error_level;         …………… エラーレベル
  ESULONG       error_flg;       ………………… エラー情報(IIOPでは未使用)
  ESCOM_AREA ext_request_tel_area;         …… 電文単位ユーザ領域(本番要求)(IIOPでは未使用)
  char      ext_request_tel_area_state;    …… 電文単位ユーザ領域(本番要求)の状態(IIOPでは未使用)
  char           reserve2[7];      ……………… 予備領域
  ESCOM_AREA ext_reply_tel_area;         ……… 電文単位ユーザ領域(本番応答)(IIOPでは未使用)
  char      ext_reply_tel_area_state;    ……… 電文単位ユーザ領域(本番応答)の状態(IIOPでは未使用)
  char           reserve3[7];      ……………… 予備領域
  ESCOM_AREA test_request_tel_area;      ……… 電文単位ユーザ領域(テスト要求)(IIOPでは未使用)
  char   test_request_tel_area_state;      …… 電文単位ユーザ領域(テスト要求)の状態(IIOPでは未使用)
  char           reserve4[7];      ……………… 予備領域
  ESCOM_AREA test_reply_tel_area;        ……… 電文単位ユーザ領域(テスト応答)(IIOPでは未使用)
  char   test reply_tel_area_state;      ……… 電文単位ユーザ領域(テスト応答)の状態(IIOPでは未使用)
  char           reserve5[7];      ……………… 予備領域
  ESCOM_AREA usr_clt_area;               ……… クライアント単位ユーザ領域(IIOPでは未使用)
  char       usr_clt_area_state;         ……… クライアント単位ユーザ領域の状態(IIOPでは未使用)
  char            reserve6[7];     ……………… 予備領域
  ESCOM_AREA     ext_request           ………… 要求電文(本番環境)の情報(IIOPでは未使用)
  ESPLG_UOC_TELSIZE ext_request_size;  ………… 要求電文(本番環境)のサイズ(IIOPでは未使用)
  ESCOM_AREA     ext_reply;            ………… 応答電文(本番環境)の情報(IIOPでは未使用)
  ESPLG_UOC_TELSIZE ext_reply_size;    ………… 応答電文(本番環境)の電文長(IIOPでは未使用)
  ESCOM_AREA     test_request;       …………… 要求電文(テスト環境)の先頭アドレス(IIOPでは「要求電文(テスト環境)の情報」)
  ESPLG_UOC_TELSIZE test_request_size; ………… 要求電文(テスト環境)の電文長
  ESCOM_AREA     test_reply;         …………… 応答電文(テスト環境)の先頭アドレス(IIOPでは「応答電文(テスト環境)の情報」)
  ESPLG_UOC_TELSIZE test_reply_size;   ………… 応答電文(テスト環境)の電文長
  ESLONG         user_code;            ………… ユーザ情報コード
  char           user_info[256];         ……… ユーザ情報文字列
  void           *protoinf;        ……………… プロトコル情報(IIOP以外は参照出来ません)
  ESULONG        abort_code;         …………… 強制停止理由コード
  char           reserve7[4];      ……………… 予備領域
  void           *ext_request_protocol_inf; … プロトコル固有の情報(本番要求)(IIOPでは未使用)
  void           *ext_reply_protocol_inf; …… プロトコル固有の情報(本番応答)(IIOPでは未使用)
  void           *test_request_protocol_inf;… プロトコル固有の情報(テスト要求)(IIOPでは未使用)
  void           *test reply_protocol_inf;  … プロトコル固有の情報(テスト応答)(IIOPでは未使用)
} ESPLG_UOC_JUDGE;

es_com_area(ESCOM_AREA)のパラメタ内容

typedef struct es_com_area {
  ESULONG   size;                       ……………… 領域サイズ
  char      reserve[4];                 ……………… 予備領域
  char      *data;                      ……………… ユーザ領域先頭アドレス
} ESCOM_AREA;

es_frw_telegram_rpc(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;

ESPLG_UOC_TELSIZEのパラメタ内容

typedef union {
  ESPLG_UOC_HTTPSIZE http_size;   …………HTTPプロトコルのサイズ格納領域
  ESPLG_UOC_TCPSIZE tcp_size;     …………TCPプロトコルのサイズ格納領域
} ESPLG_UOC_TELSIZE;

ESPLG_UOC_HTTPSIZEのパラメタ内容

typedef struct es_plg_uoc_httpsize{
  ESULONG header_size;             …………HTTPヘッダ部サイズ
  ESULONG body_size;               …………HTTPボディ部サイズ
} ESPLG_UOC_HTTPSIZE;

ESPLG_UOC_TCPSIZEのパラメタ内容

typedef struct es_plg_uoc_tcpsize{
  ESULONG size;                    …………電文サイズ
  char reserve[4];
} ESPLG_UOC_TCPSIZE;

es_plg_proto_iiop(ESPLG_PROTO_IIOP)のパラメタ内容

typedef struct es_plg_proto_iiop {
  char protoinf_type;       …………… プロトコル情報種別
  char req_byte_order;      …………… 要求電文バイトオーダー
  char rpy_byte_order;      …………… 応答電文バイトオーダー
  char reserve1[5];         …………… 予備領域
  char *object_key;         …………… オブジェクトキー
  ESULONG object_key_size;  …………… オブジェクトキーサイズ
  char reserve2[4];         …………… 予備領域
  char *operation;          …………… オペレーション名
  ESULONG operation_size;   …………… オペレーション名サイズ
  char reserve3[4];         …………… 予備領域
  void *req_service_context;    ……… 要求電文サービスコンテキスト
  ESULONG req_service_context_size; … 要求電文サービスコンテキストサイズ
  char reserve4[4];          …………… 予備領域
  void *rpy_service_context;     ……… 応答電文サービスコンテキスト
  ESULONG rpy_service_context_size;  … 応答電文サービスコンテキストサイズ
  char reserve5[4];          …………… 予備領域
  ESULONG reply_status;      …………… リターン値
  char system1;          ………………… 製品情報1
  char system2;          ………………… 製品情報2
  char system3;          ………………… 製品情報3
  char reserve6[49];           ………… 予備領域
} ESPLG_PROTO_IIOP;

システム検証支援が値を設定するESPLG_UOC_JUDGEパラメタ項目

run_mode

システム検証支援の実行形態を設定します。

IIOP以外の場合

ESFRW_RUNMODE_TEST_C:テスト実行フェーズ(PCAP)

ESFRW_RUNMODE_TEST_R:テスト実行フェーズ

IIOPの場合

ESFRW_RUNMODE_CREATE_C:PCAP実行

ESFRW_RUNMODE_TEST_R:リプレイ実行(テスト実行フェーズ)

protocol

プロトコル種別を設定します。

ESFRW_PROT_TCP:TCP

ESFRW_PROT_HTTP:HTTP

ESFRW_PROT_IIOP:IIOP

ESFRW_PROT_RPC:RPC

error_level

ユーザが設定する項目です。システムテスト支援ではデフォルト値として2を設定します。

error_flg
システム検証支援が検知したエラー有無、およびエラー内容を設定します。以下のいずれかとなります。

ESFRW_ERROR_NONE:エラー無し

ESFRW_ERROR_SEND_CON:コネクション確立失敗による送信不可

ESFRW_ERROR_SEND_CANCEL:送信編集UOCの電文破棄指示により送信取消し

ESFRW_ERROR_SEND:送信失敗

ESFRW_ERROR_RECV_CON:コネクション切断による受信不可

ESFRW_ERROR_RECV_TIMEOUT:応答待ちタイムアウトによる受信不可

ESFRW_ERROR_LISTEN_PORT:Listenポートオープン失敗による応答受信不可(プロトコル種別がESFRW_PROT_RPCの場合だけ設定される)

ESFRW_ERROR_SEND_RAPCON:常設コネクション確立失敗による送信不可

設定値がESFRW_ERROR_NONE以外の場合、以下に示すパラメタのみ参照・設定可能です。
  • 参照可能なパラメタ

    run_mode

    protocol

  • 設定可能なパラメタ

    abort_code

上記以外のパラメタは参照・設定しないでください。

ext_request_tel_area

本番要求電文の電文単位ユーザ領域を設定します。※1

各メンバには以下の値が設定されています。

  • size

    電文単位ユーザ領域のサイズを設定します。

  • data

    電文単位ユーザ領域の先頭アドレスを設定します。

ext_request_tel_area_state

電文単位ユーザ領域(本番要求)の状態を設定します。電文単位ユーザ領域(本番要求)の状態は電文単位ユーザ領域(本番要求)の領域サイズが0以外のときに設定します。

  • ESFRW_CONTST_NEW

    新規に割当てられた領域であることを示します。

  • ESFRW_CONTST_RENEW

    処理済みとなった電文のユーザ領域が再割当てされて、通知されたことを示します。ユーザ領域内には現在処理している電文とは無関係の情報が設定されている場合があります。必要に応じて、ユーザ領域に残っている必要な情報の退避、および初期化等を実施して使用してください。

  • ESFRW_CONTST_CONTINUE

    当該電文のユーザ領域として、UOCに通知済の領域であることを示します。以前に通知された際に情報を設定していれば、参照することができます。

ext_reply_tel_area

本番応答電文の電文単位ユーザ領域を設定します。※1

各メンバには以下の値が設定されています。

  • size

    電文単位ユーザ領域のサイズを設定します。

  • data

    電文単位ユーザ領域の先頭アドレスを設定します。

ext_reply_tel_area_state

電文単位ユーザ領域(本番応答)の状態を設定します。電文単位ユーザ領域(本番応答)の状態は電文単位ユーザ領域(本番応答)の領域サイズが0以外のときに設定します。

  • ESFRW_CONTST_NEW

    新規に割当てられた領域であることを示します。

  • ESFRW_CONTST_RENEW

    処理済みとなった電文のユーザ領域が再割当てされて、通知されたことを示します。ユーザ領域内には現在処理している電文とは無関係の情報が設定されている場合があります。必要に応じて、ユーザ領域に残っている必要な情報の退避、および初期化等を実施して使用してください。

  • ESFRW_CONTST_CONTINUE

    当該電文のユーザ領域として、UOCに通知済の領域であることを示します。以前に通知された際に情報を設定していれば、参照することができます。

test_request_tel_area

テスト要求電文の電文単位ユーザ領域を設定します。※1

各メンバには以下の値が設定されています。

  • size

    電文単位ユーザ領域のサイズを設定します。

  • data

    電文単位ユーザ領域の先頭アドレスを設定します。

test_request_tel_area_state

電文単位ユーザ領域(テスト要求)の状態を設定します。電文単位ユーザ領域(テスト要求)の状態は電文単位ユーザ領域(テスト要求)の領域サイズが0以外のときに設定します。

  • ESFRW_CONTST_NEW

    新規に割当てられた領域であることを示します。

  • ESFRW_CONTST_RENEW

    処理済みとなった電文のユーザ領域が再割当てされて、通知されたことを示します。ユーザ領域内には現在処理している電文とは無関係の情報が設定されている場合があります。必要に応じて、ユーザ領域に残っている必要な情報の退避、および初期化等を実施して使用してください。

  • ESFRW_CONTST_CONTINUE

    当該電文のユーザ領域として、UOCに通知済の領域であることを示します。以前に通知された際に情報を設定していれば、参照することができます。

test_reply_tel_area_state

電文単位ユーザ領域(テスト応答)の状態を設定します。電文単位ユーザ領域(テスト応答)の状態は電文単位ユーザ領域(テスト応答)の領域サイズが0以外のときに設定します。

  • ESFRW_CONTST_NEW

    新規に割当てられた領域であることを示します。

  • ESFRW_CONTST_RENEW

    処理済みとなった電文のユーザ領域が再割当てされて、通知されたことを示します。ユーザ領域内には現在処理している電文とは無関係の情報が設定されている場合があります。必要に応じて、ユーザ領域に残っている必要な情報の退避、および初期化等を実施して使用してください。

  • ESFRW_CONTST_CONTINUE

    当該電文のユーザ領域として、UOCに通知済の領域であることを示します。以前に通知された際に情報を設定していれば、参照することができます。

usr_clt_area

クライアント識別子単位で共有するユーザ領域を設定します。※1

各メンバには以下の値が設定されています。

  • size

    クライアント識別子単位ユーザ領域のサイズを設定します。

  • data

    クライアント識別子単位ユーザ領域の先頭アドレスを設定します。

usr_clt_area_state

クライアント単位ユーザ領域の状態を設定します。クライアント単位ユーザ領域の状態はクライアント単位ユーザ領域の領域サイズが0以外のときに設定します。

  • ESFRW_CONTST_NEW

    新規に割当てられた領域であることを示します。

  • ESFRW_CONTST_RENEW

    不要となったクライアントのユーザ領域が再割当てされて、通知されたことを示します。ユーザ領域内には処理中の電文のクライアントとは無関係の情報が設定されている場合があります。必要に応じて、ユーザ領域に残っている必要な情報の退避、および初期化等を実施して使用してください。

  • ESFRW_CONTST_CONTINUE

    当該クライアントのユーザ領域として、UOCに通知済の領域であることを示します。以前に通知された際に情報を設定していれば、参照することができます。

ext_request

本番要求の電文に関する情報を設定します。

各メンバには以下の値が設定されています。

  • size

    電文のサイズを設定します。

  • data

    電文の先頭アドレスを設定します。

ext_request_size

プロトコルに応じて本番要求電文のサイズをESPLG_UOC_TELSIZE形式で設定します。

ext_reply

本番応答の電文に関する情報を設定します。

各メンバには以下の値が設定されています。

  • size

    電文のサイズを設定します。

  • data

    電文の先頭アドレスを設定します。

ext_reply_size

プロトコルに応じて本番応答電文のサイズをESPLG_UOC_TELSIZE形式で設定します。

test_request

テスト要求の電文に関する情報を設定します。

各メンバには以下の値が設定されています。

  • size

    電文のサイズを設定します。

  • data

    電文の先頭アドレスを設定します。

test_request_size

プロトコルに応じてテスト要求電文のサイズをESPLG_UOC_TELSIZE形式で設定します。

test_reply

テスト応答の電文に関する情報を設定します。

各メンバには以下の値が設定されています。

  • size

    電文のサイズを設定します。

  • data

    電文の先頭アドレスを設定します。

test_reply_size

プロトコルに応じてテスト応答電文のサイズをESPLG_UOC_TELSIZE形式で設定します。

protoinf

プロトコル情報ESPLG_PROTO_IIOPの領域アドレスを設定します。

注※1

各ユーザ領域には排他処理を実施していないため、更新時に競合しないように注意してください。

ext_request_protocol_inf

プロトコル固有の情報を格納した構造体のアドレスを設定します。

  • プロトコル種別がESFRW_PROT_RPCの場合

    ESFRW_TELEGRAM_RPC

  • プロトコル種別がESFRW_PROT_TCPまたはESFRW_PROT_HTTPの場合

    NULL

各プロトコル用の構造体にキャストして使用してください。

ext_reply_protocol_inf

プロトコル固有の情報を格納した構造体のアドレスを設定します。

  • プロトコル種別がESFRW_PROT_RPCの場合

    ESFRW_TELEGRAM_RPC

  • プロトコル種別がESFRW_PROT_TCPまたはESFRW_PROT_HTTPの場合

    NULL

各プロトコル用の構造体にキャストして使用してください。

test_request_protocol_inf

プロトコル固有の情報を格納した構造体のアドレスを設定します。

  • プロトコル種別がESFRW_PROT_RPCの場合

    ESFRW_TELEGRAM_RPC

  • プロトコル種別がESFRW_PROT_TCPまたはESFRW_PROT_HTTPの場合

    NULL

各プロトコル用の構造体にキャストして使用してください。

test reply_protocol_inf

プロトコル固有の情報を格納した構造体のアドレスを設定します。

  • プロトコル種別がESFRW_PROT_RPCの場合

    ESFRW_TELEGRAM_RPC

  • プロトコル種別がESFRW_PROT_TCPまたはESFRW_PROT_HTTPの場合

    NULL

各プロトコル用の構造体にキャストして使用してください。

システム検証支援が値を設定するes_plg_proto_iiop(ESPLG_PROTO_IIOP)パラメタ項目

protoinf_type

ESPLG_PROTO_IIOPに設定するプロトコル情報の種別を論理和で設定します。

ESPLG_IIOP_MSG_REQUEST:Request電文情報あり

ESPLG_IIOP_MSG_REPLY:Reply電文情報あり

req_byte_order

要求電文のバイトオーダーを設定します。

ESPLG_IIOP_BIG_ENDIAN:ビッグエンディアン

ESPLG_IIOP_LITTLE_ENDIAN:リトルエンディアン

rpy_byte_order

応答電文のバイトオーダーを設定します。

ESPLG_IIOP_BIG_ENDIAN:ビッグエンディアン

ESPLG_IIOP_LITTLE_ENDIAN:リトルエンディアン

object_key※1

オブジェクトキーの格納領域アドレスを設定します。

object_key_size※1

オブジェクトキーのサイズを設定します。

operation※1

オペレーション名の格納領域アドレスを設定します。

operation_size※1

オペレーション名のサイズを設定します。

req_service_context※1 ※2

要求電文のサービスコンテキストの格納領域アドレスを設定します。

サービスコンテキストの形式は、OMGで規定されているIOP::ServiceContextListとなります。

req_service_context_size※1

要求電文のサービスコンテキストサイズを設定します。

サイズが0の場合、要求電文サービスコンテキストは参照できません。

rpy_service_context※2 ※3

応答電文のサービスコンテキストの格納領域アドレスを設定します。

サービスコンテキストの形式は、OMGで規定されているIOP::ServiceContextListとなります。

rpy_service_context_size※3

応答電文のサービスコンテキストサイズを設定します。

サイズが0の場合、応答電文サービスコンテキストは参照できません。

reply_status※3

応答電文のリプライステータス(reply_status)を設定します。

ESPLG_IIOP_NO_EXCEPTION:NO_EXCEPTION

注※1

プロトコル情報種別にESPLG_IIOP_MSG_REQUESTが設定されているときのみ参照可能です。

注※2

各電文のバイトオーダーを考慮して参照してください。

注※3

プロトコル情報種別にESPLG_IIOP_MSG_REPLYが設定されているときのみ参照可能です。

ユーザが設定するパラメタ項目

error_level

UOCでテスト失敗と判断(ESPLG_UOC_NOMATCH)した場合、KFSE84003-Iメッセージで出力するエラーレベルを2〜3の範囲で設定します。範囲外を指定した場合、システムテスト支援はKFSE54101-E メッセージを表示し、結果ファイルのユーザ情報コードに「0」、ユーザ情報文字列に「PLUGIN-ERROR」を出力します。

user_code

ESPLG_UOC_NOMATCHを返すとき、情報として結果ファイルに出力したいユーザ任意のコードを-2147483648 〜 2147483647の範囲で設定してください。

user_info

ESPLG_UOC_NOMATCHを返すとき、情報として結果ファイルに出力したいユーザ任意の文字列を設定してください。文字列の最後にはnull文字を設定してください。

abort_code

システム検証支援を強制停止する理由を示すコードを0 ~ 4294967295の範囲で設定してください。このコードはUOCがESPLG_UOC_ABORTをリターンしたときのみ有効です。システム検証支援は強制停止理由コードをKFSE64109-Eメッセージに出力します。

リターン値

次のコードでリターン値を設定してください。

error_flgの値がESFRW_ERROR_NONEのとき
ESPLG_UOC_OK

データ比較が一致しました。

ESPLG_UOC_ABORT

強制停止しました。

ESPLG_UOC_NOMATCH、および上記以外

データ比較が不一致でした。

error_flgの値がESFRW_ERROR_NONE以外のとき
ESPLG_UOC_OK

システム検証支援プロセスを続行しました。

ESPLG_UOC_ABORT

強制停止しました。

上記以外

システム検証支援プロセスを続行しました。

注意事項