Ejecución de los casos de prueba de ejemplo

Puede utilizar la aplicación web de ejemplo o la línea de mandatos para probar la aplicación de ejemplo en el SOA Policy Gateway Basic Runtime Sample desplegado. Seis variaciones de prueba de línea de mandatos se pueden ejecutar en la aplicación de ejemplo.

Para desplegar el tiempo de ejecución de ejemplo básico, consulte Despliegue del patrón de ejemplo de tiempo de ejecución básico.

Ejecución del caso de prueba de la aplicación web de ejemplo

Para ejecutar el caso de prueba de la aplicación web:
  1. Encuentre el nombre de host del entorno WSRR desplegado abriendo la instancia de sistema virtual desplegada. Para encontrar el nombre de host, expanda la sección Máquinas virtuales y seleccione la máquina virtual del servidor autónomo WSRR para ver los detalles de la máquina virtual. En la sección Hardware y de red, el nombre de host es el valor de Interfaz de red 0.
  2. Abra el URL en un navegador Web: http://<nombre_host_wssr>:9080/SoaPolicyTester
  3. Están disponibles las opciones siguientes:
    • Solicitud estándar: envía una solicitud findInventory al servicio de almacén. El ID de contexto es Silver. El ID de consumidor es CEO. Un resultado exitoso muestra el texto Part: SKU10 Price: 401.73.
    • Prueba de política de direccionamiento: igual que Solicitud estándar pero con ID de contexto Gold. La solicitud se dirige a un punto final que ejecuta el servicio. Un resultado exitoso devuelve Part: GOLDSKU10 Price: 401.73.
    • Prueba de política de validación: envía una solicitud con una carga útil no válida. La política de validación solicita que DataPower valide la solicitud y rechace aquellos mensajes que no sean válidos. Un resultado exitoso es un mensaje de respuesta de DataPower "Internal Error (from client)".
    • REST Gold: envíe la solicitud al servicio SKU RESTful con CEO de ID de cliente e ID de contexto Gold. Las solicitudes Gold están sujetas a una política que permite solo 5 mensajes en 90 segundos. Una solicitud exitosa muestra el resultado Part: SKU33 Price: 136.43.
    • REST Silver: Igual que Rest GOLD, pero con el ID de contexto Silver. Las solicitudes Silver permiten 3 solicitudes separadas en 90. Una solicitud exitosa muestra el resultado Part: SKU33 Price: 136.43.
    • ID de usuario: la opción ID de usuario tiene dos posibles valores; Contenido completo o Contenido redactado. Cada opción crea solicitudes provenientes de distintos usuarios. El ejemplo utiliza una política XACML, que permite ver el precio solo a los Gestores. El valor de Precio en el mensaje de respuesta se redacta a menos que se seleccione Contenido completo. Un resultado exitoso para solicitudes cuando se selecciona Contenido relacionado contiene Price: 0.0. El servicio RESTful no da soporte a la redacción. El usuario seleccionado no tiene ningún efecto.
  4. Abra la consola de WSRR y explore el servicio y las políticas. Para obtener más información, consulte Conexión a WSRR - Business Space.

El ejemplo se puede poner en práctica utilizando la línea de mandatos. Esta es la única manera de enviar tráfico que utiliza el acuerdo de nivel de servicio anónimo

Demostración de Permitir/Denegar de XACML en el escenario Redacción utilizando la línea de mandatos

La siguiente solicitud XML se puede enviar al servicio StoreAddLTPA de DataPower:
<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>
Presuponiendo que el XML de la solicitud de ejemplo está contenido en un archivo denominado silver.xml, especifique el siguiente mandato curl:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
En este ejemplo, ConsumerX es Manager, por lo tanto, se visualizará la información de precio completo en la respuesta:
<?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>

Ejecución del escenario Redacción utilizando la línea de mandatos

ConsumerA no es Manager, por lo tanto, se visualizará una respuesta diferente. Especifique el mandato curl:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerA:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
Tenga en cuenta que la respuesta tiene el precio redactado. El precio se visualiza como 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>

Prueba de la política de direccionamiento utilizando la línea de mandatos

Para la política de direccionamiento conectada al SLA de Gold que se aplicará, el ID de contexto y el ID de consumidor deben coincidir. En este caso, el SLA para los Clientes Gold tiene el ID de consumidor de CEO. El siguiente es el contenido de la solicitud de ejemplo (puede ver que es necesario que el ID de contexto y el ID de consumidor coincidan):

<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>
Presuponiendo que el XML de la solicitud de ejemplo está contenido en un archivo denominado gold.xml, especifique el siguiente mandato curl:
curl -k --data-bin @./gold.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
La respuesta es la siguiente:
<?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>
Tenga en cuenta la respuesta de retorno tiene GOLDSKU como valor de SKU, lo que indica que se ha utilizado el punto final Gold.

Prueba de la validación del esquema utilizando la línea de mandatos

La política de validación comprueba el esquema de la solicitud en el Store.wsdl y su Company.xsd asociado.
El XML siguiente, badvalid.xml, muestra una solicitud que no es válida debido a que el cuerpo contiene un elemento denominado <skubad>, cuando éste debería ser <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>

Si especifica la siguiente solicitud curl:
curl -k --data-bin @./badvalid.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd
http://<yourDataPowerHostName>:62005/Store/Store
Se visualiza el siguiente error:
<?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>

Prueba del rechazo en la política de mediación utilizando la línea de mandatos

Una de las políticas de mediación incluida en el rechazo de las pruebas de ejemplo después de que el recuento de mensajes se ejecute 5 veces en 90 segundos. Ejecute el mandato siguiente 6 veces:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<yourDataPowerHostName>:62005/Store/Store
La solicitud de ejemplo es la siguiente:
<?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>
En este caso, ConsumerX es Manager, por lo tanto, se mostrará la información completa de precios para las cinco primeras ejecuciones:
<?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>
En la sexta ejecución, se produce el siguiente error:
<?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: Es posible que detecte este error antes si ejecuta otras pruebas dentro del intervalo de 90 segundos.

Prueba de la notificación en la política de mediación utilizando la línea de mandatos

La política de notificaciones se adjunta al SLA anónimo. Este se aplica cuando una solicitud viene de un consumidor que no tiene un SLA vigente. En este ejemplo, el único consumidor que tiene SLA vigentes es CEO, por lo que una solicitud que contiene el ID de consumidor establecido en otra cosa provocará que se aplique de la política en el SLA anónimo. En este caso ConsumerX es Manager, por lo tanto, se visualizará la información de precio completo:

Para probar esta funcionalidad utilizando la línea de mandatos, cree un archivo denominado anon.xml que contenga el siguiente 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>
A continuación, especifique el mandato siguiente:
curl -k --data-bin @./anon.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
Se registra el mensaje siguiente en el archivo de registro predeterminado 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: El registro debe establecerse en aviso para ver este mensaje. Si no lo está, pulse el icono Resolución de problemas en la consola web de DataPower. En la sección Registro, cambie el valor de Nivel de registro a aviso y pulse Establecer nivel de registro. Para encontrar el registro, vuelva al panel de control y pulse el icono Ver registros.

Prueba del servicio RESTful mediante la línea de mandatos

También puede acceder a la interfaz RESTful desde la línea de mandatos mediante curl. Como con el cliente web, un ID de contexto Gold permite 5 mensajes en 90 segundos y Silver solo 2 mensajes.

Para probar esta funcionalidad utilizando la línea de mandatos, cree un archivo denominado restRequest.xml, que contenga el siguiente 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>

A continuación, especifique el mandato siguiente para probar con el ID de contexto Gold:

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

Para probar con el ID de contexto Silver, utilice el mismo mandato pero sustituya Gold por Silver.

Un respuesta correcta es:

<?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>
Si traspasa el umbral, recibirá el siguiente mensaje:
<?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>

Para aplicar el SLA anónimo al servicio RESTful, que simplemente tiene una política de notificación adjunta, utilice cualquier ID de contexto o ID de consumidor distinto al registrado. La notificación aparece en el registro de DataPower, como se describe anteriormente en el ejemplo de Servicios web.


Concepto Concepto

Comentarios


Icono de fecha y hora Última actualización: 06.03.2014


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