Ciao, Habr!
Questo è un prequel del mio e nello stesso tempo un remake dell'articolo .
Questa volta parlerò della mia esperienza di integrazione di JMeter e IBM MQ per un test efficace delle applicazioni su IBM WAS. Ho affrontato una sfida simile, e non è stata semplice. Voglio aiutare a risparmiare tempo a tutti gli interessati.

Introduzione
Informazioni sul progetto: un bus dati, numerosi messaggi xml, tre aree di scambio (code, DB, sistema dei file), servizi web con la propria logica di elaborazione dei messaggi. Con l'evoluzione del progetto, testare manualmente è diventato sempre più difficile. È venuto in aiuto Apache JMeter — potente, open source, con una grande comunità di utenti e un'interfaccia intuitiva. La facilità di personalizzazione della versione standard permette di coprire qualsiasi caso, e la promessa del principale sviluppatore di aiutare in caso di necessità (in effetti ha aiutato) ha definitivamente confermato la scelta.
Preparazione del contesto iniziale
Per interagire con il manager delle code è necessario un contesto iniziale. Ci sono diversi tipi, ecco dove puoi leggere ulteriori dettagli.
Per la sua creazione è comodo utilizzare MQ Explorer:

Figura 1: Aggiunta del contesto iniziale
Selezionare il tipo di contesto e la directory di archiviazione .bindings file che conterrà la descrizione degli oggetti JNDI:

Figura 2: Selezione del tipo di contesto iniziale
Dopo di che, si può iniziare a creare questi oggetti, cominciando dalla fabbrica di connessioni:

Figura 3: Creazione della fabbrica di connessioni
Selezionare un nome significativo…

Figura 4: Selezione del nome della fabbrica di connessioni
… e il tipo Queue Connection Factory:

Figura 5: Selezione del tipo di fabbrica di connessioni
Protocollo — MQ Client per la possibilità di interazione remota con MQ:

Figura 6: Selezione del protocollo della fabbrica di connessioni
Nella fase successiva si può selezionare una fabbrica esistente e copiare le configurazioni da essa. Cliccare Next, se non è presente:

Figura 7: Selezione delle impostazioni della fabbrica di connessioni esistente
Nella finestra di selezione dei parametri è sufficiente impostare tre valori. Nella scheda Connection specificare il nome del manager delle code e l'IP del server in cui è situato (puoi 1414 lasciarlo invariato):

Figura 8: Configurazione dei parametri della fabbrica di connessioni
E nella scheda Channels — canale per la connessione. Cliccare Fine per completare:

Figura 9: Completamento della creazione della fabbrica di connessioni
Ora creiamo una connessione alla coda:

Figura 10: Creazione di un oggetto target
Scegliamo un nome comprensibile (preferisco indicare il nome reale della coda) e il tipo Coda:

Figura 11: Scelta del nome e del tipo di oggetto target
Analogamente a Figura 7 è possibile copiare le impostazioni da una coda esistente. Clicchiamo anche su Next, se è la prima:

Figura 12: Scelta delle impostazioni dell'oggetto target esistente
Nella finestra delle impostazioni, è sufficiente scegliere il nome del manager e la coda desiderata, poi premere Fine. Dopodiché ripetere il numero necessario di volte, finché tutte le code necessarie per interagire con JMeter non sono create:

Figura 13: Completamento della creazione dell'oggetto target
Preparazione di JMeter
La preparazione di JMeter consiste nell'aggiungere le librerie necessarie per interagire con MQ. Si trovano in %wmq_home%/java/lib. Copiale in %jmeter_home%/lib/ext prima di avviare 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 proposta da in con una piccola nota: javax.jms-api-2.0.jar invece di jms.jar.
Con jms.jar si verifica un errore NoClassDefFoundError, la cui soluzione è stata trovata .
- com.ibm.mq.allclient.jar
- fscontext.jar
- javax.jms-api-2.0.jar
- providerutil.jar
Entrambi gli elenchi di librerie funzionano correttamente con JMeter 5.0 e IBM MQ 8.0.0.4.
Configurazione del piano di test
Il set di elementi JMeter necessario e sufficiente appare così:

Figura 14: Piano di test
Nell'esempio del piano di test ci sono cinque variabili. Nonostante il numero esiguo, consiglio di creare elementi di configurazione separati per diversi tipi di variabili. Man mano che i test si ampliano, questo semplificherà notevolmente la navigazione. In questo caso si ottengono due elenchi. Il primo contiene i parametri di connessione a MQ (vedi Figura 2 e Figura 4):

Figura 15: Parametri di connessione a MQ
Il secondo contiene i nomi degli oggetti target che fanno riferimento alle code:

Figura 16: Nomi parametrizzati delle code
Rimane da configurare JMS Publisher per caricare il messaggio di test nella coda di uscita:

Figura 17: Configurazione di JMS Publisher
E JMS Subscriber per leggere il messaggio dalla coda di ingresso:

Figura 18: Configurazione di JMS Subscriber
Se tutto è stato fatto correttamente, il risultato dell'esecuzione nel listener si riempirà di colori verdi luminosi e vivaci.
Conclusione
Ho volutamente tralasciato le questioni di routing e amministrazione, sono temi piuttosto intimi e vasti per pubblicazioni separate.
Inoltre, ci sono una serie di dettagli importanti nel lavorare con code, basi di dati e file, di cui sarebbe utile discutere separatamente e in modo approfondito.
Proteggi il tuo tempo. E grazie per l'attenzione.

Fonte: habr.com
