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 SOA Policy Gateway Basic Runtime Sample-Muster implementieren.
Anmerkung: Der Wert von SamplePolicySample_starting_port, der in den folgenden XML-Beispielen verwendet wird, ist in den Protokollen für SOA Policy Gateway Basic Runtime Sample zu finden.

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. Erweitern Sie dazu 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. Die Testanzeige für die in DataPower implementierte Beispielanwendung wird angezeigt.
  4. Die folgenden Optionen sind verfügbar:
    • Send Standard - Sendet eine Anforderung 'findInventory' an den Service 'Store'. Die Kontext-ID gibt einen Benutzer der Kategorie Silver an. Ein erfolgreiches Ergebnis ist Part: SKU10 Price: 461.73.
    • Send Routed - Sendet eine Anforderung 'findInventory' an den Service 'Store'. Die Kontext-ID gibt einen Benutzer der Kategorie Gold an, sodass die Anforderung an eine Gold-Implementierung des Service geleitet wird. Ein erfolgreiches Ergebnis ist Part: GOLDSKU10 Price: 461.73.
    • Send Invalid - Sendet eine Anforderung mit ungültigen Nutzdaten. Die Prüfrichtlinie erfordert, dass DataPower die Anforderung überprüft. Ein erfolgreiches Ergebnis ist in diesem Fall eine Antwortnachricht von DataPower: "Internal Error (from client)".
    • User ID = ConsumerA - Für Aufrufe mit der Benutzer-ID (UserID) 'ConsumerA' wird die XACML-Richtlinie durchgesetzt, sodass die Preisinformationen nur für Manager zurückgegeben werden. Der Wert von 'Price' in der Antwortnachricht wird überarbeitet. Ein erfolgreiches Ergebnis enthält die Angabe Price: 0.0.
    • Many Standard Requests - Wenn mehr als fünf Anforderungen innerhalb von 90 Sekunden ausgeführt werden, wird die Zurückweisungsrichtlinie durchgesetzt. Eine erfolgreiche Antwort, die die Durchsetzung der Richtlinie demonstriert, ist: Rejected: "Rejected (from client)".
  5. Öffnen Sie die WSRR-Konsole und untersuchen Sie den Service und die Richtlinien. Weitere Informationen finden Sie in .
Gehen Sie wie folgt vor, um die Testfälle für die Beispielanwendung über die Befehlszeile auszuführen:

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 obige Beispiel für das Anforderungs-XML in einer Datei mit dem Namen silver.xml enthalten ist, können Sie den folgenden curl-Befehl ausführen:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<ihrDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
In diesem Beispiel ist ConsumerX ein Manager, sodass die vollständigen Preisinformationen als Antwort zurückgegeben 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. Führen Sie den curl-Befehl aus:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerA:passw0rd http://<ihrDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/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

Die Kontext-ID ('ContextIdentifier') des SLA wird verwendet, um die Routing-Richtlinie auszulösen. In diesem Fall hat das SLA für Gold-Kunden den Wert Gold im SLA. Der Inhalt einer Beispielanforderung mit dem Wert "Gold" im Element 'ContextIdentifier' sieht zum Beispiel wie folgt aus:
<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 obige Beispiel für das Anforderungs-XML in einer Datei mit dem Namen gold.xml enthalten ist, können Sie den folgenden curl-Befehl ausführen:
curl -k --data-bin @./gold.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<ihrDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/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.wsl' 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>

Jetzt wird die folgende curl-Anforderung ausgeführt:
curl -k --data-bin @./badvalid.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd
http://<ihrDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
Diese Anforderung generiert den folgenden Fehler:
<?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://<ihrDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/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 wie unten gezeigt 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

Falls 'ContextIdentifier' nicht den Wert Gold hat, wird kein SLA zugeordnet und das anonyme SLA wird verwendet. Die Mediationsrichtlinie für das anonyme SLA gibt Protokollieren oder Benachrichtigen an. Dies erfordert, dass der Debugmodus für die Sample-Domäne aktiviert wird. Führen Sie den folgenden Befehl aus:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<ihrDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
In diesem Fall ist ConsumerX ein Manager, sodass die vollständigen Preisinformationen zurückgegeben 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">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>
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 'debug' 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 debug und klicken Sie auf Set Log Level (Protokollierungsstufe festlegen).

Das Protokoll finden Sie, indem Sie Files und File Administration > File Management auswählen. Das Protokoll befindet sich im Ordner logtemp und hat den Namen default-log. Wegen der zyklischen Wiederverwendung des Protokolls kann es erforderlich sein, die Protokolldatei vor der Ausführung des Tests in einem Web-Browser-Fenster zu öffnen und die Registerkarte im Browser nach der Ausführung des Tests zu aktualisieren.


Konzept Konzept

Feedback


Timestamp icon Letzt aktualisiert: 16. Oktober 2012


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