Exécution de l'exemple de scénario de test

Vous pouvez utiliser un exemple d'application Web ou la ligne de commande pour tester le modèle d'application sur le modèle SOA Policy Gateway Basic Runtime Sample déployé. Six variations de test peuvent être exécutées sur le modèle d'application via la ligne de commande.

Pour déployer le modèle Basic Sample Runtime, voir Déploiement du modèle d'exécution basique.

Scénario de test de l'exemple d'application Web

Pour exécuter ce scénario de test d'application Web, procédez comme suit :
  1. Recherchez le nom d'hôte de l'environnement WSRR déployé en ouvrant l'instance de système virtuel déployée. Pour trouver le nom d'hôte, développez la section Machines virtuelles et sélectionnez la machine virtuelle du serveur WSRR autonome pour afficher les détails de la machine virtuelle. Dans la section Matériel et réseau, le nom d'hôte correspond à la valeur Interface réseau 0.
  2. Ouvrez l'adresse URL dans un navigateur Web : http://<nom_hôte_wssr>:9080/SoaPolicyTester
  3. Les options suivantes sont disponibles :
    • Standard Request - Envoie une requête findInventory au service du magasin. L'ID de contexte est un utilisateur Silver. L'ID consommateur est CEO. Le résultat est réussi lorsque le texte Part: SKU10 Price: 401.73 s'affiche.
    • Routing Policy Test - Similaire à Standard Request, mais un ID de contexte Gold. La requête est dirigée vers un autre noeud final exécutant le service. Un résultat correcte renvoie Part: GOLDSKU10 Price: 401.73.
    • Validation Policy Test - Envoie une requête avec un contenu non valide. La règle de validation requiert DataPower pour valider la requête et rejeter les messages non valides. Un résultat réussi est un message de réponse émanant de DataPower, à savoir "Internal Error (from client)".
    • REST Gold - Envoie une requête au service RESTful SKU avec l'ID Consommateur CEO et l'ID de contexte Gold. Les requêtes gold sont soumises à une règle autorisant uniquement 5 messages en 90 secondes. Une requête réussie affiche le résultat Part: SKU33 Price: 136.43.
    • REST Silver - Similaire à Rest GOLD, mais avec l'ID de contexte Silver. Les requêtes Silver sont autorisés au nombre de 3 par tranche de 90 secondes. Une requête réussie affiche le résultat Part: SKU33 Price: 136.43.
    • ID utilisateur - Cette option autorisé les valeurs suivantes : Full Content ou Redacted Content. Chaque option traite les requêtes émanant d'utilisateurs différents. L'exemple utilise une règle XACML qui limite l'affichage du prix aux Managers. Dans le message de réponse, la valeur du prix est rédigée sauf si Full Content est sélectionné. Lorsque Redacted Content est sélectionné, un résultat réussi pour les requêtes contient Price: 0.0. Le service RESTful ne gère pas la rédaction. L'utilisateur sélectionné n'a aucun effet.
  4. Ouvrez la console WSRR et explorez le service et les règles. Pour plus d'informations, voir Connexion à WSRR - Business Space.

L'échantillon peut également être exercé à l'aide de la ligne de commande. Il s'agit du seul moyen d'envoyer du trafic utilisant le SLA anonyme

Démonstration de XACML Permit/Deny avec le scénario Redaction à l'aide de la ligne de commande

La requête XML suivante peut être envoyée au service 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>
En supposant que l'exemple de requête XML est contenu dans un fichier nommé silver.xml, exécutez la commande curl suivante :
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
Dans cet exemple, ConsumerX est un Manager et les informations complètes sur les prix doivent s'afficher comme réponse :
<?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>

Exécution du scénario Redaction à l'aide de la ligne de commande

ConsumerA n'est pas un Manager, nous devons donc voir une réponse différente. Exécutez la commande curl :
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerA:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
Notez le prix est rédigé dans la réponse. Le prix est affiché en tant que 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>

Test de la stratégie de routage à l'aide de la ligne de commande

Pour que la règle de routage rattachée au SLA Gold s'applique, il est nécessaire que le ID de contexte et le ID consommateur correspondent. Dans ce cas, le SLA des consommateurs Gold a Gold pour ID de contexte, tandis que la version du service consommateur a CEO pour ID consommateur. Voici le contenu d'un exemple de requête (vous pouvez constater que le ID de contexte et le ID consommateur coïncident comme exigé) :

<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>
En supposant que l'exemple de requête XML est contenu dans un fichier nommé gold.xml, exécutez la commande curl suivante :
curl -k --data-bin @./gold.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
La réponse est la suivante :
<?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>
Notez que la réponse en retour contient un GOLDSKU pour la valeur de SKU, indiquant que le noeud final Gold a été utilisé.

Test de la validation du schéma à l'aide de la ligne de commande

La règle de validation vérifie le schéma de la requête par rapport à Store.wsdl et est associé à Company.xsd.
Le code XML suivant, badvalid.xml, présente une requête qui n'est pas valide car le corps contient un élément nommé <skubad> alors qu'il doit être <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 vous entrez la requête curl suivante :
curl -k --data-bin @./badvalid.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd
http://<yourDataPowerHostName>:62005/Store/Store
Le message d'erreur suivant s'affiche :
<?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>

Test du refus dans la règle de médiation à l'aide de la ligne de commande

L'une des règles de médiation incluses dans l'exemple teste le refus après que le nombre de messages atteint 5 dans l'espace de 90 secondes. Exécutez la commande suivante 6 fois :
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<yourDataPowerHostName>:62005/Store/Store
L'exemple de requête est comme suit :
<?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>
Dans ce cas, ConsumerX est un gestionnaire. En conséquence, les informations complètes sur les prix sont affichées ainsi pour les cinq premières exécutions :
<?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>
Pour la sixième exécution, vous devez voir l'erreur suivante :
<?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>
Remarque : Vous pourriez voir cette erreur plus tôt en exécutant d'autres tests dans l'intervalle de 90 secondes.

Test de notification dans la règle de médiation à l'aide de la ligne de commande

La règle de notification est rattachée au SLA anonyme. Ceci s'applique lorsqu'une demande émane d'un consommateur ne disposant pas de SLA. Dans cet exemple, le seul consommateur disposant de SLA est le directeur. Aussi une demande dont l'ID consommateur est réglé sur une autre valeur implique l'application du SLA anonyme par la règle. Dans ce cas, ConsumerX est un gestionnaire, nous devons donc voir les informations complètes sur les prix comme suit :

Pour tester cette fonctionnalité à l'aide de la ligne de commande, créez un fichier nommé anon.xml qui contient le code xml suivant :
<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>
Entrez ensuite la commande suivante :
curl -k --data-bin @./anon.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>:62005/Store/Store
Le message suivant est émis dans le journal par défaut du domaine :
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'
Remarque : La consignation doit être réglée sur notice pour que ce message s'affiche. Autrement, cliquez sur l'icône de dépannage (Identification et résolution des problèmes) dans la console Web de DataPower. Dans la section Consignation, changez la valeur Log level pour notice, puis cliquez sur Set Log Level. Pour trouver le journal, retournez dans le panneau de commande, puis cliquez sur l'icône d'affichage des journaux (View Logs).

Test du service RESTful à l'aide de la ligne de commande

Vous pouvez également accéder à l'interface RESTful à l'aide de la commande curl sur la ligne de commande. Comme avec le client Web, un ID de contexte de type gold permet 5 messages par tranche de 90 secondes contre 2 messages par tranche de 90 seconde pour un ID de contexte de type silver.

Pour tester cette fonctionnalité à l'aide de la ligne de commande, créez un fichier nommé restRequest.xml qui contient le code xml suivant :

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

Entrez ensuite la commande suivante pour tester l'ID de contexte de type gold :

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

Pour tester l'ID de contexte de type silver, utilisez la même commande en remplaçant Gold par Silver.

Une réponse réussie se présente sous une forme similaire :

<?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>
Après que le seuil a été atteint, vous recevez le message suivant :
<?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>

Pour tester le SLA anonyme pour le service RESTful, qui possède simplement une règle de notification jointe, utilisez n'importe quels ID de contexte et ID consommateur autres que ceux enregistrés. La notification s'affiche dans le journal DataPower comme décrit précédemment pour l'exemple des services Web.


Concept Concept

Commentaires


Icône d'horodatage Dernière révision: Thursday, 13 March 2014


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