Esecuzione di scenari di test di esempio

È possibile utilizzare l'applicazione Web di esempio o la riga comandi per eseguire il test dell'applicazione di esempio su SOA Policy Gateway Basic Runtime Sample distribuito. Possono essere eseguite sei variazioni test da riga comandi sull'applicazione di esempio.

Per distribuire il Basic Runtime Sample, consultare Distribuzione del pattern Basic Runtime Sample.

Esecuzione dello scenario di test dell'applicazione Web di esempio

Per eseguire lo scenario di test dell'applicazione Web:
  1. Individuare il nome host dell'ambiente WSRR distribuito aprendo l'istanza del sistema virtuale distribuito. Per individuare il nome host, espandere la sezione Macchine virtuali e selezionare la macchina virtuale del server autonomo WSRR per visualizzarne i dettagli. Nella sezione Hardware e rete, il nome host è il valoree Interfaccia di rete 0.
  2. Aprire l'URL in un browser Web: http://<wssrHostName>:9080/SoaPolicyTester
  3. Le seguenti opzioni sono disponibili:
    • Richiesta standard - Invia una richiesta findInventory al servizio di archivio. L'ID contesto è Silver. L'ID consumer è CEO. Un risultato corretto visualizza il testo Part: SKU10 Price: 401.73.
    • Testo politica di instradamento - Uguale a Richiesta standard, ma con ID contesto di tipo Gold. La richiesta è instradata a un endpoint alternativo eseguendo il servizio. Un risultato corretto restituisce Part: GOLDSKU10 Price: 401.73.
    • Test politica di convalida - Invia una richiesta a un payload non valido. La politica di convalida necessita che DataPower convalidi la richiesta e rifiuti quei messaggi che non sono validi. Un risultato corretto è un messaggio di risposta da DataPower "Internal Error (from client)".
    • REST Gold - Invia la richiesta al servizio RESTful SKU con ID consumer CEO e ID contesto Gold. Le richieste Gold sono subordinate a una politica che consente solo 5 messaggi in 90 secondi. Una richiesta corretta visualizza il risultato Part: SKU33 Price: 136.43.
    • REST Silver - Uguale a Rest GOLD, ma con ID contesto Silver. Le richieste Silver sono subordinate a una politica che consente 3 richieste separate in 90 secondi. Una richiesta corretta visualizza il risultato Part: SKU33 Price: 136.43.
    • ID utente - L'opzione ID utente ha due valori possibili; Contenuto completo o Contenuto redatto. Ogni opzione comporta delle richieste provenienti da utenti diversi. L'esempio utilizza una politica XACML, che consente solo ai responsabili la consultazione del prezzo. Il valore di Prezzo nel messaggio di risposta è redatto a meno che Contenuto completo sia selezionato. Un risultato corretto per le richieste quando Contenuto redatto è selezionato contiene Price: 0.0. Il servizio RESTful non supporta la funzione di redazione. L'utente selezionato non ha alcun effetto.
  4. Aprire la console WSRR ed esplorare il servizio e le politiche. Per ulteriori informazioni, consultare Connessione a WSRR - Business Space.

L'esempio può essere verificato utilizzando la riga comandi. Questo è l'unico modo per inviare il traffico che utilizza lo SLA anonimo

Descrizione del meccanismo Consenti/Nega XACML con lo scenario di redazione utilizzando la riga comandi

La seguente codifica XML della richiesta può essere inviata a DataPower StoreAddLTPA Service:
<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>
Supponendo che la codifica XML della richiesta di esempio sia contenuta in un file denominato silver.xml, immettere il seguente comando curl:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
In questo esempio, ConsumerX è un gestore, pertanto le informazioni relative al prezzo pieno sono visibili nella risposta:
<?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>

Esecuzione dello scenario di redazione utilizzando la riga comandi

ConsumerA non è un responsabile, pertanto visualizza una risposta differente. Immettere il comando curl:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerA:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
Tenere presente che la risposta ha il prezzo redatto. Il prezzo è visualizzato come 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>

Verifica della politica di instradamento utilizzando la riga comandi

Affinché la politica di instradamento allegata allo SLA Gold venga applicata, l'ID contesto e l'ID consumer devono corrispondere. In questo caso, lo SLA per i client Gold ha l'ID contesto di tipo Gold, mentre la versione di servizio consumer ha l'ID consumer di tipo CEO. Di seguito è riportato il contenuto di una richiesta di esempio (è possibile visualizzare la corrispondenza dell'ID contesto e dell'ID consumer come richiesto):

<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>
Supponendo che la codifica XML della richiesta di esempio sia contenuta in un file denominato gold.xml, immettere il seguente comando curl:
curl -k --data-bin @./gold.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
La risposta è riportata di seguito:
<?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>
Tenere presente che la risposta di ritorno presenta il valore GOLDSKU per SKU, per indicare che è stato utilizzato l'endpoint gold.

Verifica della convalida dello schema utilizzando la riga comandi

La politica di convalida controlla lo schema della richiesta sul file Store.wsdl e sul relativo file Company.xsd associato.
Il seguente XML, badvalid.xml, mostra una richiesta non valida poiché il corpo contiene un elemento denominato <skubad> quando dovrebbe essere <sku>:
<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>

Se si immette la seguente richiesta curl:
curl -k --data-bin @./badvalid.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd
http://<yourDataPowerHostName>:62005/Store/Store
Viene visualizzato il seguente errore:
<?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>

Verifica del rifiuto nella politica di mediazione utilizzando la riga comandi

Una delle politiche di mediazione incluse nell'esempio verifica il rifiuto dopo che i messaggi vengono eseguiti 5 volte in 90 secondi. Eseguire il comando riportato di seguito 6 volte:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<yourDataPowerHostName>:62005/Store/Store
La richiesta di esempio è riportata di seguito:
<?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 questo caso, ConsumerX è un Responsabile, pertanto le informazioni relative al prezzo pieno vengono visualizzate come per le prime cinque esecuzioni:
<?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>
Alla sesta esecuzione si verifica il seguente errore:
<?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>
Nota: Questo errore potrebbe essere visualizzato prima se si eseguono altri test entro l'intervallo di 90 secondi.

Verifica della notifica nella politica di mediazione utilizzando la riga comandi

La politica di notifica viene allegata allo SLA anonimo. Ciò viene applicato quando si riceve una richiesta da un consumer che non dispone di un accordo SLA. In questo esempio, l'unico consumer che dispone di SLA appropriati è CEO, quindi una richiesta contenente l'ID consumer impostato su altro comporta l'applicazione della politica sullo SLA anonimo. In questo caso ConsumerX è un responsabile, quindi vengono visualizzate le informazioni relative al prezzo pieno:

Per verificare questa funzionalità utilizzando la riga comandi, creare un file denominato anon.xml contenente il seguente xml:
<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>
Quindi, immettere il seguente comando:
curl -k --data-bin @./anon.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
Il seguente messaggio viene emesso nel log predefinito del dominio:
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'
Nota: La registrazione deve essere impostata su notice per visualizzare questo messaggio. In caso contrario, fare clic sull'icona Risoluzione dei problemi nella console Web DataPower. Nella sezione Registrazione, modificare il valore Livello di registrazione in notice e fare clic su Imposta livello di log. Per individuare il file di log, ritornare al pannello di controllo e fare clic sull'icona Visualizza log.

Verifica del servizio RESTful utilizzando la riga comandi

È possibile inoltre accedere all'interfaccia RESTful dalla riga comandi utilizzando curl. Come con il client Web, un ID contesto di tipo Gold consente 5 messaggi per 90 secondi, mentre Silver solo 2 messaggi.

Per verificare questa funzionalità utilizzando la riga comandi, creare un file denominato restRequest.xml che contiene il seguente xml:

<?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>

Quindi, immettere il seguente comando per eseguire la verifica con ID contesto Gold:

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

Per eseguire la verifica con l'ID contesto Silver, utilizzare lo stesso comando, ma sostituire Gold con Silver.

Una risposta corretta è:

<?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>
Dopo che la soglia è stata raggiunta, viene ricevuto il seguente messaggio:
<?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>

Per acquisire dimestichezza con lo SLA anonimo per il servizio RESTful, che ha semplicemente una politica di notifica allegata, utilizzare un qualsiasi ContextID o ConsumerID diverso da quelli registrati. La notifica appare nel log DataPower come descritto in precedenza per l'esempio dei servizi Web.


Concetto Concetto

Feedback


Timestamp icon Ultimo aggiornamento: 6 Marzo 2014


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