Салом, Хабр! Ин идомаи ман аст
Мо як автобуси маълумотро барои як ширкати бузурги федералӣ месозем. Форматҳои гуногуни дархост, тағирот, масири мураккаб. Барои санҷиш, шумо бояд ба навбат паёмҳои зиёде фиристед. Ба таври дастӣ дардест, ки на ҳар як хиропрактор аз ӯҳдаи он мебарояд.
Муқаддима
Ҳарчанд дар аввал бояд ба ин дард тоқат кунам. Ҳамааш бо RFHUtil оғоз ёфт. Қудратманд, аммо заҳматталаб ва даҳшатнок: Хуб, шумо Русро медонед.
Дар баъзе мавридҳо ҳатмӣ аст, аммо дар сурати истифодаи фаъол мунтазам коҳиш меёбад.
Бо он санҷиши қулай имконнопазир аст.
Бо JMeter ҳама чиз осонтар шуд. Пас аз марҳилаи аввали азхудкунӣ ва одат кардан, умед ба имтиҳони хушбахтона пайдо шуд.
Ман намунаҳои JMS Publisher ва Subscriber JMS-ро фаъолона истифода мебарам. Баръакси JMS Point-to-Point, ин ҷуфт барои истифода қулайтар менамуд. Масалан, бо Subscriber дар JMS Selector шумо метавонед тағирёбандаро муайян кунед, аммо бо Point-to-Point шумо наметавонед (ё ин усул чандон равшан нест).
Тайёр кардани намунагирандагон
JMS Publisher
- Танзимот - Ҳар як намуна. Апачи
тавсия мекунад ин хосиятро истифода баред, агар навбатҳо/мавзӯъҳо тавассути тағирёбандаҳо муайян карда шаванд. - Ба охир расидани мӯҳлат (ms) = 120000. Дар сурати нокомӣ, дархостҳои санҷишӣ пас аз 2 дақиқа аз навбат нопадид мешаванд.
- Усули интиқоли доимиро истифода баред? -дуруст. IBM
тасдиқ мекунад ки режими доимй дар сурати нобарории ногахонй нигахдории боэътимоди хабархои фиристодашударо таъмин мекунад. Ва мубодилаи тезтар дар реҷаи доимӣ. Барои мақсадҳои санҷиш, суръат муҳимтар аст.
Дар ҳар як Publisher ман як амволи jms муқаррар кардам, ки Муштарӣ дар интихоби JMS истифода хоҳад кард. Барои ҳар як пешниҳод, дар элементи нақшаи санҷиши Параметрҳои корбар арзиши тасодуфӣ тавлид мешавад:
Бо ин роҳ шумо метавонед боварӣ ҳосил кунед, ки паёми дуруст хонда шудааст.
"Блоки" ниҳоии JMS Publisher, ки қаблан танзим шудааст:
Муштарии JMS
- Танзимот - Ҳар як намуна. Хуб, шумо мефаҳмед.
- Вақти тамомшавӣ (ms) = 100000. Агар дархост пас аз 100 сонияи интизорӣ ба навбат наояд, пас чизе хато кардааст.
- Дар байни намунаҳо таваққуф кунед? -дуруст.
JMS Selector - хеле қулай
Чӣ тавр бояд бо алифбои кириллӣ дар паёмҳои ирсолшуда. Дар JMeter, ба таври нобаёнӣ, пас аз хондани кор, он каҷ нишон дода мешавад. Барои пешгирӣ кардани ин ва ҳамеша ва дар ҳама ҷо аз бузург ва тавоно лаззат баред, шумо бояд:
- Аргументи JVM -ро ба JMeter "ilauncher" илова кунед:
-Dfile.encoding=UTF-8
- Иловаи JSR223 PostProcessor ба муштарӣ бо хати ҷолиб:
prev.setDataEncoding("UTF-8")
Матн фиристед
Танбалтарин вариант. Муносиб барои ислоҳи санҷишҳои нав навишташуда. Ё барои ҳолатҳое, ки ба шумо лозим аст, ки ҳадди аққал як чизи хурдро фиристед. Варианти интихоб кунед Манбаи паём - Textarea ва матни паёмро дар блоки матнӣ ҷойгир кунед:
Интиқоли файл
Варианти маъмултарин. Муносиб барои аксари сенарияҳо. Варианти интихоб кунед Манбаи паём - Аз файл ва роҳи паёмро дар майдон нишон диҳед Файл - Номи файл:
Интиқоли файл ба майдони матн
Варианти ҳамаҷониба. Муносиб барои аксари сенарияҳо + метавонад дар JMS Point-to-Point истифода шавад, ки дар он ҷо интихоби дуюми ирсол вуҷуд надорад:
Гузаронидани массиви байт
Варианти душвортарин. Муносиб барои санҷидани интиқоли дақиқи дархостҳо то байт, бидуни таҳриф, SMS ва изтироб. Шумо инро дар JMeter пешфарз карда наметавонед.
Пас, ман маҷбур будам, ки зеркашӣ кунам
Дар усул иваз карда шудааст 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 илова кунед:
Ва инчунин чек дар 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;
}
хулоса
Ман чор тарзи фиристодани паёмҳоро ба навбатҳо тавсиф кардам, ки ҳар рӯз дар амал истифода мебарам. Ман умедворам, ки ин маълумот ҳаёти шуморо осонтар мекунад. Дар идома, ман нақша дорам, ки дар бораи таҷрибаи худ оид ба санҷиши мубодила сӯҳбат кунам, ки дар як тараф навбат ва дар тарафи дигар пойгоҳи додаҳо ё системаи файлӣ мавҷуд аст.
Вақти худро сарфа кунед. Ва ташаккур барои таваҷҷӯҳатон.
Манбаъ: will.com