Habari, Habr! Huu ni mwendelezo wangu , ambayo nitazungumza juu ya chaguzi za kuweka ujumbe kwenye foleni kwa kutumia JMeter.
Tunatengeneza basi ya data kwa kampuni kubwa ya shirikisho. Miundo mbalimbali ya ombi, mabadiliko, uelekezaji tata. Kwa majaribio, unahitaji kutuma ujumbe mwingi kwenye foleni. Manually ni maumivu ambayo si kila tabibu anaweza kushughulikia.

Utangulizi
Ingawa nililazimika kuvumilia maumivu haya mwanzoni. Yote ilianza na RFHUtil. Nguvu, lakini mbaya na inatisha: Kweli, unajua Rus.

Ni muhimu katika baadhi ya matukio, lakini inapungua kwa kasi katika kesi ya matumizi amilifu.
Upimaji wa urahisi hauwezekani nayo.
Kwa JMeter kila kitu kimekuwa rahisi. Baada ya hatua ya kwanza ya kuimarika na kuizoea, matumaini yalianza kupambazuka kwa majaribio ya furaha.
Ninatumia kikamilifu violezo vya Wachapishaji wa JMS na Wafuatiliaji wa JMS. Tofauti na JMS Point-to-Point, jozi hii ilionekana kuwa rahisi zaidi kutumia. Kwa mfano, na Msajili katika Kiteuzi cha JMS unaweza kutaja tofauti, lakini kwa Point-to-Point huwezi (au njia hii sio dhahiri sana).
Kuandaa sampuli
Mchapishaji wa JMS
- Kuweka - Kila Sampuli. Apache tumia chaguo hili ikiwa foleni/mada zimebainishwa kupitia vigeu.
- Muda wa matumizi (ms) = 120000. Iwapo itashindikana, maombi ya mtihani yatatoweka kwenye foleni baada ya dakika 2.
- Je, ungependa kutumia hali ya uwasilishaji isiyoendelea? - kweli. IBM hali hiyo inayoendelea inahakikisha uhifadhi wa kuaminika wa ujumbe unaotumwa katika tukio la kushindwa kwa ghafla. Na kubadilishana kwa kasi katika hali isiyoendelea. Kwa madhumuni ya kupima, kasi ni muhimu zaidi.
Katika kila Mchapishaji niliweka mali ya jms ambayo Msajili atatumia kwenye Kiteuzi cha JMS. Kwa kila wasilisho, thamani ya nasibu inatolewa katika kipengele cha mpango wa majaribio ya Vigezo vya Mtumiaji:

Kwa njia hii unaweza kuwa na uhakika kwamba ujumbe sahihi unasomwa.
"tupu" ya mwisho ya Mchapishaji wa JMS aliyesanidiwa mapema:

Msajili wa JMS
- Kuweka - Kila Sampuli. Naam, unaelewa.
- Muda umeisha (ms) = 100000. Ikiwa ombi halitafika kwenye foleni baada ya sekunde 100 za kusubiri, basi hitilafu fulani imetokea.
- Ungependa kuacha kati ya sampuli? - kweli.
Kiteuzi cha JMS - rahisi kabisa . Msajili wa Mwisho wa JMS:

Jinsi ya kushughulika na alfabeti ya Cyrilli katika ujumbe unaopitishwa. Katika JMeter, kwa chaguo-msingi, baada ya kusahihisha, inaonyeshwa kwa upotovu. Ili kuepuka hili na kufurahia makubwa na yenye nguvu daima na kila mahali, unahitaji:
- Ongeza hoja ya JVM kwa "kizindua" cha JMeter:
-Dfile.encoding=UTF-8 - Ongeza JSR223 PostProcessor kwa Msajili na mstari wa groovy:
prev.setDataEncoding("UTF-8")
Tuma maandishi
Chaguo lazi zaidi. Inafaa kwa utatuzi wa majaribio yaliyoandikwa hivi karibuni. Au kwa kesi wakati unahitaji kutuma angalau kitu kidogo. Chagua chaguo Chanzo cha ujumbe - Textarea na weka mwili wa ujumbe kwenye kizuizi cha maandishi:

Fungua uhamisho
Chaguo la kawaida zaidi. Inafaa kwa matukio mengi. Chagua chaguo Chanzo cha ujumbe - Kutoka kwa faili na uonyeshe njia ya ujumbe kwenye uwanja Faili - Jina la Faili:

Kuhamisha faili kwenye sehemu ya maandishi
Chaguo linalofaa zaidi. Inafaa kwa hali nyingi + inaweza kutumika katika JMS Point-to-Point ambapo hakuna chaguo la pili la kutuma:

Kupitisha safu ya baiti
Chaguo ngumu zaidi. Inafaa kwa kuangalia utumaji sahihi wa maombi hadi kwa kawaida, bila upotoshaji, SMS na usumbufu. Hutaweza kufanya hivi katika JMeter chaguo-msingi. Hakika niliambiwa kuhusu hili.
Kwa hivyo nililazimika kupakua na kurekebisha Msajili wa JMS.
Imebadilishwa katika mbinu extractContent(..) mstari:
buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");juu ya:
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);
}na kujenga upya JMeter.
Kilichobaki ni kuongeza Sampuli kadhaa za JSR223. Ya kwanza ni kabla ya jozi ya Mchapishaji/Mteja kuunda faili ya DAT iliyo na baiti nasibu:
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");
}Ya pili - mwishoni mwa hati, hufuta faili:
import java.io.File;
File RESULT_FILE = new File(vars.get("PATH_TO_BYTES"));
RESULT_FILE.delete();Na usisahau kuongeza njia ya faili katika Mchapishaji:

Na pia hundi katika Madai ya JSR223 kwa Msajili - linganisha kaiti chanzo na zile zinazofika kwenye foleni ya mpokeaji:
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;
}Hitimisho
Nilielezea njia nne za kutuma ujumbe kwenye foleni, ambazo mimi hutumia kila siku katika mazoezi. Natumai habari hii imerahisisha maisha yako. Kwa kuendelea, ninapanga kuzungumza juu ya uzoefu wangu wa kujaribu kubadilishana ambapo kuna foleni upande mmoja na hifadhidata au mfumo wa faili kwa upande mwingine.
Okoa wakati wako. Na asante kwa umakini wako.

Chanzo: mapenzi.com
