このセクションの内容:

概要

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 からのインストール

  1. [Parasoft ] > [設定] を選択し、[システム プロパティ] をクリックします。
  2. [JAR の追加] をクリックし、com.parasoft.soavirt.messages.avro-<version>.jar を選択します。
  3. [適用] をクリックします。
  4. 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 メッセージ タイプを使用するようにレスポンダーを構成することもできます。次の操作を行います。

  1. メッセージレスポンダーで、[オプション] タブをクリックし、[リクエストの処理] を選択します。
  2. [レスポンスと異なるメッセージ形式を使って受信リクエストを XML に変換する] を有効にします。
  3. ショートカット メニューの [Apache Avro] をクリックします。
  4. 表示される [メッセージ タイプ] メニューから、仮想アセットに受信されると予想されるメッセージ タイプを選択します。Avro スキーマ フォルダー内のスキーマまたは以前に指定した Confluent Schema Registry のスキーマで、使用可能なタイプ定義 (「Avro スキーマの場所の設定」を参照)。
    • ローカル スキーマ フォルダーが指定されている場合、利用可能なスキーマタイプの名前がこのリストに表示されます。Confluent Schema Registry を指定した場合、サブジェクトとバージョンのペアが表示されます。

Avro と Kafka の併用

Avro Extension を使用する利点の 1 つは、以下に示すテスト スイートのように、Avro Extension を Kafka Transport と併用することで、ある形式でメッセージを送信し、別の形式でメッセージを受信できることです。

次の例は、このようなシナリオを設定するための簡単なワークフローを示しています。

  1. Kafka レコード キーも Avro である場合は、Apache Avro Client をテスト スイートに追加し、以下のように構成して保存します。
    • [メッセージ タイプ] メニューからレコード キーのスキーマを選択します。Avro スキーマの場所をまだ設定していない場合は、設定する必要があります。
    • [リクエスト] タブで、入力モードとして [フォーム入力] が選択されていることを確認し、必要に応じて入力フィールドの詳細を入力します。
    • [トランスポート] タブで、[トランスポート] を [なし] に設定します。
  2. Kafka レコード キーも Avro である場合は、出力を Avro クライアントに追加し (Avro クライアントを右クリックし、[出力の追加] > [リクエスト] > [XML としてモデル化されたペイロード] > [XML Data Bank] を選択)、以下のように設定して保存します。
    • レコードのキー要素を抽出します (要素を選択して [要素の抽出] をクリックします)。
    • 抽出した要素を変更し、Xpath を */ に変更します。[抽出] フィールドが [要素全体] に設定されていることを確認します。
    • 必要に応じて [データ ソース列] の名前を変更します。
  3. 別の Apache Avro Client をテスト スイートに追加し (これはプロデューサーになります)、以下のように設定して保存します。
    • [メッセージ タイプ] メニューからレコード メッセージのスキーマを選択します。
    • [リクエスト] タブで、入力モードとして [フォーム入力] が選択されていることを確認し、必要に応じて入力フィールドの詳細を入力します。
    • [トランスポート] タブで、[トランスポート] メニューから [Kafka] を選択します。カスタム トランスポートが複数ある場合は、[カスタム拡張] を選択し、[実装の選択] メニューから [Kafka] を選択する必要があります。
    • [接続] を選択し、必要に応じて接続設定の詳細を入力します。
    • [プロデューサー] を選択し、レコード キー シリアライザーとして avro と入力します。有効なトピックを入力し、レコード キーを手順 2 の [データ ソース] 列の名前に設定します。必要に応じて、他のプロデューサー設定を完了します。
  4. 使用されたレコードが、生成されたレコードとは異なる Avro スキーマである場合は、別の Apache Avro Client をテスト スイートに追加し (これはコンシューマーになります)、以下のように設定して保存します。
    • [メッセージ タイプ] メニューからレコード メッセージのスキーマを選択します。
    • [Send XML instead of Apache Avro when in Form Input or Form XML] を有効にすると、コンシューマーによってリクエストが無視されるため、変換エラーを避けることができます。
    • [リクエスト] タブで、入力モードとして [フォーム入力] が選択されていることを確認し、必要に応じて入力フィールドの詳細を入力します。
    • [トランスポート] タブで、[トランスポート] メニューから [Kafka] を選択します。カスタム トランスポートが複数ある場合は、[カスタム拡張] を選択し、[実装の選択] メニューから [Kafka] を選択する必要があります。
    • [接続] を選択し、必要に応じて接続設定の詳細を入力します。
    • [コンシューマー] を選択し、有効なトピックとグループ ID を入力します。必要に応じて、他のコンシューマー設定を完了します。
    • 1 つ以上のヘッダーに基づいてメッセージを関連付ける場合は、[コンシューマー ヘッダー] を選択し、必要に応じてキーと値を入力します。


  • No labels