このセクションの内容:

概要

MQTT Extensions は、Parasoft SOAtest および Parasoft Virtualize のカスタム拡張です。MQTT Extensions をクライアント側(SOAtest)で使用して様々なタスクを実行できます。

  • トピックをパブリッシュする
  • 指定された数のメッセージを受信するまで、または指定された時間が経過するまでトピック フィルターをサブスクライブする
  • テスト時にトピック フィルターをモニターし、発生したイベントに対して検証を実行する

サーバー側(Virtualize)では、リスナー拡張を使って Topic フィルターをサブスクライブし、受信するサブスクリプション メッセージに基づいて Topic にパブリッシュすることができます。
MQTT Extensionsは以下のカスタム拡張を提供します。

  • MQTT Transport: MQTT メッセージをパブリッシュするためのトランスポート プロトコルです。
  • MQTT Subscriber: 指定の持続時間を過ぎるまで Topic フィルターをサブスクライブするために使用します。
  • MQTT Message Listener: Topic フィルターをサブスクライブし、仮想化したメッセージをパブリッシュするために使用されるメッセージ リスナーです。
  • MQTT Event Monitor: イベント モニタリング インターフェイスへのエントリ ポイントです。テスト中に受け取ったメッセージ イベントをレポートするために Topic をサブスクライブします。
  • MQTT Configure Tool: テスト内の MQTT 拡張ごとに MQTT プロパティを設定しなくても良いように、異なるMQTT プロパティを設定する単純なツールです。

変数の使用

Load Test で MQTT 拡張を実行する場合、入力フィールドで使用できる変数は test_suite_loc だけであることに注意してください。Load Test は、Parasoft Marketplace 拡張用に .tst プロジェクトで使用される project_loc および workspace_loc 変数をサポートしていません。test_suite_loc 変数を使用すると、.tst プロジェクト ファイルからの相対パスとして外部ファイル パスを指定できます。

インストール

MQTT Extensions は UI またはコマンドラインからインストールできます。インストールを開始する前に、圧縮ファイルをダウンロードして適切な場所に解凍してください。

UI からのインストール

  1. [Parasoft ] > [設定] を選択し、[システム プロパティ] をクリックします。
  2. [JAR の追加] をクリックし、mqtt.jar ファイルを選択します。
  3. [適用] をクリックします。
  4. SOAtest/Virtualize を再起動します。

コマンドラインからのインストール

設定プロパティ ファイルの system.properties.classpath プロパティに mqtt.jar ファイルを追加します。例:

system.properties.classpath=<PATH_TO_JAR>/mqtt.jar

MQTT Transport

  1. テストに Messaging Client を追加し、[トランスポート] に [カスタム拡張] を選択します。
  2. [実装] メニューから [MQTT] を選択します。

設定

以下の設定を行うことができます。

Connection 設定

[Connection] タブでは接続の設定を行います。

Broker URL

MQTT ブローカーの URL を定義します。URL の書式は

protocol://host:port です。

  • protocol は接続プロトコルです。トランスポートは MQTT ブローカーを使って TCP または WebSocket プロトコル経由でやり取りします。protocol に指定できる値は tcpsslws、または wss です。
  • host はブローカーのホストです。
  • port はブローカーのポートです。

このフィールドは必須です。

定義したプロトコルが ssl または wss の場合、[Transport Layer Security (TLS)] ページの設定も行う必要があります。

Client ID

ブローカーに接続するときに使用するクライアント ID を定義します。空白にした場合、MQTT ブローカーがクライアント ID を生成します。

Username

ブローカーに接続するときに使用するユーザー名を定義します。

Password

ブローカーに接続するときに使用するパスワードを定義します。

Connection Timeout

MQTT ブローカーへの接続の確立を待機するタイムアウト時間を指定します。単位は秒です。デフォルト値は 30 です。

Keep Alive Interval

アイドル状態の MQTT クライアントを切断する間隔の最大時間を定義します。デフォルト値は 60 です。

Clean Session

クリーン セッションを有効化/無効化します。

True: クリーン セッションを確立します。ブローカーが保持したメッセージは、クライアントに渡されません。

False: クリーン セッションを確立しません。ブローカーが保持したメッセージがクライアントに渡されます。

デフォルトは true です。

Client Persistence Directory

クライアント パーシスタンス ファイルを格納するディレクトリを定義します。[Clean Session] を false に設定している場合、クライアント パーシスタンスが役立ちます。なぜなら、クライアント パーシスタンスを利用することで、ブローカーとの接続が失われた場合に、クライアントが失ったメッセージをブローカーが特定するのを助けるためです。

デフォルト: Memory PersistenceSOAtest または Virtualize を再起動した場合、メッセージは持続しません。再起動後も持続させるには、データ用のディレクトリを定義してください。

Publish 設定

[Publish] タブではパブリッシュの設定を行います。

Topic

メッセージをパブリッシュするトピックを定義します。

Quality of Service

パブリッシュしたメッセージに紐付けるサービス メトリクスの品質を定義します。

設定できる値は、012 です。デフォルト値は 1 です。

Retain Message on Server

サーバー上にメッセージを保持するかどうかを指定します。メッセージを保持するには true に設定します。

保持したメッセージは、[Clean Session] の設定に関係なく、サブスクリプション時にクライアントに渡されます。デフォルトは false です。

Last Will and Testament (LWT) 設定

Last Will and Testament (LWT) は、クライアントがブローカーに接続するときに定義されます。クリーンな切断以外に何らかの理由でクライアントとブローカーの接続が失われた場合、ブローカーはクライアントの LWT を自動的にパブリッシュします。

Topic

LWT をパブリッシュするトピックを定義します。

Will Payload

LWT のペイロードを定義します。

デフォルトは none です。このフィールドを設定しない場合、クライアントはブローカーと LWT を確立しません。

Quality of Service

LWT に紐付けるサービス メトリクスの品質を定義します。設定できる値は、012 です。デフォルト値は 1 です。

Retain Message on Server

サーバー上に LWT を保持するかどうかを指定します。LWT を保持するには true に設定します。

保持したメッセージは、[Clean Session] の設定に関係なく、サブスクリプション時にクライアントに渡されます。デフォルトは false です。

Transport Layer Security (TLS) 設定

[Broker URL] フィールドでプロトコルを ssl または wss に設定した場合、セキュアな接続を適切に確立できるよう、TLS を設定する必要があります。

TLS Protocol

セキュアな接続を確立するために使用する トランスポート層プロトコルを定義します。デフォルトは TLSv1.2 です。

Key Manager Factory

キー マネージャ ファクトリを定義します。キーマネージャ ファクトリを使って、[キー ストア ファイル] が提供する鍵を管理します。JVM にロードされるセキュリティ プロバイダーに合わせて、異なるキー マネージャーを処理できます。JVM にセキュリティ プロバイダーを追加した場合は、そのセキュリティ プロバイダーのドキュメントを参照し、利用できるファクトリ名を確認してください。

デフォルトは SunX509 です。

Key Store File Location

アセット (.tst、.pva、.pvn) の [キーストア ファイル] への絶対パスまたは相対パスを定義します。

Key Store Type

[キー ストア ファイル] の種類を定義します。JVM にロードされるセキュリティ プロバイダーに合わせて、異なるキーストア タイプを処理できます。JVM にセキュリティ プロバイダーを追加した場合は、そのセキュリティ プロバイダーのドキュメントを参照し、利用できるキーストア タイプ名を確認してください。

Key Store Password

[キー ストア ファイル] からキー/証明書を抽出するために使用するパスワードを定義します。空白にした場合、パスワードなしでキーの抽出を試みます。

Trust Manager Factory

トラスト マネージャー ファクトリを定義します。トラスト マネージャー ファクトリを使用して、[トラスト ストア ファイル] が提供するキーを管理します。JVM にロードされるセキュリティ プロバイダーに合わせて、異なるトラスト マネージャーを利用できます。JVM にセキュリティ プロバイダーを追加した場合は、そのセキュリティ プロバイダーのドキュメントを参照し、利用できるファクトリ名を確認してください。

デフォルトは SunX509 です。

Trust Store File Location

アセット (.tst、.pva、.pvn) の [トラスト ストア ファイル]への絶対パスまたは相対パスを定義します。デフォルトは Trust All Certificates です。

Trust Store Type

[トラスト ストア ファイル] の種類を定義します。JVM にロードされるセキュリティ プロバイダーに合わせて、異なるトラスト ストア タイプを処理できます。JVM にセキュリティ プロバイダーを追加した場合は、そのセキュリティ プロバイダーのドキュメントを参照し、利用できるトラスト ストア タイプ名を確認してください。

Trust Store Password

[トラスト ストア ファイル] からキー/証明書を抽出するために使用するパスワードを定義します。空白にした場合、パスワードなしでキーの抽出を試みます。

接続の管理設定

[接続の管理] タブでは、接続管理の設定を行います。

接続をキープ アライブ

クライアント接続を持続して今後のパブリッシュで再利用するには、このオプションを有効化します。

テスト実行後に接続をクローズする

パブリッシュの直後にクライアント接続を切断するには、このオプションを有効化します。

MQTT Subscriber

MQTT Subscriber は、指定の持続時間に達するまで、メッセージの最大数に達するまで、または接続が終了するまで、トピックをリッスンします。メッセージの最大数がゼロ (無制限) の場合、MQTT Subscriber はサブスクリプションの最大持続時間までリッスンを試みます。

設定

以下の設定を行うことができます。

Connection 設定

このページの設定方法については「Connection 設定」を参照してください。

Subscribe 設定

[Subscribe] タブでサブスクライブ設定を行います。

Topic Filter

サブスクリプションを確立するときに使用する Topic フィルターを定義します。特別なワイルドカード + および # を使って同時に複数のトピックをフィルタリングできます。

+ はトピック階層の 1 つのレベルを表します。 # はトピック階層の複数のレベルを表すことができます。

たとえば

parasoft/example/topic および parasoft/example/soavirt/topic の場合:

parasoft/+/topic は、parasoft/example/topic をフィルタリングします。

parasoft/#/topic は、両方のトピックをフィルタリングします。

このフィールドは必須です。

Quality of Service

サブスクリプションのサービス品質 (QoS) レベルを定義します。低い QoS でパブリッシュされたメッセージは、パブリッシュされた QoS で受信されます。高い QoS でパブリッシュされたメッセージは、この設定で指定した QoS を使って受信されます。デフォルト値は 1 です。

Max Messages

サブスクリプションを終了する前に待機するメッセージの最大数を定義します。デフォルト値は 0 です。0 を指定した場合、メッセージ数は無限です。

Subscription Duration.

[Max Messages] を 0 に設定した場合に、[Topic Filter] がサブスクライブできる持続時間をミリ秒で定義します。デフォルト値は 30000 です。

Timestamp Format

到着するメッセージを使って生成されるタイムスタンプの書式を定義します。デフォルトは yyyy-MM-dd'T'hh:mm:ss.SSSX です。

カスタム書式のタイムスタンプを定義したい場合は、SimpleDateFormat Javadocs を参照してください。http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

Last Will and Testament (LWT) 設定

この設定の詳細については「Last Will and Testament (LWT) 設定」を参照してください。

Transport Layer Security (TLS) 設定

この設定の詳細については「Transport Layer Security (TLS) 設定」を参照してください。

MQTT Message Listener

MQTT Message Listener を使用するには、Virtualize サーバーに Parasoft 仮想アセット (PVA) を追加し、[仮想アセットのデプロイ設定] の [カスタム] タブで [実装の選択] に [MQTT Message Listener] を選択し、MQTT の設定を行います。

設定

以下の設定を行うことができます。

Connection 設定

このページの設定方法については「Connection 設定」を参照してください。

Subscribe 設定

Topic Filter

このフィールドの設定方法については「Topic Filter」を参照してください。

このフィールドは必須です。

Quality of Service

このフィールドの設定方法については「Quality of Service」を参照してください。デフォルトは 1 です。

Publish 設定

このページの設定方法については「Publish 設定」を参照してください。

Last Will and Testament (LWT) 設定

この設定の詳細については「Last Will and Testament (LWT) 設定」を参照してください。

Transport Layer Security (TLS) 設定

この設定の詳細については「Transport Layer Security (TLS) 設定」を参照してください。

MQTT Event Monitor

MQTT Event Monitor は、Topic フィルターをサブスクライブし、テスト実行中にメッセージの到着をモニタリングするために使用されます。この機能は、到着するメッセージの検証を可能にします。検証には、メッセージが到着する順序、メッセージの到着時刻、メッセージがパブリッシュされたトピック、およびメッセージ ペイロードが含まれます。

MQTT Event Monitor のセットアップ

  • テストにイベント モニターを追加します。
  • [イベント ソース] タブで、[プラットフォーム] メニューから [カスタム/API ベースのイベント ソース] を選択します。
  • [イベントの取得] セクションで、[パターン] メニューから [イベント プロデューサーのサブスクライブ] を選択します。
  • [ユーザー コード] セクションで、[言語] メニューから [Java] を選択します。
  • [ユーザー コード] セクションの [クラス] フィールドに com.parasoft.soavirt.mqtt.event.MqttEventMonitor と入力します。
  • [ユーザー コード] セクションの [メソッド] メニューから getEventSubscriber(String, String, String, Context) を選択します。

以下の設定を行うことができます。

URL

ブローカー URL を定義します。MQTT Event Monitor のブローカー URL の定義方法は他のツールと異なります。

以下の書式を使ってブローカー URL を設定します:

protocol://client_id@host:port/topic_filter

  • protocol は tcp と SSL のいずれかです。
  • client_id は固有のクライアント ID です。
  • host はブローカーのホストです。
  • port はブローカーのポートです。
  • topic_filter はサブスクリプション Topic フィルターです。

このフィールドは必須です。

SSL プロトコルを指定した場合、クライアントの Transport Layer Security (TLS) を設定するために MQTT Configure Toolを使用する必要があります。

client_id を指定しない場合、サーバーがクライント ID を生成します。

Topic フィルターを定義するために URLでワイルドカードを使用することはできません。使用した場合、URL は適切にパースされません。Topic フィルターでワイルドカードを使用するには、URL 宣言から Topic フィルターを削除し、MQTT Configure Tool を使って Topic フィルターを定義してください。

MQTT Configure Tool を使って、メッセージ到着時のイベントのタイムスタンプをカスタム書式で定義できます。

ユーザー名

ブローカーに接続するときに使用するユーザー名を定義します。

Password

ブローカーに接続するときに使用するパスワードを定義します。

MQTT Configure Tool

MQTT Configure Tool を使用すると、テスト全体について特定の MQTT プロパティを設定できます。そのため、同じプロパティを必要とする場合に、個々のテスト ステップの設定に要する時間と労力を削減できます。MQTT Configure Tool で定義した設定は、個々のテスト ステップで上書きできます。Event Monitor Tool には TLS プロパティを設定する方法が存在しないため、MQTT Configure Tool は Event Monitoring インターフェイスを使用する場合に特に有用です。ベスト プラクティスとして、MQTT Configure Tool はセットアップ テストとしてのみ使用するべきです。

設定

以下の設定を行うことができます。

Connection 設定

Connection Timeout

このフィールドの設定方法については「Connection Timeout」を参照してください。

Keep Alive Interval

このフィールドの設定方法については「Keep Alive Interval」を参照してください。

Clean Session

このフィールドの設定方法については「Clean Session」を参照してください。

Client Persistence Directory

このフィールドの設定方法については「Client Persistence Directory」を参照してください。

Subscribe 設定

このページの設定は、Event Monitor Tool を使用する場合にのみ行ってください。Subscribe 設定ページでは、Topic フィルターにワイルドカードを使用して、QoS レベルおよびメッセージ到着時のタイムスタンプの書式をカスタマイズできます。

Topic Filter

このフィールドの設定方法については「Topic Filter」を参照してください。

Quality of Service

このフィールドの設定方法については「Quality of Service」を参照してください。

Timestamp Format

このフィールドの設定方法については「Timestamp Format」を参照してください。

Last Will and Testament (LWT) 設定

この設定の詳細については「Last Will and Testament (LWT) 設定」を参照してください。

Transport Layer Security (TLS) 設定

この設定の詳細については「Transport Layer Security (TLS) 設定」を参照してください。

負荷テストで MQTT Configure Tool をセットアップ テストとして実行する

負荷テストで MQTT Configure Tool をセットアップ テストとして使用する .tst を実行したい場合、仮想ユーザーのコンテキストで MQTT Configure Tool を実行する必要があります。

  1. [Load Test コンフィギュレーション] の [プロファイル] ノードをクリックします。
  2. [Project Configuration] パネルの [セットアップ/ティアダウン オプション] タブをクリックし、[仮想ユーザーごとに1回実行] を有効化します。

サード パーティのコンテンツ

この拡張機能は、以下のサード パーティのコンテンツを含みます。

その他のライセンスの詳細については、Parasoft MQTT Extensions の licenses フォルダーを参照してください。

  • No labels