このセクションの内容:
概要
Apache Avro は、スキーマベースのデータ シリアライゼーション システムです。Apache Avro Extension を使用すると、SOAtest と Virtualize で Avro メッセージ形式をサポートできます。Confluent Schema Registry からスキーマを読み込むことも、ローカル ドライブに保存されたスキーマを読み込むこともできます。Confluent Schema Registry を使用する場合、マジックバイトと 4 バイトのスキーマ ID が、関連するトランスポートのワイヤー形式の Avro バイナリ メッセージの前にシリアライズされます。
拡張機能をインストールすると、SOAtest 用の Apache Avro クライアントと Virtualize 用の Apache Avro メッセージ レスポンダーが追加されます。
前提条件
- SOAtest/Virtualize 2023.2 以降
インストール
Parasoft Kafka Transport Extension は UI またはコマンドラインからインストールできます。
UI からのインストール
- [Parasoft ] > [設定] を選択し、[システム プロパティ] をクリックします。
- [JAR の追加] をクリックし、com.parasoft.soavirt.messages.avro-<version>.jar を選択します。
- [適用] をクリックします。
- SOAtest/Virtualize を再起動します。
コマンドラインからのインストール
設定プロパティ ファイルの system.properties.classpath
プロパティに Avro .jar ファイルを追加します。例:
system.properties.classpath=<path to jar>/com.parasoft.soavirt.messages.avro-1.0.0.jar
Avro スキーマの場所の設定
Avro スキーマファイルの場所は、Java システム プロパティで設定します。これは、スキーマを保存したローカル ディレクトリへのパス、または Confluent Schema Registry の URL のいずれかになります。
-J-Dcom.parasoft.soavirt.messages.avro.schemas=<PATH_TO_SCHEMA_FOLDER or SCHEMA_REGISTRY_URL>
Confluent Schema Registry を指定する場合は、必ず完全な URL (http:// または https:// を含む) を指定してください。
使用方法
Avro クライアントの追加
[テストの追加] ウィザードを使用してスタンドアロンの Avro クライアントをスイートに追加したり、[出力の追加] ウィザードを使用して既存のツールのペイロード出力として Avro ツールを連結したりできます。 詳細については「プロジェクト、.tstファイル、テスト スイートの追加」 を参照してください。
設定と使用方法
Avro クライアントは他のメッセージング クライアントと同様に機能しますが、デフォルトで Avro 形式を使用するように設定されています。 さらに、Avro クライアント固有の設定オプションがいくつかあります。
XML 変換オプション
- Send XML instead of Apache Avro when in Form Input or Form XML mode: たとえば、使用されないリクエストの変換エラーを避けるために Avro クライアントをコンシューマーとして使用する場合などです。
フォーム入力を使用してリクエスト ペイロードをモデル化するためのスキーマ
- メッセージ タイプ: Avro スキーマ フォルダー内のスキーマまたは以前に指定した Confluent Schema Registry のスキーマで、使用可能なタイプ定義から選択します (「Avro スキーマの場所の設定」を参照)。
- ローカル スキーマ フォルダーが指定されている場合、利用可能なスキーマタイプの名前がこのリストに表示されます。Confluent スキーマ レジストリを指定した場合、サブジェクトとバージョンのペアが表示されます。
Avro メッセージ レスポンダーの追加
[レスポンダーの追加] ウィザードを使用して、Avro メッセージ レスポンダーをスイートに追加できます。 詳細については「メッセージ レスポンダーを手動で作成」を参照してください。
設定と使用方法
Avro メッセージ レスポンダーは、他のレスポンダーと同様に機能します。 レスポンダーの設定と使用については「メッセージ レスポンダーの概要」を参照してください。 さらに、Avro メッセージ レスポンダー固有の設定オプションがいくつかあります。
XML 変換オプション
- Respond with XML instead of Apache Avro when in Form Input or Form XML mode: 他のツールを連結して Avro メッセージを XML 形式で処理する場合は、このオプションを有効にします。
フォーム入力を使用してリクエスト ペイロードをモデル化するためのスキーマ
- メッセージ タイプ: Avro スキーマ フォルダー内のスキーマまたは以前に指定した Confluent Schema Registry のスキーマで、使用可能なタイプ定義から選択します (「Avro スキーマの場所の設定」を参照)。
- ローカル スキーマ フォルダーが指定されている場合、利用可能なスキーマタイプの名前がこのリストに表示されます。Confluent Schema Registry を指定した場合、サブジェクトとバージョンのペアが表示されます。
受信リクエストに別の Avro メッセージ タイプを使用するようにレスポンダーを構成することもできます。次の操作を行います。
- メッセージレスポンダーで、[オプション] タブをクリックし、[リクエストの処理] を選択します。
- [レスポンスと異なるメッセージ形式を使って受信リクエストを XML に変換する] を有効にします。
- ショートカット メニューの [Apache Avro] をクリックします。
- 表示される [メッセージ タイプ] メニューから、仮想アセットに受信されると予想されるメッセージ タイプを選択します。Avro スキーマ フォルダー内のスキーマまたは以前に指定した Confluent Schema Registry のスキーマで、使用可能なタイプ定義 (「Avro スキーマの場所の設定」を参照)。
- ローカル スキーマ フォルダーが指定されている場合、利用可能なスキーマタイプの名前がこのリストに表示されます。Confluent Schema Registry を指定した場合、サブジェクトとバージョンのペアが表示されます。
Avro と Kafka の併用
Avro Extension を使用する利点の 1 つは、以下に示すテスト スイートのように、Avro Extension を Kafka Transport と併用することで、ある形式でメッセージを送信し、別の形式でメッセージを受信できることです。
次の例は、このようなシナリオを設定するための簡単なワークフローを示しています。
- Kafka レコード キーも Avro である場合は、Apache Avro Client をテスト スイートに追加し、以下のように構成して保存します。
- [メッセージ タイプ] メニューからレコード キーのスキーマを選択します。Avro スキーマの場所をまだ設定していない場合は、設定する必要があります。
- [リクエスト] タブで、入力モードとして [フォーム入力] が選択されていることを確認し、必要に応じて入力フィールドの詳細を入力します。
- [トランスポート] タブで、[トランスポート] を [なし] に設定します。
- Kafka レコード キーも Avro である場合は、出力を Avro クライアントに追加し (Avro クライアントを右クリックし、[出力の追加] > [リクエスト] > [XML としてモデル化されたペイロード] > [XML Data Bank] を選択)、以下のように設定して保存します。
- レコードのキー要素を抽出します (要素を選択して [要素の抽出] をクリックします)。
- 抽出した要素を変更し、Xpath を
*/
に変更します。[抽出] フィールドが [要素全体] に設定されていることを確認します。 - 必要に応じて [データ ソース列] の名前を変更します。
- 別の Apache Avro Client をテスト スイートに追加し (これはプロデューサーになります)、以下のように設定して保存します。
- [メッセージ タイプ] メニューからレコード メッセージのスキーマを選択します。
- [リクエスト] タブで、入力モードとして [フォーム入力] が選択されていることを確認し、必要に応じて入力フィールドの詳細を入力します。
- [トランスポート] タブで、[トランスポート] メニューから [Kafka] を選択します。カスタム トランスポートが複数ある場合は、[カスタム拡張] を選択し、[実装の選択] メニューから [Kafka] を選択する必要があります。
- [接続] を選択し、必要に応じて接続設定の詳細を入力します。
- [プロデューサー] を選択し、レコード キー シリアライザーとして
avro
と入力します。有効なトピックを入力し、レコード キーを手順 2 の [データ ソース] 列の名前に設定します。必要に応じて、他のプロデューサー設定を完了します。
- 使用されたレコードが、生成されたレコードとは異なる Avro スキーマである場合は、別の Apache Avro Client をテスト スイートに追加し (これはコンシューマーになります)、以下のように設定して保存します。
- [メッセージ タイプ] メニューからレコード メッセージのスキーマを選択します。
- [Send XML instead of Apache Avro when in Form Input or Form XML] を有効にすると、コンシューマーによってリクエストが無視されるため、変換エラーを避けることができます。
- [リクエスト] タブで、入力モードとして [フォーム入力] が選択されていることを確認し、必要に応じて入力フィールドの詳細を入力します。
- [トランスポート] タブで、[トランスポート] メニューから [Kafka] を選択します。カスタム トランスポートが複数ある場合は、[カスタム拡張] を選択し、[実装の選択] メニューから [Kafka] を選択する必要があります。
- [接続] を選択し、必要に応じて接続設定の詳細を入力します。
- [コンシューマー] を選択し、有効なトピックとグループ ID を入力します。必要に応じて、他のコンシューマー設定を完了します。
- 1 つ以上のヘッダーに基づいてメッセージを関連付ける場合は、[コンシューマー ヘッダー] を選択し、必要に応じてキーと値を入力します。