Beispieltestfälle ausführen

Sie können die Anwendung 'Sample' im implementierten Muster von SOA Policy Gateway Basic Runtime Sample mithilfe einer Beispielwebanwendung oder über die Befehlszeile testen. Es stehen sechs Testvarianten für die Befehlszeile zur Verfügung, die für die Beispielanwendung ausgeführt werden können.

Informationen zur Implementierung von Basic Sample Runtime finden Sie in Das Basic Runtime Sample-Muster implementieren.

Testfall für die Beispielwebanwendung ausführen

Gehen Sie wie folgt vor, um den Testfall für die Webanwendung ausführen:
  1. Ermitteln Sie den Hostnamen der implementierten WSRR-Umgebung, indem Sie die implementierte virtuelle Systeminstanz öffnen. Um den Hostnahmen zu suchen, erweitern Sie den Abschnitt Virtual machines und wählen Sie die virtuelle Maschine für den eigenständigen WSRR-Server (WSRR Standalone Server) aus, um die Details zur virtuellen Maschine anzuzeigen. Im Abschnitt Hardware and network ist der Hostname der Wert in Network interface 0.
  2. Öffnen Sie die URL-Adresse in einem Web-Browser: http://<wssrHostName>:9080/SoaPolicyTester
  3. Folgende Optionen sind verfügbar:
    • Standard Request - Sendet eine Anforderung 'findInventory' an den Service 'Store'. Die Kontext-ID ist 'Silver'. Die Konsumenten-ID ist 'CEO'. Ein erfolgreiches Ergebnis zeigt den Text Part: SKU10 Price: 401.73 an.
    • Routing Policy Test - Wie bei 'Standard Request', jedoch lautet die Kontext-ID 'Gold'. Die Anforderung wird an einen alternativen Endpunkt weitergeleitet, der den Service ausführt. Ein erfolgreiches Ergebnis gibt Part: GOLDSKU10 Price: 401.73 zurück.
    • Validation Policy Test - Sendet eine Anforderung mit ungültigen Nutzdaten. Die Prüfrichtlinie erfordert, dass DataPower die Anforderung überprüft und die ungültigen Nachrichten ablehnt. Ein erfolgreiches Ergebnis ist eine Antwortnachricht von DataPower "Internal Error (from client)".
    • REST Gold - Sendet eine Anforderung an den REST-konformen Service mit der Konsumenten-ID "CEO" und der Kontext-ID "Gold". Gold-Anforderungen unterliegen einer Richtlinie, die nur 5 Nachrichten in 90 Sekunden zulässt. Eine erfolgreiche Anforderung zeigt Part: SKU33 Price: 136.43 an.
    • REST Silver - Wie "Rest GOLD", aber mit der Kontext-ID "Silver". Silver-Anforderungen lassen 3 separate Anforderungen in 90 Sekunden zu. Eine erfolgreiche Anforderung zeigt Part: SKU33 Price: 136.43 an.
    • User ID - Die Option "User ID" hat zwei mögliche Werte: "Full Content" oder "Redacted Content". Jede Option ergibt Anforderungen, die von verschiedenen Benutzern stammen. Das Beispiel verwendet eine XACML-Richtlinie, mit der nur Manager den Preis sehen können. Der Wert von 'Price' in der Antwortnachricht wird überarbeitet es sei denn, "Full Content" wurde ausgewählt. Ein erfolgreiches Ergebnis für Anforderungen, wenn "Redacted Content" ausgewählt wurde, ist Price: 0.0. Der REST-konforme Service unterstützt die Überarbeitung nicht. Der ausgewählte Benutzer hat keine Auswirkungen.
  4. Öffnen Sie die WSRR-Konsole und untersuchen Sie den Service und die Richtlinien. Weitere Informationen finden Sie in Verbindung zu WSRR herstellen - Business Space.

Das Beispiel kann auch über die Befehlszeile ausgeführt werden. Dies ist die einzige Möglichkeit, Datenverkehr zu senden, der eine anonyme SLA verwendet.

XACML-Permit/Deny-Richtlinien mit dem Überarbeitungsszenario über die Befehlszeile demonstrieren

Die das folgende Anforderungs-XML kann an den DataPower-Service 'StoreAddLTPA' gesendet werden:
<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>
Unter der Annahme, dass das Beispiel für das Anforderungs-XML in einer Datei mit dem Namen silver.xml enthalten ist, geben Sie den folgenden curl-Befehl ein:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
In diesem Beispiel ist ConsumerX ein Manager, sodass die vollständigen Preisinformationen in der Antwort angezeigt werden:
<?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>

Überarbeitungsszenario über die Befehlszeile ausführen

Der Benutzer 'ConsumerA' ist kein Manager, sodass ihm eine andere Antwort zurückgegeben wird. Geben Sie den curl-Befehl ein:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerA:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
Beachten Sie, dass in der Antwort der Preis überarbeitet wurde und nun mit 0.0 angegeben wird:
<?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>

Routing-Richtlinie über die Befehlszeile testen

Bei der Routing-Richtlinie, die der durchzusetzenden "Gold SLA" zugeordnet ist, müssen die Kontext-ID und die Konsumenten-ID übereinstimmen. In diesem Fall hat das SLA für Gold-Kunden die Kontext-ID "Gold" und die verwendete Serviceversion hat die Kosumenten-ID "CEO". Der Inhalt einer Beispielanforderung sieht wie folgt aus (Kontext-ID und Konsumenten-ID sind erforderlich):

<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>
Unter der Annahme, dass das Beispiel für das Anforderungs-XML in einer Datei mit dem Namen gold.xml enthalten ist, geben Sie den folgenden curl-Befehl ein:
curl -k --data-bin @./gold.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
Die Antwort sieht wie folgt aus:
<?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>
Beachten Sie, dass die zurückgegebene Antwort den Wert GOLDSKU als SKU-Wert enthält, was darauf hinweist, dass der Endpunkt für "Gold" verwendet wurde.

Prüfung des Schemas über die Befehlszeile testen

Die Prüfrichtlinie überprüft das Schema der Anforderung anhand der Datei 'Store.wsdl' und der zugeordneten Datei 'Company.xsd'.
Das folgende XML-Beispiel badvalid.xml zeigt eine Anforderung, die ungültig ist, weil der Hauptteil ein Element mit dem Namen <skubad> anstelle des geforderten Elements <sku> enthält:
<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>

Wenn Sie die folgende curl-Anforderung eingeben:
curl -k --data-bin @./badvalid.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd
http://<yourDataPowerHostName>:62005/Store/Store
Der folgende Fehler wird angezeigt:
<?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>

Zurückweisung in der Mediationsrichtlinie über die Befehlszeile testen

Eine der Mediationsrichtlinien, die im Beispiel enthalten sind, testet die Zurückweisung, nachdem die Nachrichtenzählung 5-mal in 90 Sekunden ausgeführt wurde. Führen Sie den folgenden Befehl 6-mal aus:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<yourDataPowerHostName>:62005/Store/Store
Die Beispielanforderung sieht wie folgt aus:
<?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>
In diesem Fall ist ConsumerX ein Manager. Daher werden die vollständigen Preisinformationen für die ersten fünf Ausführungen zurückgegeben:
<?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>
Bei der sechsten Ausführung wird der folgende Fehler zurückgegeben:
<?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>
Anmerkung: Dieser Fehler wird möglicherweise früher angezeigt, wenn Sie andere Tests innerhalb des 90-Sekunden-Intervalls ausgeführt haben.

Benachrichtigung in der Mediationsrichtlinie über die Befehlszeile testen

Die Benachrichtigungsrichtlinie ist der anonymen SLA zugeordnet. Sie wird durchgesetzt, wenn eine Anforderung von einem Konsumenten eingeht, der keine SLA besitzt. In diesem Beispiel ist der einzige Konsument, der SLAs besitzt, ein "CEO", daher wird durch die Anforderung, die eine Konsumenten-ID hat, die auf etwas anderes festgelegt ist, die Richtlinie zur anonymen SLA durchgesetzt. In diesem Fall ist ConsumerX ein Manager, sodass die vollständigen Preisinformationen angezeigt werden:

Um diese Funktion über die Befehlszeile zu testen, erstellen Sie eine Datei mit dem Namen anon.xml , die das folgende XML enthält:
<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">ABC</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>
Geben Sie dann den folgenden Befehl ein:
curl -k --data-bin @./anon.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
Die folgende Nachricht wird im Standardprotokoll der Domäne ausgegeben:
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'
Anmerkung: Die Protokollierung muss auf notice eingestellt sein, damit diese Nachricht angezeigt wird. Wenn dies nicht der Fall ist, klicken Sie auf das Symbol für Fehlerbehebung in der DataPower-Webkonsole. Ändern Sie im Abschnitt für die Protokollierung ('Logging') den Wert für 'Log level' (Protokollierungsstufe) in notice und klicken Sie auf Set Log Level (Protokollierungsstufe festlegen). Um das Protokoll zu suchen, kehren Sie zur Systemsteuerung zurück und klicken Sie auf das Symbol View Logs.

REST-konformen Service über die Befehlszeile testen

Sie können auf die REST-konforme Schnittstelle über die Befehlszeile mit dem curl-Befehl zugreifen. Mit dem Web-Client lässt die Kontext-ID "Gold" nur 5 Nachrichten pro 90 Sekunden und "Silver" nur 2 Nachrichten zu.

Um diese Funktion über die Befehlszeile zu testen, erstellen Sie eine Datei mit dem Namen "restRequest.xml", die das folgende XML enthält:

<?xml version="1.0" encoding="UTF-8"?>
<a:WarehouseSKUPost xmlns:a="http://company.ibm.com/">
   <postRequest>
      <sku>SKU33</sku>
      <purchaseCost>136.43</purchaseCost>
      <inventory>429</inventory>
      <msrp>272.86</msrp>
      <returns>0</returns>
   </postRequest>
</a:WarehouseSKUPost>

Geben Sie dann den folgenden Befehl ein, um einen Test mit der Kontext-ID „Gold“ durchzuführen:

curl -k --data-bin @./restRequest.xml -H "Content-Type: text/xml" -H "consumerID:CEO" -H "contextID:Gold"  http://<yourDataPowerHostName>:62006/WarehouseSKU

Um die Kontext-ID 'Silver' zu testen, verwenden Sie denselben Befehl, aber ersetzen Sie 'Gold' durch 'Silver'.

Die erfolgreiche Antwort ist:

<?xml version="1.0" encoding="UTF-8"?>
<a:WarehouseSKUGet xmlns:a="http://company.ibm.com/">
<getRequest>
<sku>SKU33</sku>
<purchaseCost>136.43</purchaseCost>
<inventory>429</inventory>
<msrp>272.86</msrp>
<returns>0</returns>
<supplierID>ABB</supplierID>
<purchaseID/>
</getRequest>
</a:WarehouseSKUGet>
Wenn der Schwellenwert überschritten wurde, wird folgende Nachricht angezeigt:
<?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>

Um die anonyme SLA für den REST-konformen Service auszuführen, dem einfach eine Benachrichtigungsrichtlinie zugeordnet wurde, verwenden Sie eine andere Kontext-ID und Konsumenten-ID als die registrierten IDs. Die Benachrichtigung wird im DataPower-Protokoll angezeigt, wie im Web-Services-Beispiel bereits beschrieben wurde.


Konzept Konzept

Feedback


Timestamp icon Letzte Aktualisierung: 03.03.2014


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