Cześć, Habr!
To jest prequel mojego i jednocześnie remake artykułu .
Tym razem opowiem o swoim doświadczeniu w integrowaniu JMeter i IBM MQ, aby móc z przyjemnością testować aplikacje na IBM WAS. Spotkałem się z tym zadaniem, które nie było łatwe do wykonania. Chcę pomóc zaoszczędzić czas wszystkim zainteresowanym.

Wprowadzenie
O projekcie: szyna danych, wiele komunikatów xml, trzy obszary wymiany (kolejki, Bazy Danych, system plików), usługi sieciowe z własną logiką przetwarzania komunikatów. W miarę rozwoju projektu testowanie ręczne stawało się coraz trudniejsze. Na pomoc przyszedł Apache JMeter — potężne i open source, z dużą społecznością użytkowników i przyjaznym interfejsem. Łatwość w dostosowywaniu wersji 'z pudełka' pozwala pokryć wszelkie przypadki, a obietnica głównego dewelopera, że pomoże jeśli będzie taka potrzeba (rzeczywiście pomógł) ostatecznie utwierdziła mnie w wyborze.
Przygotowanie początkowego kontekstu
Aby współpracować z menedżerem kolejek potrzebny jest początkowy kontekst. Może on mieć kilka typów, oto można przeczytać więcej.
Do jego tworzenia wygodnie używać MQ Explorer:

Rysunek 1: Dodawanie początkowego kontekstu
Wybierz typ pliku kontekstu i katalog do przechowywania .bindings pliku, który będzie zawierał opis obiektów JNDI:

Rysunek 2: Wybór typu początkowego kontekstu
Po tym można przystąpić do tworzenia tych obiektów. I rozpocząć od fabryki połączeń:

Rysunek 3: Tworzenie fabryki połączeń
Wybierz czytelną nazwę...

Rysunek 4: Wybór nazwy fabryki połączeń
… i typ Queue Connection Factory:

Rysunek 5: Wybór typu fabryki połączeń
Protokół — MQ Client aby umożliwić zdalną komunikację z MQ:

Rysunek 6: Wybór protokołu fabryki połączeń
Na następnym kroku można wybrać już istniejącą fabrykę i skopiować dalsze ustawienia z niej. Klikamy Dalej, jeśli takiej nie ma:

Rysunek 7: Wybór ustawień istniejącej fabryki połączeń
W oknie wyboru parametrów wystarczy określić trzy. Na zakładce Connection należy podać nazwę menedżera kolejek oraz IP standu, w którym się znajduje (port 1414 zostawiamy):

Rysunek 8: Ustawianie parametrów fabryki połączeń
A na zakładce Channels — kanał do połączenia. Nacisnąć Zakończ aby zakończyć:

Rysunek 9: Zakończenie tworzenia fabryki połączeń
Teraz stwórzmy połączenie z kolejką:

Rysunek 10: Tworzenie obiektu docelowego
Wybierzmy zrozumiałą nazwę (preferuję podanie rzeczywistej nazwy kolejki) oraz typ Kolejka:

Rysunek 11: Wybór nazwy i typu obiektu docelowego
Na podobieństwo Rysunku 7 można skopiować ustawienia z istniejącej kolejki. Następnie kliknij Dalej, jeśli jest pierwsza:

Rysunek 12: Wybór ustawień istniejącego obiektu docelowego
W oknie ustawień wystarczy wybrać nazwę menedżera i odpowiednią kolejkę, kliknąć Zakończ. Następnie powtórz wymagane ilości razy, aż wszystkie kolejki potrzebne do interakcji z JMeter będą utworzone:

Rysunek 13: Zakończenie tworzenia obiektu docelowego
Przygotowanie JMeter
Przygotowanie JMeter polega na dodaniu bibliotek potrzebnych do interakcji z MQ. Znajdują się one w %wmq_home%/java/lib. Skopiuj je do %jmeter_home%/lib/ext przed uruchomieniem 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
Alternatywna lista, zaproponowana przez do z niewielką różnicą: javax.jms-api-2.0.jar zamiast jms.jar.
Z jms.jar pojawia się błąd NoClassDEfFoundError, którego rozwiązanie znalazł .
- com.ibm.mq.allclient.jar
- fscontext.jar
- javax.jms-api-2.0.jar
- providerutil.jar
Obie listy bibliotek działają poprawnie z JMeter 5.0 i IBM MQ 8.0.0.4.
Konfiguracja planu testów
Niezbędny i wystarczający zestaw elementów JMeter wygląda tak:

Rysunek 14: Plan testów
W przykładzie planu testów znajduje się pięć zmiennych. Mimo ich niewielkiej ilości, zalecam utworzenie oddzielnych elementów konfiguracyjnych dla różnych typów zmiennych. W miarę rozwoju testów znacznie ułatwi to nawigację. W tym przypadku powstają dwie listy. Pierwsza zawiera parametry połączenia z MQ (zob. Rysunek 2 i Rysunek 4):

Rysunek 15: Parametry połączenia z MQ
Druga – nazwy obiektów docelowych odwołujących się do kolejek:

Rysunek 16: Parametryzowane nazwy kolejek
Pozostaje skonfigurować JMS Publisher do wysyłania testowej wiadomości do wychodzącej kolejki:

Rysunek 17: Konfiguracja JMS Publisher
I JMS Subscriber do odczytu wiadomości z przychodzącej kolejki:

Rysunek 18: Konfiguracja JMS Subscriber
Jeśli wszystko jest zrobione poprawnie, wynik wykonania w słuchaczu zostanie wypełniony jaskrawymi i radosnymi zielonymi kolorami.
Podsumowanie
Celowo pominąłem kwestie routingu i administracji, to dość intymne i obszerne tematy na osobne publikacje.
Ponadto istnieje solidna porcja niuansów związanych z pracą z kolejkami, bazami danych i plikami, o których również chciałbym porozmawiać oddzielnie i szczegółowo.
Chroń swój czas. Dziękuję za uwagę.

Źródło: habr.com
