运行样本测试用例

您可以使用样本 Web 应用程序或命令行测试已部署 SOA Policy Gateway Basic Runtime Sample 上的样本应用程序。 有六个命令行测试变体可在样本应用程序上运行。

要部署 Basic Sample Runtime,请参阅部署 SOA Policy Gateway Basic Runtime Sample 模式
注: 可在 SOA Policy Gateway Basic Runtime Sample 的日志中找到以下 XML 样本中所使用的 SamplePolicySample_starting_port 的值。

运行样本 Web 应用程序测试用例

要运行 Web 应用程序测试用例,请执行以下操作:
  1. 通过打开已部署的“虚拟系统实例”,找到已部署 WSRR 环境的主机名。要执行此操作,请展开虚拟机部分,并选择 WSRR 独立服务器的虚拟机以查看虚拟机详细信息。在硬件和网络部分,主机名为网络接口 0 值。
  2. 在 Web 浏览器中打开 URL:http://<wssrHostName>:9080/SoaPolicyTester
  3. 将显示在 DataPower® 中实施的样本应用程序的测试屏幕。
  4. 选项为:
    • 发送标准 - 将 findInventory 请求发送至存储服务。上下文标识为“Silver”用户。成功的结果为:Part: SKU10 Price: 461.73
    • 发送已路由 - 将 findInventory 请求发送至存储服务。上下文标识为“Gold”用户,因此请求将路由至服务的 Gold 实施。成功的结果为:Part: GOLDSKU10 Price: 461.73
    • 发送无效 - 发送具有无效内容的请求。验证策略需要 DataPower 来验证该请求,成功的结果将是来自 DataPower 的响应消息:"Internal Error (from client)"
    • 用户标识 = ConsumerA - 对于 UserID 为 ConsumerA 的调用,将执行 XACML 策略,以便只有经理才可以查看价格。将编辑响应消息中 Price 的值。成功的结果包含 Price: 0.0
    • 许多标准请求 - 如果在 90 秒内执行 5 个以上请求,那么将执行拒绝策略。演示所执行策略的成功响应为:Rejected: "Rejected (from client)"
  5. 打开 WSRR 控制台,并浏览服务和策略。有关更多信息,请参阅。
使用命令行运行样本应用程序测试用例:

使用命令行通过“编辑”场景演示 XACML 许可/拒绝

可以将以下请求 XML 发送至 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>
假定上面的示例请求 XML 包含在名为 silver.xml 的文件中,请运行以下 curl 命令:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
在本示例中,ConsumerX 是一位经理,因此我们将看到完整的价格信息作为响应:
<?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>

使用命令行运行“编辑”场景

ConsumerA 不是经理,因此将看到不同的响应。运行 curl 命令:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerA:passw0rd http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
请注意,响应已编辑价格,为 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>

使用命令行测试路由策略

SLA ContextId 用于触发路由策略。在此情况下,针对 Gold 客户的 SLA 在 SLA 中具有值“Gold”。以下是将 Gold 作为 contextIdentifier 的样本请求的内容:
<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>
假定上面的示例请求 XML 包含在名为 gold.xml 的文件中,请运行以下 curl 命令:
curl -k --data-bin @./gold.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
响应如下所示:
<?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>
请注意,返回响应将 GOLDSKU 作为 SKU 值,指示使用了 Gold 端点。

使用命令行测试模式的验证

验证策略会根据 Store.wsl 及其关联的 Company.xsd 检查请求的模式。
以下 XML badvalid.xml 显示由于主体包含名为 <skubad>(应该为 <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>

如果我们运行以下 curl 请求:
curl -k --data-bin @./badvalid.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd
http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
这将生成以下错误:
<?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>

使用命令行在调解策略中测试拒绝

样本中包含的一个调解策略会测试消息计数在 90 秒内运行 5 次之后的拒绝。运行以下命令 6 次:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
样本请求如下所示:
<?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>
在本例中,ConsumerX 是一位经理,因此,针对前五次运行将显示完整价格信息,如下所示:
<?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>
在第六次运行时,您将看到以下错误:
<?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>
注: 如果在 90 秒时间间隔内运行了其他测试,您将更早地看到该错误。

使用命令行在调解策略中测试通知

在 contextId 不为“Gold”的情况下,不会映射 SLA,并将利用匿名 SLA。匿名 SLA 的调解策略是进行记录或通知。这需要为样本域启用调试方式。运行以下命令:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
在本例中,ConsumerX 是一位经理,因此,我们将看到完整价格信息,如下所示:
<?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>
以下消息是域的缺省日志中的输出:
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' 
注: 必须将日志记录设置为调试才能查看该消息。如果未这样设置,请单击 DataPower Web 控制台中的“故障诊断”图标。在“日志记录”部分中,将日志级别值更改为“调试”,然后单击设置日志级别

要找到该日志,请选择文件文件管理 > 文件管理。该日志位于 logtemp 文件夹中,名为 default-log。由于日志合并,在运行测试之前,您可能需要将日志文件放入 Web 浏览器窗口中,并在运行测试之后刷新浏览器中的选项卡。


概念 概念

反馈


时间戳记图标 最近一次更新时间: 2012年10月16日


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