IBM MQ i JMeter: Pierwszy kontakt

Cześć, Habr!

To jest prequel mojego poprzedniej publikacji i jednocześnie remake artykułu Automatyczne testowanie serwisów korzystających z protokołu MQ za pomocą JMeter.

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.

IBM MQ i JMeter: Pierwszy kontakt

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 tutaj można przeczytać więcej.
Do jego tworzenia wygodnie używać MQ Explorer:

IBM MQ i JMeter: Pierwszy kontakt
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:

IBM MQ i JMeter: Pierwszy kontakt
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ń:

IBM MQ i JMeter: Pierwszy kontakt
Rysunek 3: Tworzenie fabryki połączeń

Wybierz czytelną nazwę...

IBM MQ i JMeter: Pierwszy kontakt
Rysunek 4: Wybór nazwy fabryki połączeń

… i typ Queue Connection Factory:

IBM MQ i JMeter: Pierwszy kontakt
Rysunek 5: Wybór typu fabryki połączeń

Protokół — MQ Client aby umożliwić zdalną komunikację z MQ:

IBM MQ i JMeter: Pierwszy kontakt
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:

IBM MQ i JMeter: Pierwszy kontakt
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):

IBM MQ i JMeter: Pierwszy kontakt
Rysunek 8: Ustawianie parametrów fabryki połączeń

A na zakładce Channels — kanał do połączenia. Nacisnąć Zakończ aby zakończyć:

IBM MQ i JMeter: Pierwszy kontakt
Rysunek 9: Zakończenie tworzenia fabryki połączeń

Teraz stwórzmy połączenie z kolejką:

IBM MQ i JMeter: Pierwszy kontakt
Rysunek 10: Tworzenie obiektu docelowego

Wybierzmy zrozumiałą nazwę (preferuję podanie rzeczywistej nazwy kolejki) oraz typ Kolejka:

IBM MQ i JMeter: Pierwszy kontakt
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:

IBM MQ i JMeter: Pierwszy kontakt
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:

IBM MQ i JMeter: Pierwszy kontakt
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 polarnik do komentarze 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ł tutaj.

  • 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:

IBM MQ i JMeter: Pierwszy kontakt
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):

IBM MQ i JMeter: Pierwszy kontakt
Rysunek 15: Parametry połączenia z MQ

Druga – nazwy obiektów docelowych odwołujących się do kolejek:

IBM MQ i JMeter: Pierwszy kontakt
Rysunek 16: Parametryzowane nazwy kolejek

Pozostaje skonfigurować JMS Publisher do wysyłania testowej wiadomości do wychodzącej kolejki:

IBM MQ i JMeter: Pierwszy kontakt
Rysunek 17: Konfiguracja JMS Publisher

I JMS Subscriber do odczytu wiadomości z przychodzącej kolejki:

IBM MQ i JMeter: Pierwszy kontakt
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ę.

IBM MQ i JMeter: Pierwszy kontakt

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster