IBM MQ og JMeter: Første kontakt

Hello, Habr!

Dette er en præquel til min den forrige publikation og samtidig et remake af artiklen Automatiseret test af tjenester, der bruger MQ-protokollen med JMeter.

Denne gang vil jeg fortælle om min erfaring med at integrere JMeter og IBM MQ for at muliggøre effektiv test af applikationer på IBM WAS. Jeg har stået over for denne opgave, og det var ikke let. Jeg ønsker at hjælpe alle interesserede med at spare tid.

IBM MQ og JMeter: Første kontakt

Introduktion

Om projektet: databus, mange xml-beskeder, tre udvekslingsområder (køer, databaser, filsystem), webtjenester med deres egen logik til behandling af beskeder. Efterhånden som projektet udviklede sig, blev manuel testning mere og mere udfordrende. Apache JMeter blev kaldt til hjælp – en kraftfuld og open source-løsning med et stort brugerfællesskab og et venligt interface. Letheden ved at tilpasse den ”out of the box”-version giver mulighed for at dække alle tilfælde, og det løfte, den ledende udvikler gav om hjælp hvis nødvendigt (og han hjalp virkelig) bekræftede mit valg fuldstændigt.

Forberedelse af det indledende kontekst

For at interagere med kømanageren er en indledende kontekst nødvendig. Der findes flere typer, og her er her du kan læse mere om det.
For at oprette det er det praktisk at bruge MQ Explorer:

IBM MQ og JMeter: Første kontakt
Figur 1: Tilføjelse af indledende kontekst

Vælg filtype for konteksten og katalog til opbevaring .bindings filen, der vil indeholde beskrivelsen af JNDI-objekterne:

IBM MQ og JMeter: Første kontakt
Figur 2: Valg af type indledende kontekst

Derefter kan du begynde at oprette disse objekter. Begynd med forbindelsesfabrikken:

IBM MQ og JMeter: Første kontakt
Figur 3: Oprettelse af forbindelsesfabrikken

Vælg et forståeligt navn…

IBM MQ og JMeter: Første kontakt
Figur 4: Valg af navn til forbindelsesfabrikken

… og type Queue Connection Factory:

IBM MQ og JMeter: Første kontakt
Figur 5: Valg af type forbindelsesfabrikken

Protokol – MQ Client for mulighed for at interagere med MQ eksternt:

IBM MQ og JMeter: Første kontakt
Figur 6: Valg af protokol for forbindelsesfabrikken

I det næste trin kan du vælge en eksisterende fabrik og kopiere videre indstillinger fra den. Klik på Next, hvis der ikke er en sådan:

IBM MQ og JMeter: Første kontakt
Figur 7: Valg af indstillinger for eksisterende forbindelsesfabrik

I vinduet til valg af parametre er det nok at angive tre. På fanen Connection angiv navnet på kømanageren og ip-adressen til den stående placering (porten 1414 forblive):

IBM MQ og JMeter: Første kontakt
Figur 8: Indstilling af parametre for forbindelsesfabrikken

Og på fanen Channels – kanal til forbindelsen. Klik på Finish for at afslutte:

IBM MQ og JMeter: Første kontakt
Figur 9: Afslutning på oprettelsen af forbindelsesfabrikken

Nu opretter vi forbindelse til køen:

IBM MQ og JMeter: Første kontakt
Figur 10: Oprettelse af målopjekt

Lad os vælge et forståeligt navn (jeg foretrækker at angive det faktiske navn på køen) og type Kø:

IBM MQ og JMeter: Første kontakt
Figur 11: Valg af navn og type for målopjektet

På samme måde som Figur 7 kan indstillinger kopieres fra en eksisterende kø. Tryk også på Next, hvis det er den første:

IBM MQ og JMeter: Første kontakt
Figur 12: Valg af indstillinger for eksisterende målopjekt

I indstillingsvinduet skal du blot vælge managerens navn og den ønskede kø, og derefter trykke på Finish. Derefter gentages dette det nødvendige antal gange, indtil alle de køer, der er nødvendige for interaktionen med JMeter, er oprettet:

IBM MQ og JMeter: Første kontakt
Figur 13: Afslutning af oprettelsen af målopjektet

Forberedelse af JMeter

Forberedelsen af JMeter indebærer tilføjelse af de biblioteker, der er nødvendige for at interagere med MQ. De findes i %wmq_home%/java/lib. Kopier dem til %jmeter_home%/lib/ext før du starter 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

Alternativ liste foreslået polarnik i kommentarer med en lille nuance: javax.jms-api-2.0.jar i stedet for jms.jar.
Der opstår en fejl NoClassDefFoundError med jms.jar, hvis løsning jeg fandt her.

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

Begge biblioteks lister fungerer fint med JMeter 5.0 og IBM MQ 8.0.0.4.

Konfiguration af testplan

Det nødvendige og tilstrækkelige sæt af JMeter-elementer ser således ud:

IBM MQ og JMeter: Første kontakt
Figur 14: Testplan

I eksemplet på testplanen er der fem variable. På trods af deres lille antal anbefaler jeg at oprette separate konfigurationselementer til forskellige typer variable. Efterhånden som testene vokser, vil det væsentligt forenkle navigationen. I dette tilfælde får vi to lister. Den første indeholder parametre til forbindelse til MQ (se. Billede 2 og Figur 4):

IBM MQ og JMeter: Første kontakt
Figur 15: Parametre til forbindelse til MQ

Den anden - navne på målopjekter, der refererer til køerne:

IBM MQ og JMeter: Første kontakt
Figur 16: Parametriserede navne på køer

Det er tilbage at konfigurere JMS Publisher til at indsende testbeskeder i den udgående kø:

IBM MQ og JMeter: Første kontakt
Figur 17: Konfiguration af JMS Publisher

Og JMS Subscriber til at læse beskeder fra den indgående kø:

IBM MQ og JMeter: Første kontakt
Figur 18: Konfiguration af JMS Subscriber

Hvis alt er gjort korrekt, vil resultatet fra eksekveringen i lytteren fyldes med lyse og livlige grønne farver.

Konklusion

Jeg har med vilje udeladt spørgsmål om routing og administration, da det er ret intime og omfattende emner, der kræver separate publikationer.

Derudover er der en solid mængde nuancer i arbejdet med køer, databaser og filer, som vi også gerne vil tale om separat og grundigt.

Pas på din tid. Og tak for din opmærksomhed.

IBM MQ og JMeter: Første kontakt

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster