Hitachi

Hitachi System Information Capture リファレンス 


6.4.3 蓄積編集UOC

機能

入力電文蓄積時にUOCを実行します。入力電文の編集を行うことができます。

形式

ANSI C、C++の形式

#include <esrpc.h>
ESLONG uoc_func(ESRPC_UOC_STORE_TBL *parm)

説明

電文入力の蓄積時に呼び出されるUOCです。

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

表6‒3 蓄積編集UOC実行比較

-

本番環境

テスト環境

要求電文

応答電文

要求電文※1

応答電文※2

並行実行

×

×

蓄積実行

×

×

並行+蓄積実行

リプレイ実行

×

×

PCAP実行

×

×

凡例

○:UOCが実行される

×:UOCは実行されない

※1:

accumulate_file -t REQTS -f “testuse=Y”が指定されていない場合は、UOCが呼び出されても、電文は蓄積されません

※2:

accumulate_file -t RPYTS -f “testuse=Y”が指定されていない場合は、UOCが呼び出されても、電文は蓄積されません

それぞれの電文がUOCを呼ぶタイミングは以下の通りです。

電文種別

タイミング

本番環境 要求電文

本番環境から要求電文をキャプチャした後

本番環境 応答電文

本番環境から応答電文をキャプチャした後

テスト環境 要求電文

テスト環境へ要求電文を送信した後

テスト環境 応答電文

テスト環境から応答電文を受信した後

ユーザオウンコーディング(UOC)が起動される入力電文は、RPC電文とRAPのAPI代理実行電文です。

システムテスト支援は、uoc_func(蓄積編集UOC)を呼び出すとき、次に示す所定のパラメタをparmに設定します。「uoc_func」部分には、システム内で一意の名称を指定してください。

対象メッセージのテキスト部のデータは、編集前データアドレスに格納されています。編集が必要な場合、編集結果は設定される編集後データアドレス以降のエリアに格納してください。なお、バッファとして8MBを用意しています。8MBを超えて格納しないでください。

表6‒4 call_systemとtelegram_typeの設定内容

-

call_system

telegram_type

本番環境要求電文

ESRPC_CALL_PRODUCTION_SYSTEM

ESRPC_TELEGRAM_REQUEST

本番環境応答電文

ESRPC_CALL_PRODUCTION_SYSTEM

ESRPC_TELEGRAM_REPLY

テスト環境要求電文

ESRPC_CALL_TEST_SYSTEM

ESRPC_TELEGRAM_REQUEST

テスト環境応答電文

ESRPC_CALL_TEST_SYSTEM

ESRPC_TELEGRAM_REPLY

上記のパラメタの値を使うことで、どの電文でUOCが実行されたのかを判別することができます。

パラメタの内容

ESRPC_UOC_STORE_TBLのパラメタ内容

typedef struct es_rpc_uoc_store{
  ESULONG        running_mode;        ……………… 実行形態
  ESLONG         call_system;         ……………… 電文送信元の環境
  ESLONG         protocol_type;       ……………… プロトコル種別(rpc|rap)
  ESLONG         telegram_type;       ……………… 電文種別
  ESLONG         rpc_model;           ……………… RPC形態
  char           reserve1[4];         ……………… 予備
  char           srv_group [32];      ……………… 要求先のサービスグループ名
  char           srv_service [32];    ……………… 要求先のサービス名
  char           srv_nid[5];          ……………… 要求先のノード識別子
  char           reserve2[3];         ……………… 予備領域
  char           clt_nid[5];          ……………… 要求元のノード識別子
  char           reserve3[3];         ……………… 予備領域
  unsigned char  srv_ipaddr[4];       ……………… 要求先のIPアドレス
  unsigned char  clt_ipaddr[4];       ……………… 要求元のIPアドレス
  unsigned short srv_portno;          ……………… 要求先のポート番号
  unsigned short clt_portno;          ……………… 要求元のポート番号
  ESLONG         retcode;             ……………… リターンコード
  ESULONG        usr_data_len;        ……………… 編集前後ユーザデータ長
  char           reserve4[4];         ……………… 予備領域
  char           *usr_data;           ……………… ユーザデータ
  char           *edt_data;           ……………… 編集後のユーザデータ
}ESRPC_UOC_STORE_TBL;
編集前データアドレスと編集前データ長の関係

[図データ]

編集後データアドレスと編集後データ長の関係

[図データ]

システムテスト支援が設定するパラメタ項目

running_mode

実行形態を設定します。実行形態が複数の場合は論理和で設定します。

ESCLT_RUNMODE_P:並行実行

ESCLT_RUNMODE_A:蓄積実行

ESCLT_RUNMODE_R:リプレイ実行

ESCLT_RUNMODE_C:PCAP実行

call_system

電文送信元の環境を設定します。

ESRPC_CALL_PRODUCTION_SYSTEM:本番環境

ESRPC_CALL_TEST_SYSTEM:テスト環境

protocol_type

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

ESRPC_TYPE_RPC:rpc

ESRPC_TYPE_RAP:rap

telegram_type

電文種別を設定します。

ESRPC_TELEGRAM_REQUEST:要求電文

ESRPC_TELEGRAM_REPLY:応答電文

rpc_model

RPC形態を設定します。

ESRPC_MODEL_NOFLAGS:同期応答型

ESRPC_MODEL_NOWAIT:非同期応答型

ESRPC_MODEL_NOREPLY:非応答型

srv_group

サーバ側のサービスグループ名(※1)を設定します。

srv_service

サーバ側のサービス名(※1)を設定します。

srv_nid

サーバ側のノードID(※1)を設定します。

clt_nid

クライアント側のノードID(※1)を設定します。

srv_ipaddr

サーバ側のIPアドレス(※2)を設定します。

clt_ipaddr

クライアント側のIPアドレス(※2)を設定します。

srv_portno

サーバ側の受信ポート番号を設定します。

clt_portno

クライアント側の送信ポート番号を設定します。

retcode

応答電文の場合に設定されているRPCRAPのリターンコード(※1)を設定します。

usr_data_len

電文に設定されているユーザデータ長を設定します。

usr_data

ユーザデータ先頭アドレスを設定します。

※1:

電文中に設定されておらず、取得できない場合は空文字列、または0が設定されています。

※2:

IPアドレスは、次に示す形式で設定します。

例) 172.165.112.20

[0]

[1]

[2]

[3]

0xAC

0xA5

0x70

0x14

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

usr_data_len

編集後のユーザデータ長を設定してください。

0以下、または8MBを超える値が設定されている場合はエラーとして、対象のメッセージを破棄します。ただし、ES_UOC_MSG_OK_INのリターンコードを返却した場合は、編集前のユーザデータ長で蓄積します。

edt_data

編集後のユーザデータを設定してください。

リターン値

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

ESRPC_UOC_OK

ユーザが編集したユーザデータおよびユーザデータ長を使って、蓄積します。

ESRPC_UOC_OK_IN
  • 編集後のユーザデータ長が0以下もしくは8MBを超える場合

    編集する前のユーザデータおよびユーザデータ長を使って、蓄積します。

  • 編集後のユーザデータ長が編集前のユーザデータ長以下の場合

    編集する前のユーザデータと編集後のユーザデータ長を使って、蓄積します。

  • 編集後のユーザデータ長が編集前のユーザデータ長より大きい場合

    編集する前のユーザデータおよびユーザデータ長を使って、蓄積します。

ESRPC_UOC_NG

対象メッセージを蓄積しません。

上記以外

指定リターン値以外でリターンした場合、対象メッセージを蓄積しません。

編集時の注意