サンプル・テスト・ケースの実行

サンプルの Web アプリケーションまたはコマンド・ラインを使用して、デプロイ済みの SOA Policy Gateway Basic Runtime Sample でサンプル・アプリケーションをテストすることができます。 サンプル・アプリケーションで実行可能なコマンド・ライン・テストは 6 種類あります。

Basic Sample Runtime をデプロイするには、SOA Policy Gateway Basic Runtime Sample パターンのデプロイを参照してください。
注: 以下の XML サンプルで使用される SamplePolicySample_starting_port の値は、SOA Policy Gateway Basic Runtime Sample のログで確認できます。

サンプルの Web アプリケーションのテスト・ケースの実行

Web アプリケーションのテスト・ケースを実行する手順は、以下のとおりです。
  1. デプロイ済み WSRR 環境のホスト名を、デプロイ済みの仮想システム・インスタンスを開いて確認します。 そのためには、「仮想マシン (Virtual machines)」セクションを展開し、WSRR スタンドアロン・サーバーの仮想マシンを選択して、仮想マシンの詳細を確認します。 「ハードウェアおよびネットワーク」セクションで、ホスト名は「ネットワーク・インターフェース 0」の値です。
  2. Web ブラウザーで URL「http://<wssrHostName>:9080/SoaPolicyTester」を開きます。
  3. DataPower® に実装されるサンプル・アプリケーションのテスト画面が表示されます。
  4. オプションは以下のとおりです。
    • 標準の送信 (Send Standard) - Store サービスに findInventory 要求を送信します。 コンテキスト ID は「Silver」ユーザーです。 正常な結果は「Part: SKU10 Price: 461.73」です。
    • 経路指定された送信 (Send Routed) - Store サービスに findInventory 要求を送信します。 コンテキスト ID は「Gold」ユーザーであり、要求はサービスの Gold 実装に経路指定されます。 正常な結果は「Part: GOLDSKU10 Price: 461.73」です。
    • 無効な送信 (Send Invalid) - 無効なペイロードを指定した要求を送信します。 妥当性検査ポリシーには、要求の妥当性検査のために DataPower が必要であり、正常な結果は DataPower からの応答メッセージ「Internal Error (from client)」です。
    • ユーザー ID = ConsumerA (User ID = ConsumerA) - ConsumerA のユーザー ID による呼び出しには、マネージャーのみが価格を確認できるようにするため、XACML ポリシーが実施されます。 応答メッセージの「価格 (Price)」の値は、編集されます。 正常な結果には、「Price: 0.0」が含まれます。
    • 多数の標準要求 (Many Standard Requests) - 90 秒以内に要求が 6 回以上実行されると、拒否ポリシーが実施されます。 実施されているポリシーをデモンストレーションする正常な応答は、「Rejected: "Rejected (from client)"」です。
  5. WSRR コンソールを開いて、サービスおよびポリシーを検討します。 詳しくは、 を参照してください。
コマンド・ラインを使用してサンプル・アプリケーションのテスト・ケースを実行する手順は、以下のとおりです。

コマンド・ラインを使用した、編集シナリオによる XACML Permit/Deny のデモンストレーション

以下の要求 XML を DataPower StoreAddLTPA サービスに送信できます。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:stor="http://company.ibm.com/store">
  <soapenv:Header>
    <store:ConsumerIdentifier xmlns:store="http://store.com">CEO
    </store:ConsumerIdentifier>
    <store:ContextIdentifier xmlns:store="http://store.com">silver
    </store:ContextIdentifier>
  </soapenv:Header>
  <soapenv:Body>
  <stor:findInventory>
    <findInventoryReq>
      <sku>SKU10</sku>
    </findInventoryReq>
  </stor:findInventory>
  </soapenv:Body>
</soapenv:Envelope>
上に示した要求 XML の例が silver.xml という名前のファイル内にあると想定して、 次の curl コマンドを実行します。
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd 
    http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
この例で、ConsumerX はマネージャーなので、完全な価格情報が応答として表示されます。
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<KD4NS:KD4SoapHeaderV2
xmlns:KD4NS="http://www.ibm.com/KD4Soap">AFIAAgAkZmExODgzNTQtY2Q1ZC0z
YjU0LWEyMzItZGM3MmEzNWY0MTAzACRmYWVjYjA1Mi1jMWUxLTMyODEtOWY3Ni0wY2IxN
mRhMDc4MjkAAw==</KD4NS:KD4SoapHeaderV2>
</soapenv:Header>
<soapenv:Body>
  <b:findInventoryResponse xmlns:a="http://company.ibm.com/" 
     xmlns:b="http://company.ibm.com/store">
  <findInventoryRes>
<sku>SKU10</sku>
<price>461.73</price>
<inventory>460</inventory>
<msrp>923.46</msrp>
<supplierID>IBM</supplierID>
</findInventoryRes>
</b:findInventoryResponse>
</soapenv:Body></soapenv:Envelope>

コマンド・ラインを使用した編集シナリオの実行

ConsumerA はマネージャーではないので、 別の応答が表示されます。 curl コマンドを実行します。
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerA:passw0rd 
    http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
応答では価格が編集されて 0.0 になっていることに注目してください。
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header><KD4NS:KD4SoapHeaderV2
xmlns:KD4NS="http://www.ibm.com/KD4Soap">AFIAAgAkZmExODgzNTQtY2Q1ZC0zYjU0L
WEyMzItZGM3MmEzNWY0MTAzACRmYWVjYjA1Mi1jMWUxLTMyODEtOWY3Ni0wY2IxNm
RhMDc4MjkAAw==</KD4NS:KD4SoapHeaderV2>
</soapenv:Header>
<soapenv:Body>
<b:findInventoryResponse xmlns:a="http://company.ibm.com/"
xmlns:b="http://company.ibm.com/store">
<findInventoryRes>
<sku>SKU10</sku>
<price>0.0</price>
<inventory>460</inventory>
<msrp>923.46</msrp>
<supplierID>IBM</supplierID>
</findInventoryRes>
</b:findInventoryResponse>
</soapenv:Body></soapenv:Envelope>

コマンド・ラインを使用したルーティング・ポリシーのテスト

SLA ContextId がルーティング・ポリシーの起動に使用されます。 このケースでは、ゴールド・カスタマーの SLA が、SLA 内の Gold の値となります。 contextIdentifier が Gold の、サンプル要求の内容を以下に示します。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:stor="http://company.ibm.com/store">
<soapenv:Header>
  <store:ConsumerIdentifier xmlns:store="http://store.com">CEO
  </store:ConsumerIdentifier>
  <store:ContextIdentifier xmlns:store="http://store.com">Gold
  </store:ContextIdentifier>
</soapenv:Header><soapenv:Body>
<stor:findInventory><findInventoryReq>
  <sku>SKU10</sku>
  </findInventoryReq>
</stor:findInventory>
</soapenv:Body></soapenv:Envelope>
上に示した要求 XML の例が gold.xml という名前のファイル内にあると想定して、 次の curl コマンドを実行します。
curl -k --data-bin @./gold.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
応答は次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
  <KD4NS:KD4SoapHeaderV2
  xmlns:KD4NS="http://www.ibm.com/KD4Soap">AFIAAgAkZmExODgzNTQtY2Q1ZC0zYjU0L
  WEyMzItZGM3MmEzNWY0MTAzACRmYWVjYjA1Mi1jMWUxLTMyODEtOWY3Ni0wY2IxNm
  RhMDc4MjkAAw==</KD4NS:KD4SoapHeaderV2>
</soapenv:Header><soapenv:Body>
<b:findInventoryResponse xmlns:a="http://company.ibm.com/"
xmlns:b="http://company.ibm.com/store">
<findInventoryRes>
  <sku>GOLDSKU10</sku>
  <price>461.73</price>
  <inventory>460</inventory>
  <msrp>923.46</msrp>
  <supplierID>IBM</supplierID>
</findInventoryRes></b:findInventoryResponse>
</soapenv:Body>
</soapenv:Envelope>
戻り応答の SKU 値は GOLDSKU で、ゴールド・エンドポイントの使用を示していることに注目してください。

コマンド・ラインを使用したスキーマの妥当性検査のテスト

妥当性検査ポリシーは、要求のスキーマを、 Store.wsl およびそれに関連付けられた Company.xsd に照らして検査します。
次の XML、badvalid.xml は、本体に含まれるエレメントが <sku> という名前であるべきところが <skubad> という名前なので、無効となる要求を示しています。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:stor="http://company.ibm.com/store">
<soapenv:Header>
<store:ConsumerIdentifier xmlns:store="http://store.com">CEO</store:ConsumerIdentifier>
<store:ContextIdentifier xmlns:store="http://store.com">silver</store:ContextIdentifier>
</soapenv:Header>
<soapenv:Body>
<stor:findInventory>
<findInventoryReq>
<skubad>SKU10</skubad>
</findInventoryReq>
</stor:findInventory>
</soapenv:Body></soapenv:Envelope>

次の curl 要求を実行する場合:
curl -k --data-bin @./badvalid.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd
http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
次のエラーが発生します。
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<env:Fault><faultcode>env:Client</faultcode>
<faultstring>Internal Error (from client)</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>

コマンド・ラインを使用したメディエーション・ポリシーでの拒否のテスト

サンプルに含まれるメディエーション・ポリシーの 1 つは、 メッセージ・カウントが 90 秒間に 5 回実行された後に、拒否の検査を行います。 次のコマンドを 6 回実行してください。
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
サンプル要求は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<KD4NS:KD4SoapHeaderV2
xmlns:KD4NS="http://www.ibm.com/KD4Soap">AFIAAgAkZmExODgzNTQtY2Q1ZC0z
YjU0LWEyMzItZGM3MmEzNWY0MTAzACRmYWVjYjA1Mi1jMWUxLTMyODEtOWY3Ni0wY2IxN
mRhMDc4MjkAAw==</KD4NS:KD4SoapHeaderV2>
</soapenv:Header>
<soapenv:Body>
<b:findInventoryResponse xmlns:a="http://company.ibm.com/"
xmlns:b="http://company.ibm.com/store">
<findInventoryRes>
このケースでは ConsumerX がマネージャーなので、 最初の 5 回の実行で、以下のように完全な価格情報が表示されます。
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<KD4NS:KD4SoapHeaderV2
xmlns:KD4NS="http://www.ibm.com/KD4Soap">AFIAAgAkZmExODgzNTQtY2Q1ZC0z
YjU0LWEyMzItZGM3MmEzNWY0MTAzACRmYWVjYjA1Mi1jMWUxLTMyODEtOWY3Ni0wY2IxN
mRhMDc4MjkAAw==</KD4NS:KD4SoapHeaderV2>
</soapenv:Header>
<soapenv:Body>
<b:findInventoryResponse xmlns:a="http://company.ibm.com/"
xmlns:b="http://company.ibm.com/store">
<findInventoryRes>
<sku>SKU10</sku>
<price>461.73</price>
<inventory>460</inventory>
<msrp>923.46</msrp>
<supplierID>IBM</supplierID>
</findInventoryRes></b:findInventoryResponse>
</soapenv:Body>
</soapenv:Envelope>
6 回目の実行では、以下のエラーが表示されます。
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<env:Fault>
<faultcode>env:Client</faultcode>
<faultstring>Rejected (from client)</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
注: 90 秒以内の間隔で別のテストを実行すると、すぐにこのエラーが表示される可能性があります。

コマンド・ラインを使用したメディエーション・ポリシーでの通知のテスト

contextId が「Gold」ではない場合は、 マップされた SLA はないので、匿名の SLA が使用されます。 匿名 SLA のメディエーション・ポリシーは、ログに記録するか、または通知するです。 このためには、デバッグ・モードがサンプル・ドメインに対して有効になっている必要があります。 次のコマンドを実行します。
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
このケースでは ConsumerX がマネージャーなので、 以下のように完全な価格情報が表示されます。
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<KD4NS:KD4SoapHeaderV2
xmlns:KD4NS="http://www.ibm.com/KD4Soap">AFIAAgAkZmExODgzNTQtY2Q1ZC0zYjU0L
WEyMzItZGM3MmEzNWY0MTAzACRmYWVjYjA1Mi1jMWUxLTMyODEtOWY3Ni0wY2IxNm
RhMDc4MjkAAw==</KD4NS:KD4SoapHeaderV2></soapenv:Header><soapenv:Body><b:fin
dInventoryResponse xmlns:a="http://company.ibm.com/"
xmlns:b="http://company.ibm.com/store">
<findInventoryRes>
<sku>SKU10</sku>
<price>461.73</price>
<inventory>460</inventory>
<msrp>923.46</msrp>
<supplierID>IBM</supplierID>
</findInventoryRes>
</b:findInventoryResponse>
</soapenv:Body>
</soapenv:Envelope>
以下のメッセージが、ドメインのデフォルト・ログに出力されます。
Notify action triggered ('operation_38_2_sla1-1-filter_1-notify') from source policy 
    ('LogEveryTime_287d0790-83d9-11e1-a255-9187e20cddb0_05aec6ec-3674-4165-85de-a0f7be48a938' 
注: このメッセージを表示するには、ロギングがデバッグに設定されている必要があります。 そうでない場合は、DataPower Web コンソールの「トラブルシューティング (Troubleshooting)」アイコンをクリックしてください。 「ロギング」セクションで、「ログ・レベル (Log level)」の値を「デバッグ (debug)」に変更して、「ログ・レベルの設定 (Set Log Level)」をクリックします。

ログを見つけるには、 「ファイル」を選択してから「ファイル管理 (File Administration)」 > 「ファイル処理 (File Management)」を選択します。 ログは logtemp フォルダーにあり、default-log という名前です。 ログのラッピングのために、テストを実行する前にまずログ・ファイルを Web ブラウザー・ウィンドウに入れてから、 テストを実行した後にブラウザーのタブをテストしてリフレッシュしてください。


概念 概念

フィードバック


タイム・スタンプ・アイコン 最終更新: 2012年10月16日


http://publib.boulder.ibm.com/infocenter/prodconn/v1r0m0/topic/com.ibm.scenarios.soawdpwsrr.doc/topics/csoa2_sample_run.htm