Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Салом, Хабр! Ин идомаи ман аст нашри қаблӣ, ки дар он ман дар бораи имконоти ҷойгиркунии паёмҳо дар навбатҳо бо истифода аз JMeter сӯҳбат мекунам.

Мо як автобуси маълумотро барои як ширкати бузурги федералӣ месозем. Форматҳои гуногуни дархост, тағирот, масири мураккаб. Барои санҷиш, шумо бояд ба навбат паёмҳои зиёде фиристед. Ба таври дастӣ дардест, ки на ҳар як хиропрактор аз ӯҳдаи он мебарояд.

Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Муқаддима

Ҳарчанд дар аввал бояд ба ин дард тоқат кунам. Ҳамааш бо RFHUtil оғоз ёфт. Қудратманд, аммо заҳматталаб ва даҳшатнок: Хуб, шумо Русро медонед.

Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Дар баъзе мавридҳо ҳатмӣ аст, аммо дар сурати истифодаи фаъол мунтазам коҳиш меёбад.
Бо он санҷиши қулай имконнопазир аст.

Бо JMeter ҳама чиз осонтар шуд. Пас аз марҳилаи аввали азхудкунӣ ва одат кардан, умед ба имтиҳони хушбахтона пайдо шуд.

Ман намунаҳои JMS Publisher ва Subscriber JMS-ро фаъолона истифода мебарам. Баръакси JMS Point-to-Point, ин ҷуфт барои истифода қулайтар менамуд. Масалан, бо Subscriber дар JMS Selector шумо метавонед тағирёбандаро муайян кунед, аммо бо Point-to-Point шумо наметавонед (ё ин усул чандон равшан нест).

Тайёр кардани намунагирандагон

JMS Publisher

  • Танзимот - Ҳар як намуна. Апачи тавсия мекунад ин хосиятро истифода баред, агар навбатҳо/мавзӯъҳо тавассути тағирёбандаҳо муайян карда шаванд.
  • Ба охир расидани мӯҳлат (ms) = 120000. Дар сурати нокомӣ, дархостҳои санҷишӣ пас аз 2 дақиқа аз навбат нопадид мешаванд.
  • Усули интиқоли доимиро истифода баред? -дуруст. IBM тасдиқ мекунадки режими доимй дар сурати нобарории ногахонй нигахдории боэътимоди хабархои фиристодашударо таъмин мекунад. Ва мубодилаи тезтар дар реҷаи доимӣ. Барои мақсадҳои санҷиш, суръат муҳимтар аст.

Дар ҳар як Publisher ман як амволи jms муқаррар кардам, ки Муштарӣ дар интихоби JMS истифода хоҳад кард. Барои ҳар як пешниҳод, дар элементи нақшаи санҷиши Параметрҳои корбар арзиши тасодуфӣ тавлид мешавад:

Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Бо ин роҳ шумо метавонед боварӣ ҳосил кунед, ки паёми дуруст хонда шудааст.

"Блоки" ниҳоии JMS Publisher, ки қаблан танзим шудааст:

Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Муштарии JMS

  • Танзимот - Ҳар як намуна. Хуб, шумо мефаҳмед.
  • Вақти тамомшавӣ (ms) = 100000. Агар дархост пас аз 100 сонияи интизорӣ ба навбат наояд, пас чизе хато кардааст.
  • Дар байни намунаҳо таваққуф кунед? -дуруст.

JMS Selector - хеле қулай чизи. Муштарии ниҳоии JMS:

Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Чӣ тавр бояд бо алифбои кириллӣ дар паёмҳои ирсолшуда. Дар JMeter, ба таври нобаёнӣ, пас аз хондани кор, он каҷ нишон дода мешавад. Барои пешгирӣ кардани ин ва ҳамеша ва дар ҳама ҷо аз бузург ва тавоно лаззат баред, шумо бояд:

  1. Аргументи JVM -ро ба JMeter "ilauncher" илова кунед:
    -Dfile.encoding=UTF-8
  2. Иловаи JSR223 PostProcessor ба муштарӣ бо хати ҷолиб:
    prev.setDataEncoding("UTF-8")

Матн фиристед

Танбалтарин вариант. Муносиб барои ислоҳи санҷишҳои нав навишташуда. Ё барои ҳолатҳое, ки ба шумо лозим аст, ки ҳадди аққал як чизи хурдро фиристед. Варианти интихоб кунед Манбаи паём - Textarea ва матни паёмро дар блоки матнӣ ҷойгир кунед:

Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Интиқоли файл

Варианти маъмултарин. Муносиб барои аксари сенарияҳо. Варианти интихоб кунед Манбаи паём - Аз файл ва роҳи паёмро дар майдон нишон диҳед Файл - Номи файл:

Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Интиқоли файл ба майдони матн

Варианти ҳамаҷониба. Муносиб барои аксари сенарияҳо + метавонад дар JMS Point-to-Point истифода шавад, ки дар он ҷо интихоби дуюми ирсол вуҷуд надорад:

Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Гузаронидани массиви байт

Варианти душвортарин. Муносиб барои санҷидани интиқоли дақиқи дархостҳо то байт, бидуни таҳриф, SMS ва изтироб. Шумо инро дар JMeter пешфарз карда наметавонед. дар ин ҷо Дар ин бора ба ман бешубҳа гуфтанд.

Пас, ман маҷбур будам, ки зеркашӣ кунам манбаъхо ва тағир диҳед код Муштарии JMS.

Дар усул иваз карда шудааст extractContent(..) сатр:

buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");

дар:

byte[] bytes = new byte[(int) bytesMessage.getBodyLength()];
bytesMessage.readBytes(bytes);
try {
	buffer.append(new String(bytes, "UTF-8"));
} catch (UnsupportedEncodingException e) {
	throw new RuntimeException(e);
}

ва JMeter-ро аз нав сохтанд.

Танҳо илова кардани якчанд намунаҳои JSR223 боқӣ мемонад. Аввалин пеш аз ҷуфти Ношир/Муштарӣ барои сохтани файли DAT, ки дорои байтҳои тасодуфӣ мебошад:

import org.apache.commons.lang3.RandomUtils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

vars.put("PATH_TO_BYTES", "C:temprandomBytes.dat");
File RESULT_FILE = new File(vars.get("PATH_TO_BYTES"));
byte[] arr = RandomUtils.nextBytes((int)(Math.random()*10000));
        try {
            FileOutputStream fos = new FileOutputStream(RESULT_FILE);
            fos.write(arr);
            fos.close();
        } catch (IOException e) {
            System.out.println("file not found");
        }

Дуюм - дар охири скрипт, файлро нест мекунад:

import java.io.File;

File RESULT_FILE = new File(vars.get("PATH_TO_BYTES"));
RESULT_FILE.delete();

Ва фаромӯш накунед, ки роҳро ба файл дар Publisher илова кунед:

Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Ва инчунин чек дар JSR223 Assertion for Subscriber - байтҳои манбаъро бо онҳое, ки дар навбати қабулкунанда меоянд, муқоиса кунед:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;

Path path = Paths.get(vars.get("PATH_TO_BYTES"), new String[0]);
byte[] originalArray = Files.readAllBytes(path);
byte[] changedArray = ctx.getPreviousResult().getResponseData();
System.out.println(changedArray.length);

if (Arrays.equals(originalArray, changedArray))
	{
     	SampleResult.setResponseMessage("OK");

	} else {
	   SampleResult.setSuccessful(false);
     	   SampleResult.setResponseMessage("Comparison failed");
	   SampleResult.setResponseData("Bytes have changed","UTF-8");
     	   IsSuccess=false;
	}

хулоса

Ман чор тарзи фиристодани паёмҳоро ба навбатҳо тавсиф кардам, ки ҳар рӯз дар амал истифода мебарам. Ман умедворам, ки ин маълумот ҳаёти шуморо осонтар мекунад. Дар идома, ман нақша дорам, ки дар бораи таҷрибаи худ оид ба санҷиши мубодила сӯҳбат кунам, ки дар як тараф навбат ва дар тарафи дигар пойгоҳи додаҳо ё системаи файлӣ мавҷуд аст.

Вақти худро сарфа кунед. Ва ташаккур барои таваҷҷӯҳатон.

Навбатҳо ва JMeter: мубодила бо Ношир ва Муштарӣ

Манбаъ: will.com

Илова Эзоҳ