Привіт, Хабре!
Це приквел моєї
Цього разу розповім про свій досвід примирення JMeter та IBM MQ для щасливого тестування програм на IBM WAS. Зіткнувся з таким завданням, легко вона не піддавалася. Хочу допомогти заощадити час усім зацікавленим.
Запровадження
Про проект: шина даних, безліч XML-повідомлень, три області обміну (черги, БД, файлова система), веб-сервіси зі своєю логікою обробки повідомлень. З розвитком проекту тестувати вручну ставало все складніше. На допомогу був покликаний Apache JMeter – потужний та опенсорсний, з великою спільнотою користувачів та доброзичливим інтерфейсом. Легкість кастомізації версії «з коробки» дозволяє покрити будь-які кейси, а обіцянка провідного розробника допомогти якщо що (таки допоміг), остаточно затвердило у виборі.
Приготування початкового контексту
Для взаємодії з менеджером черг потрібний початковий контекст. Він буває кількох типів, ось
Для його створення зручно використовувати MQ Explorer:
Рисунок 1: Додавання початкового контексту
Вибрати файловий тип контексту та директорію для зберігання .bindings файлу, який міститиме опис JNDI-об'єктів:
Рисунок 2: Вибір типу початкового контексту
Після цього можна розпочинати створення цих об'єктів. І почати з фабрики з'єднань:
Малюнок 3: Створення фабрики з'єднань
Вибрати зрозуміле ім'я.
Рисунок 4: Вибір імені заводу з'єднань
… і тип Queue Connection Factory:
Рисунок 5: Вибір типу фабрики з'єднань
Протокол MQ Client для можливості взаємодії з MQ віддалено:
Рисунок 6: Вибір протоколу фабрики з'єднань
На наступному кроці можна вибрати існуючу фабрику і подальші налаштування скопіювати з неї. Тиснемо МАЙБУТНІ, якщо такої немає:
Рисунок 7: Вибір параметрів існуючої фабрики з'єднань
У вікні вибору параметрів достатньо встановити три. На вкладці Connection вказати ім'я менеджера черг та ip стенду з його розташуванням (порт 1414 залишити):
Рисунок 8: Налаштування параметрів фабрики з'єднань
І на вкладці Канали канал для з'єднання. Натиснути обробка для завершення:
Рисунок 9: Завершення створення фабрики з'єднань
Тепер створимо підключення до черги:
Малюнок 10: Створення цільового об'єкта
Виберемо зрозуміле ім'я (вважаю за краще вказувати реальне ім'я черги) і тип Чергу:
Рисунок 11: Вибір імені та типу цільового об'єкта
За аналогією з Малюнок 7 можна скопіювати налаштування з існуючої черги. Також тиснемо МАЙБУТНІ, якщо вона перша:
Рисунок 12: Вибір налаштувань існуючого цільового об'єкта
У вікні налаштувань достатньо вибрати ім'я менеджера та потрібну чергу, натиснути обробка. Після цього повторити потрібну кількість разів, поки всі черги, необхідні для взаємодії з 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
Альтернативний список, запропонований
З 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 виглядає так:
Малюнок 14: Тест-план
У прикладі тест-плану – п'ять змінних. Незважаючи на малу їх кількість, рекомендую заводити окремі конфігураційні елементи під різні типи змінних. У міру розростання тестів це значно спростить навігацію. У цьому випадку виходить два списки. Перший містить параметри підключення до MQ (див. Малюнок 2 и Малюнок 4):
Рисунок 15: Параметри підключення до MQ
Другий - імена цільових об'єктів, що посилаються на черги:
Малюнок 16: Параметризовані імена черг
Залишається налаштувати JMS Publisher для завантаження тестового повідомлення у вихідну чергу:
Малюнок 17: Налаштування JMS Publisher
І JMS Subscriber для вичитування повідомлення із вхідної черги:
Малюнок 18: Налаштування JMS Subscriber
Якщо все зроблено правильно, результат виконання в листнері наповниться яскравими та життєрадісними зеленими фарбами.
Висновок
Навмисно опустив питання маршрутизації та адміністрування, це досить інтимні та великі теми для окремих публікацій.
Крім того, є солідна порція нюансів у роботі з чергами, базами та файлами, про які також хотілося б поговорити окремо та докладно.
Бережіть свій час. І дякую за увагу.
Джерело: habr.com