IBM MQ e JMeter: primeiro contato

Oi, Habr!

Esta é uma prequela da minha publicação anterior e ao mesmo tempo um remake do artigo Teste automatizado de serviços usando o protocolo MQ usando JMeter.

Desta vez, contarei a você sobre minha experiência de reconciliar JMeter e IBM MQ para testes felizes de aplicativos no IBM WAS. Me deparei com essa tarefa, não foi fácil. Quero ajudar a economizar tempo para todos os interessados.

IBM MQ e JMeter: primeiro contato

Introdução

Sobre o projeto: barramento de dados, diversas mensagens xml, três áreas de troca (filas, banco de dados, sistema de arquivos), web services com lógica própria de processamento de mensagens. À medida que o projeto avançava, os testes manuais tornaram-se cada vez mais difíceis. O Apache JMeter foi chamado para o resgate - poderoso e de código aberto, com uma grande comunidade de usuários e uma interface amigável. A facilidade de personalização da versão pronta para uso permite cobrir qualquer caso, e a promessa do desenvolvedor líder de ajudar se isso (ajudou) finalmente confirmou minha escolha.

Preparando o contexto inicial

Para interagir com o gerenciador de filas, é necessário um contexto inicial. Existem vários tipos, aqui aqui você pode ler mais.
Para criá-lo, é conveniente usar o MQ Explorer:

IBM MQ e JMeter: primeiro contato
Figura 1: Adicionando um contexto inicial

Selecione o tipo de arquivo de contexto e o diretório de armazenamento .ligações arquivo que conterá uma descrição dos objetos JNDI:

IBM MQ e JMeter: primeiro contato
Figura 2: Selecionando o tipo de contexto inicial

Então você pode começar a criar esses objetos. E comece com a connection factory:

IBM MQ e JMeter: primeiro contato
Figura 3: Criando uma connection factory

Escolha um nome amigável...

IBM MQ e JMeter: primeiro contato
Figura 4: Selecionando um nome de connection factory

... e digite Fábrica de conexão de fila:

IBM MQ e JMeter: primeiro contato
Figura 5: Selecionando o tipo de connection factory

Protocolo - Cliente MQ para poder interagir com o MQ remotamente:

IBM MQ e JMeter: primeiro contato
Figura 6: Seleção do protocolo Connection Factory

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

IBM MQ e JMeter: primeiro contato
Figura 7: Selecionando configurações para um connection factory existente

Na janela de seleção de parâmetros, basta especificar três. Na aba Conexão indicar o nome do gerenciador de filas e o suporte IP com sua localização (porta 1414 deixar):

IBM MQ e JMeter: primeiro contato
Figura 8: Configurando Parâmetros de Connection Factory

E na aba Canais — canal para conexão. Clique Acabamento completar:

IBM MQ e JMeter: primeiro contato
Figura 9: Concluindo a criação do connection factory

Agora vamos criar uma conexão com a fila:

IBM MQ e JMeter: primeiro contato
Figura 10: Criando um objeto de destino

Vamos escolher um nome amigável (prefiro indicar o nome real da fila) e digitar Fila:

IBM MQ e JMeter: primeiro contato
Figura 11: Selecionando nome e tipo de destino

Semelhante a Figura 7 Você pode copiar configurações de uma fila existente. Clique também Próximo, se for o primeiro:

IBM MQ e JMeter: primeiro contato
Figura 12: Seleção de configurações para um destino existente

Na janela de configurações, basta selecionar o nome do gerente e a fila desejada, clicar Acabamento. Em seguida, repita o número necessário de vezes até que todas as filas necessárias para interagir com o JMeter tenham sido criadas:

IBM MQ e JMeter: primeiro contato
Figura 13: Concluindo a criação do destino

Preparando JMeter

A preparação do JMeter envolve a adição das bibliotecas necessárias para interagir com o MQ. Eles estão localizados em %wmq_home%/java/lib. Copie-os 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
  • provedorutil.jar

Lista alternativa sugerida polarnik в comentários com uma pequena nuance: javax.jms-api-2.0.jar em vez de jms.jar.
Ocorre um erro NoClassDEfFoundError com jms.jar, a solução que encontrei aqui.

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

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

Configurando um plano de teste

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

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

Existem cinco variáveis ​​no plano de teste de exemplo. Apesar de seu pequeno número, recomendo criar elementos de configuração separados para diferentes tipos de variáveis. À medida que os testes aumentam, isso tornará a navegação muito mais fácil. Neste caso, obtemos duas listas. O primeiro contém parâmetros para conexão com o MQ (consulte. Figura 2 и Figura 4):

IBM MQ e JMeter: primeiro contato
Figura 15: Opções de conexão MQ

O segundo são os nomes dos objetos de destino que se referem às filas:

IBM MQ e JMeter: primeiro contato
Figura 16: Nomes de filas parametrizadas

Resta apenas configurar o JMS Publisher para carregar a mensagem de teste na fila de saída:

IBM MQ e JMeter: primeiro contato
Figura 17: Configurando o JMS Publisher

E o Assinante JMS para ler uma mensagem da fila de entrada:

IBM MQ e JMeter: primeiro contato
Figura 18: Configurando Assinante JMS

Se tudo for feito corretamente, o resultado da execução no ouvinte será preenchido com cores verdes brilhantes e alegres.

Conclusão

Omiti deliberadamente as questões de encaminhamento e administração; estes são tópicos bastante íntimos e extensos para publicações separadas.

Além disso, há uma parcela significativa de nuances no trabalho com filas, bancos de dados e arquivos, sobre as quais também gostaria de falar separadamente e detalhadamente.

Economize seu tempo. E obrigado pela sua atenção.

IBM MQ e JMeter: primeiro contato

Fonte: habr.com