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
-
強制停止しました。
- 上記以外
-
システム検証支援プロセスを続行しました。
注意事項
-
電文を編集した場合、その後の処理の保証はできません。