MUnit 2.2 以降では dynamic-port グローバル要素が導入されているため、MUnit スイートレベルで動的ポートを定義できます。次に説明されているプラグイン設定の代わりにこの要素を使用すると、Maven と Studio の両方から動的ポートを設定できます。
この要素を設定する方法については、「動的ポート」を参照してください。
継続的インテグレーション (CI) 環境で Mule アプリケーションをテストする場合、次のシナリオが発生することがあります。
Your application tries to open a specific port. The port is already in use. The application fails with a port binding exception.
MUnit Maven プラグインには、アプリケーションで空きポートを使用する機能が組み込まれています。
MUnit 動的ポートは、Mule アプリケーションのテストを開始する前に、バインドされていないポートを探して予約するよう MUnit Maven プラグインに指示します。選択された各ポートは、設定に示されている名前でシステムプロパティに配置されます。その後、アプリケーションはプレースホルダーを使用してポート番号を取得できます。
プラグインにより選択されるポートは、[40000,50000] の範囲から取得されます。
|
|
動的ポート機能は MUnit Maven プラグインの一部としてのみ使用できます。Anypoint Studio 内からテストを実行する場合、この機能は動作しません。
|
動的ポートの有効化
この機能を有効にするには、次のコードを MUnit Maven プラグインの configuration セクションに追加する必要があります。
動的ポートの設定
<plugins>
<plugin>
<groupId>com.mulesoft.munit.tools</groupId>
<artifactId>munit-maven-plugin</artifactId>
<configuration>
...
<dynamicPorts>
<dynamicPort>a.dynamic.port</dynamicPort>
</dynamicPorts>
...
</configuration>
</plugin>
</plugins>
アプリケーションに ${http.port} プレースホルダーが含まれる場合、設定は次のようになります。
例
<dynamicPorts>
<dynamicPort>http.port</dynamicPort>
</dynamicPorts>
アプリケーションの準備
プレースホルダーでは、ポートを使用するアプリケーションの一部をパラメーター化する必要があります。たとえば、Mule アプリケーションに HTTP トラフィックをリスンさせるには、次の設定を指定します。
HTTP アプリケーション
<http:listener-config name="HTTP_Listener_config">
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="httpFlow">
<http:listener path="/" config-ref="HTTP_Listener_config"/>
</flow>
以前のアプリケーションはポート 8081 で常にリスンします。これを動的に行うには、次のように変更します。
動的ポートを使用する HTTP アプリケーション
<http:listener-config name="HTTP_Listener_config">
<http:listener-connection host="0.0.0.0" port="${http.port}"/> (1)
</http:listener-config>
<flow name="httpFlow">
<http:listener path="/" config-ref="HTTP_Listener_config"/>
</flow>
| 1 |
プレースホルダー ${http.port} に注意してください。 |
アプリケーションをこのようにコーディングし、動的ポートの設定を適用したら、アプリケーションは、開始する各実行で異なるポートをリスンします。