IBM MQ та JMeter: Перший контакт

Привіт, Хабре!

Це приквел моєї попередній публікації і в той же час ремейк статті Автоматизоване тестування сервісів, які використовують протокол MQ за допомогою JMeter.

Цього разу розповім про свій досвід примирення JMeter та IBM MQ для щасливого тестування програм на IBM WAS. Зіткнувся з таким завданням, легко вона не піддавалася. Хочу допомогти заощадити час усім зацікавленим.

IBM MQ та JMeter: Перший контакт

Запровадження

Про проект: шина даних, безліч XML-повідомлень, три області обміну (черги, БД, файлова система), веб-сервіси зі своєю логікою обробки повідомлень. З розвитком проекту тестувати вручну ставало все складніше. На допомогу був покликаний Apache JMeter – потужний та опенсорсний, з великою спільнотою користувачів та доброзичливим інтерфейсом. Легкість кастомізації версії «з коробки» дозволяє покрити будь-які кейси, а обіцянка провідного розробника допомогти якщо що (таки допоміг), остаточно затвердило у виборі.

Приготування початкового контексту

Для взаємодії з менеджером черг потрібний початковий контекст. Він буває кількох типів, ось тут можна почитати докладніше.
Для його створення зручно використовувати MQ Explorer:

IBM MQ та JMeter: Перший контакт
Рисунок 1: Додавання початкового контексту

Вибрати файловий тип контексту та директорію для зберігання .bindings файлу, який міститиме опис JNDI-об'єктів:

IBM MQ та JMeter: Перший контакт
Рисунок 2: Вибір типу початкового контексту

Після цього можна розпочинати створення цих об'єктів. І почати з фабрики з'єднань:

IBM MQ та JMeter: Перший контакт
Малюнок 3: Створення фабрики з'єднань

Вибрати зрозуміле ім'я.

IBM MQ та JMeter: Перший контакт
Рисунок 4: Вибір імені заводу з'єднань

… і тип Queue Connection Factory:

IBM MQ та JMeter: Перший контакт
Рисунок 5: Вибір типу фабрики з'єднань

Протокол MQ Client для можливості взаємодії з MQ віддалено:

IBM MQ та JMeter: Перший контакт
Рисунок 6: Вибір протоколу фабрики з'єднань

На наступному кроці можна вибрати існуючу фабрику і подальші налаштування скопіювати з неї. Тиснемо МАЙБУТНІ, якщо такої немає:

IBM MQ та JMeter: Перший контакт
Рисунок 7: Вибір параметрів існуючої фабрики з'єднань

У вікні вибору параметрів достатньо встановити три. На вкладці Connection вказати ім'я менеджера черг та ip стенду з його розташуванням (порт 1414 залишити):

IBM MQ та JMeter: Перший контакт
Рисунок 8: Налаштування параметрів фабрики з'єднань

І на вкладці Канали канал для з'єднання. Натиснути обробка для завершення:

IBM MQ та JMeter: Перший контакт
Рисунок 9: Завершення створення фабрики з'єднань

Тепер створимо підключення до черги:

IBM MQ та JMeter: Перший контакт
Малюнок 10: Створення цільового об'єкта

Виберемо зрозуміле ім'я (вважаю за краще вказувати реальне ім'я черги) і тип Чергу:

IBM MQ та JMeter: Перший контакт
Рисунок 11: Вибір імені та типу цільового об'єкта

За аналогією з Малюнок 7 можна скопіювати налаштування з існуючої черги. Також тиснемо МАЙБУТНІ, якщо вона перша:

IBM MQ та JMeter: Перший контакт
Рисунок 12: Вибір налаштувань існуючого цільового об'єкта

У вікні налаштувань достатньо вибрати ім'я менеджера та потрібну чергу, натиснути обробка. Після цього повторити потрібну кількість разів, поки всі черги, необхідні для взаємодії з JMeter, не будуть створені:

IBM MQ та JMeter: Перший контакт
Рисунок 13: Завершення створення цільового об'єкта

Підготовка JMeter

Підготовка JMeter полягає у додаванні бібліотек, необхідних для взаємодії з MQ. Вони розміщуються в %wmq_home%/java/lib. Перед запуском JMeter скопіюйте їх у %jmeter_home%/lib/ext.

  • 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

Альтернативний список, запропонований polarnik в коментарі із невеликим нюансом: javax.jms-api-2.0.jar замість jms.jar.
З jms.jar виникає помилка NoClassDEfFoundError, вирішення якої знайшов тут.

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

Обидва списки бібліотек успішно працюють з JMeter 5.0 та IBM MQ 8.0.0.4.

Налаштування тест-плану

Необхідний та достатній набір елементів JMeter виглядає так:

IBM MQ та JMeter: Перший контакт
Малюнок 14: Тест-план

У прикладі тест-плану – п'ять змінних. Незважаючи на малу їх кількість, рекомендую заводити окремі конфігураційні елементи під різні типи змінних. У міру розростання тестів це значно спростить навігацію. У цьому випадку виходить два списки. Перший містить параметри підключення до MQ (див. Малюнок 2 и Малюнок 4):

IBM MQ та JMeter: Перший контакт
Рисунок 15: Параметри підключення до MQ

Другий - імена цільових об'єктів, що посилаються на черги:

IBM MQ та JMeter: Перший контакт
Малюнок 16: Параметризовані імена черг

Залишається налаштувати JMS Publisher для завантаження тестового повідомлення у вихідну чергу:

IBM MQ та JMeter: Перший контакт
Малюнок 17: Налаштування JMS Publisher

І JMS Subscriber для вичитування повідомлення із вхідної черги:

IBM MQ та JMeter: Перший контакт
Малюнок 18: Налаштування JMS Subscriber

Якщо все зроблено правильно, результат виконання в листнері наповниться яскравими та життєрадісними зеленими фарбами.

Висновок

Навмисно опустив питання маршрутизації та адміністрування, це досить інтимні та великі теми для окремих публікацій.

Крім того, є солідна порція нюансів у роботі з чергами, базами та файлами, про які також хотілося б поговорити окремо та докладно.

Бережіть свій час. І дякую за увагу.

IBM MQ та JMeter: Перший контакт

Джерело: habr.com