Executando os Casos de Teste de Amostra

É possível usar o aplicativo da web de amostra ou a linha de comandos para testar o aplicativo Sample no SOA Policy Gateway Basic Runtime Sample implementado. Há seis variações de teste de linha de comandos que podem ser executadas no aplicativo de amostra.

Para implementar o Basic Sample Runtime, consulte Implementando o Padrão SOA Policy Gateway Basic Runtime Sample.
Nota: O valor de SamplePolicySample_starting_port usado nas amostras de XML a seguir é encontrado nos logs do SOA Policy Gateway Basic Runtime Sample.

Executando o caso de teste do aplicativo da web de amostra

Para executar o caso de teste do aplicativo da web:
  1. Localize o nome do host do ambiente implementado no WSRR abrindo a Instância do Sistema Virtual implementado. Para fazer isso, expanda a seção Máquinas Virtuais e selecione a máquina virtual para que o WSRR Standalone Server veja os detalhes da máquina virtual. Na seção Hardware e Rede, o nome do host é o valor Interface de Rede 0.
  2. Abra a URL em um navegador da web: http://<wssrHostName>:9080/SoaPolicyTester
  3. A tela de teste para o aplicativo de amostra implementado no DataPower é exibida.
  4. As opções são:
    • Envio Padrão - Envia uma solicitação findInventory para o serviço de armazenamento. O ID do contexto é um usuário Silver. Um resultado bem-sucedido é Peça: SKU10 Preço: 461,73.
    • Envio Roteado - Envia uma solicitação findInventory para o serviço de armazenamento. O ID de contexto é um usuário Gold, portanto a solicitação é roteada para uma implementação Gold do serviço. Um resultado bem-sucedido é Peça: GOLDSKU10 Preço: 461,73.
    • Envio Inválido - Envia uma solicitação com uma carga útil inválida. A política de validação requer o DataPower para validar a solicitação e um resultado de êxito será uma mensagem de resposta do DataPower "Erro Interno (do cliente)".
    • ID do Usuário = Consumidor A - Para as chamadas com um ID do Usuário igual a Consumidor A, a política XACML é impingida para que somente os Gerentes possam ver o preço. O valor de Preço na mensagem de resposta será separado. Um resultado bem-sucedido contém Preço: 0,0.
    • Muitas Solicitações Padrão - Se mais de cinco solicitações forem executadas dentro de 90 segundos, a política de rejeição será impingida. Uma resposta bem-sucedida demonstrando a política que está sendo impingida é: Rejeitada: "Rejeitada (do cliente)".
  5. Abra o console do WSRR e explore o serviço e as políticas. Para obter informações adicionais, consulte .
Para executar os casos de teste do aplicativo de amostra usando a linha de comandos:

Demonstrando o XACML de Permissão/Negação com o Cenário de Edição de Dados usando a Linha de Comandos

O XML de solicitação a seguir pode ser enviado ao Serviço StoreAddLTPA do 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>
Supondo que o XML de solicitação de exemplo acima esteja contido em um arquivo denominado silver.xml, execute o comando curl a seguir:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
Neste exemplo, ConsumerX é um Gerente, portanto, veremos as informações completas sobre preço como a resposta:
<?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>

Executando o Cenário de Edição de Dados usando a Linha de Comandos

ConsumerA não é um gerente, portanto, veremos uma resposta diferente. Execute o comando curl:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" 
-u ConsumerA:passw0rd http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
Observe que a resposta tem preço com dados editados e é 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>

Testando a Política de Roteamento Usando a Linha de Comandos

O ContextId do SLA é usado para acionar a Política de Roteamento. Neste caso, o SLA para Clientes Ouro tem o valor de Gold no SLA. Este é o conteúdo de uma solicitação de amostra com Gold como o 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>
Supondo que o XML de solicitação de exemplo acima esteja contido em um arquivo denominado gold.xml, execute o comando curl a seguir:
curl -k --data-bin @./gold.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
A resposta é a seguinte:
<?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>
Observe que a resposta de retorno tem um GOLDSKU para o valor de SKU, indicando que o terminal ouro foi usado.

Testando a Validação do Esquema Usando a Linha de Comandos

A política de validação verifica o esquema da solicitação com relação ao Store.wsl e seu Company.xsd associado.
O XML a seguir, badvalid.xml, mostra uma solicitação que é inválida porque o corpo contém um elemento denominado <skubad> quando deveria 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>

Se executarmos a solicitação curl a seguir:
curl -k --data-bin @./badvalid.xml -H "Content-Type: text/xml" 
-u ConsumerX:passw0rd
http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
Isso produzirá o erro a seguir:
<?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>Erro interno (do cliente)</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>

Testando a Rejeição na Política de Mediação Usando a Linha de Comandos

Uma das políticas de mediação incluídas na amostra testa a rejeição depois que a contagem de mensagens foi executada 5 vezes em 90 segundos. Execute o comando a seguir 6 vezes:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
A solicitação de amostra é a seguinte:
<?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>
Neste caso, ConsumerX é um Gerente, portanto, as informações completas de preços serão exibidas abaixo para as cinco primeiras execuções:
<?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>
Na sexta execução, você verá o erro a seguir:
<?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>Rejeitado (do cliente)</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
Nota: É possível ver esse erro antes se você executou outros testes dentro do intervalo de 90 segundos.

Testando a Notificação na Política de Mediação Usando a Linha de Comandos

No caso em que o contextId não é Gold, não há nenhum SLA mapeado e o SLA Anônimo é utilizado. A política do mediação para o SLA Anônimo é registrar ou notificar. Isso requer que o Modo de Depuração seja ativado para o Domínio de Amostra. Execute o comando a seguir:
curl -k --data-bin @./silver.xml -H "Content-Type: text/xml" -u ConsumerX:passw0rd
http://<yourDataPowerHostName>.com:<SamplePolicySample_starting_port+4>/Store/Store
Neste exemplo, ConsumerX é um Gerente, portanto, veremos as informações integrais sobre preço, conforme a seguir:
<?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>
A mensagem a seguir é gerada no log padrão do Domínio:
Notificar ação acionada ('operation_38_2_sla1-1-filter_1-notify') pela política de origem 
  ('LogEveryTime_287d0790-83d9-11e1-a255-9187e20cddb0_05aec6ec-3674-4165-85de-a0f7be48a938' 
Nota: A criação de log deve estar configurada para depuração para ver essa mensagem. Se não estiver, clique no ícone Resolução de Problemas no Console da Web do DataPower. Na seção Criação de Log, altere o valor de Nível de Log para debug e clique em Configurar Nível de Log.

Para localizar o log, selecione Arquivos e Administração de Arquivos > Gerenciamento de Arquivos. O log está localizado na pasta logtemp e nomeado default-log. Devido ao agrupamento do log, pode ser necessário colocar o arquivo de log em uma janela do navegador da web antes de executar o teste e atualizar a guia no navegador depois de executar o teste.


Conceito Conceito

Feedback


Ícone de registro de data e hora Última atualização: 14 de novembro de 2012


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