IBM MQ e JMeter: Primeiro contato

Olá, Habr!

Este é um prequel do meu publicação anterior e ao mesmo tempo um remake do artigo Testes automatizados de serviços que utilizam o protocolo MQ com o JMeter.

Desta vez, vou compartilhar minha experiência de integrar o JMeter com o IBM MQ para teste eficiente de aplicações no IBM WAS. Enfrentei essa tarefa, e não foi fácil. Quero ajudar a economizar tempo de todos os interessados.

IBM MQ e JMeter: Primeiro contato

Introdução

Sobre o projeto: uma bus de dados, várias mensagens em xml, três áreas de troca (filas, banco de dados, sistema de arquivos), serviços da web com sua lógica de processamento de mensagens. À medida que o projeto avançava, testar manualmente tornava-se cada vez mais complicado. O Apache JMeter foi chamado para ajudar — é poderoso e open-source, com uma grande comunidade de usuários e uma interface amigável. A facilidade de personalização da versão 'padrão' permite cobrir qualquer caso, e a promessa do principal desenvolvedor de ajudar caso necessário (ele realmente ajudou) consolidou minha escolha.

Preparação do contexto inicial

Para interagir com o gerenciador de filas, é necessário um contexto inicial. Ele pode ser de vários tipos, aqui está aqui pode ser lido em mais detalhes.
Para criá-lo, é conveniente usar o MQ Explorer:

IBM MQ e JMeter: Primeiro contato
Figura 1: Adicionando o contexto inicial

Selecionar o tipo de arquivo de contexto e o diretório para armazenamento .bindings arquivo que conterá a descrição dos objetos JNDI:

IBM MQ e JMeter: Primeiro contato
Figura 2: Seleção do tipo de contexto inicial

Após isso, é possível começar a criar esses objetos. Começaremos pela fábrica de conexões:

IBM MQ e JMeter: Primeiro contato
Figura 3: Criando a fábrica de conexões

Escolha um nome claro...

IBM MQ e JMeter: Primeiro contato
Figura 4: Seleção do nome da fábrica de conexões

... e tipo Queue Connection Factory:

IBM MQ e JMeter: Primeiro contato
Figura 5: Seleção do tipo da fábrica de conexões

Protocolo — MQ Client para possibilitar a interação remota com o MQ:

IBM MQ e JMeter: Primeiro contato
Figura 6: Seleção do protocolo da fábrica de conexões

Na próxima etapa, você pode selecionar uma fábrica existente e copiar as configurações dela. Clique Next, se não houver nenhuma:

IBM MQ e JMeter: Primeiro contato
Figura 7: Seleção das configurações da fábrica de conexões existente

Na janela de seleção de parâmetros, basta definir três. Na guia Conexão especifique o nome do gerenciador de filas e o IP do servidor onde ele está localizado (porta 1414 deixe em branco):

IBM MQ e JMeter: Primeiro contato
Figura 8: Configurando os parâmetros da fábrica de conexões

E na guia Channels — canal para a conexão. Clique Finish para concluir:

IBM MQ e JMeter: Primeiro contato
Figura 9: Conclusão da criação da fábrica de conexões

Agora vamos criar uma conexão com a fila:

IBM MQ e JMeter: Primeiro contato
Figura 10: Criação de objeto alvo

Escolheremos um nome claro (prefiro usar o nome real da fila) e o tipo Fila:

IBM MQ e JMeter: Primeiro contato
Figura 11: Seleção do nome e tipo de objeto alvo

De acordo com a Figura 7 , é possível copiar as configurações de uma fila existente. Também pressionamos Next, se for a primeira:

IBM MQ e JMeter: Primeiro contato
Figura 12: Seleção das configurações do objeto alvo existente

Na janela de configurações, basta selecionar o nome do gerenciador e a fila desejada, pressionar Finish. Depois, repetir o número necessário de vezes, até que todas as filas necessárias para a interação com o JMeter sejam criadas:

IBM MQ e JMeter: Primeiro contato
Figura 13: Conclusão da criação do objeto alvo

Preparação do JMeter

A preparação do JMeter consiste na adição de bibliotecas necessárias para a interação com o MQ. Elas estão localizadas em %wmq_home%/java/lib. Copie-as para %jmeter_home%/lib/ext antes de iniciar o JMeter.

  • com.ibm.mq.commonservices.jar
  • com.ibm.mq.headers.jar
  • com.ibm.mq.jar
  • com.ibm.mq.jmqi.jar
  • com.ibm.mq.pcf.jar
  • com.ibm.mqjms.jar
  • dhbcore.jar
  • fscontext.jar
  • jms.jar
  • jta.jar
  • providerutil.jar

Lista alternativa, sugerida por polarnik em comentários com uma pequena nuance: javax.jms-api-2.0.jar em vez de jms.jar.
Com jms.jar ocorre o erro NoClassDEfFoundError, cuja solução encontrei aqui.

  • com.ibm.mq.allclient.jar
  • fscontext.jar
  • javax.jms-api-2.0.jar
  • providerutil.jar

Ambas as listas de bibliotecas funcionam com sucesso com JMeter 5.0 e IBM MQ 8.0.0.4.

Configuração do plano de teste

O conjunto necessário e suficiente de elementos do JMeter é assim:

IBM MQ e JMeter: Primeiro contato
Figura 14: Plano de teste

No exemplo do plano de teste, existem cinco variáveis. Apesar do número pequeno, recomendo criar elementos de configuração separados para diferentes tipos de variáveis. À medida que os testes crescem, isso facilitará muito a navegação. Neste caso, obtemos duas listas. A primeira contém os parâmetros de conexão com o MQ (veja Figura 2 e Figura 4):

IBM MQ e JMeter: Primeiro contato
Figura 15: Parâmetros de conexão com o MQ

A segunda contém os nomes dos objetos alvo, referindo-se às filas:

IBM MQ e JMeter: Primeiro contato
Figura 16: Nomes de fila parametrizados

Agora, é necessário configurar o JMS Publisher para enviar a mensagem de teste para a fila de saída:

IBM MQ e JMeter: Primeiro contato
Figura 17: Configuração do JMS Publisher

E o JMS Subscriber para ler a mensagem da fila de entrada:

IBM MQ e JMeter: Primeiro contato
Figura 18: Configuração do JMS Subscriber

Se tudo foi feito corretamente, o resultado da execução no listener será preenchido com cores verdes vibrantes e animadas.

Conclusão

Omiti deliberadamente as questões de roteamento e administração; são temas bastante íntimos e amplos para publicações separadas.

Além disso, há uma boa quantidade de nuances no trabalho com filas, bancos de dados e arquivos, sobre as quais também gostaríamos de falar separadamente e em detalhes.

Cuide do seu tempo. E obrigado pela atenção.

IBM MQ e JMeter: Primeiro contato

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster