Përshëndetje, Habr! Ky është vazhdimi i , ku do të flas për opsionet e vendosjes së mesazheve në radhë me ndihmën e JMeter.
Ne po krijojmĂ« njĂ« autobus tĂ« dhĂ«nash pĂ«r njĂ« kompani tĂ« madhe federale. Formate tĂ« ndryshme tĂ« kĂ«rkesave, transformime, rregullim i komplikuar i rrugĂ«ve. PĂ«r testim ne duhet tĂ« dĂ«rgojmĂ« shumĂ« mesazhe nĂ« radhĂ«. Me dorĂ« â Ă«shtĂ« njĂ« dhimbje qĂ« nuk mund ta pĂ«rballojĂ« çdo punĂ«tor manual.

Hyrje
Edhe pse me këtë dhimbje na duhej të pajtoheshim në fillim. gjithçka filloi me RFHUtil. I fuqishëm, por i padëshirueshëm dhe i frikshëm: Të gjithë e dinë Rusin.

I pazëvendësueshëm në disa raste, por që ra në mënyrë të vazhdueshme në rastin e përdorimit aktiv.
Testimi i rehatshëm me të është i pamundur.
Me JMeter gjithçka u bë më e thjeshtë. Pas fazës së parë të përvetësimit dhe zakonit, shpresa për testim të lumtur filloi të shkëlqejë.
E pĂ«rdor aktivisht tĂ« dy sĂ«mplanĂ«t JMS Publisher dhe JMS Subscriber. NĂ« ndryshim nga JMS Point-to-Point, kjo çift duket mĂ« e rehatshme nĂ« punĂ«. PĂ«r shembull, te Subscriber nĂ« JMS Selector mund tĂ« pĂ«rcaktoni njĂ« variabĂ«l, te Point-to-Point â jo (ose ky mĂ«nyrĂ« nuk Ă«shtĂ« shumĂ« e dukshme).
Përgatitja e sëmplanëve
JMS Publisher
- Setup â Ădo Shembull. Apache pĂ«rdorni kĂ«tĂ« opsion nĂ«se radhĂ«t/temat ndahen pĂ«rmes variablave.
- Skadenca (ms) = 120000. Në rast të dështimit, kërkesat e testit do të zhduken nga radha pas 2 minutash.
- PĂ«rdorni modalitetin e dĂ«rgimit jo-pĂ«rhershĂ«m? â e vĂ«rtetĂ«. IBM , qĂ« mĂ«nyra e pĂ«rhershme siguron ruajtjen e besueshme tĂ« mesazheve tĂ« dĂ«rguara nĂ« rast dĂ«shtimi tĂ« papritur. Dhe njĂ« shkĂ«mbim mĂ« tĂ« shpejtĂ« nĂ« modalitetin jo-pĂ«rhershĂ«m. PĂ«r qĂ«llime testi, rĂ«ndĂ«sishĂ«m Ă«shtĂ« shpejtĂ«sia.
Në çdo Publisher caktoj karakteristikën jms që Subscriber do të përdorë në JMS Selector. Për çdo dërgesë gjenerohet një vlerë rastësore në elementin e planit të testit User Parameters:

Kështu mund të jesh i sigurt se është lexuar mesazhi i duhur.
Përfundimi "skica" e JMS Publisher të parapërgatitur:

JMS Subscriber
- Cakto â Ădo Shembull. E kuptove.
- Koha e pritjes (ms) = 100000. Nëse kërkesa nuk arrin në radhë pas 100 sekondash pritjeje, do të thotë se diçka shkoi keq.
- TĂ« ndalosh midis mostrave? â e vĂ«rtetĂ«.
JMS Selector â njĂ« gjĂ« mjaft e pĂ«rshtatshme . JMS Subscriber pĂ«rfundimtar:

Si të merremi me cirilikun në mesazhet e dërguara. Në JMeter me default pas leximit ajo shfaqet e deformuar. Për ta evituar këtë dhe për të shijuar të madhin dhe të fuqishmin gjithmonë dhe gjithkund, nevojitet:
- Shto në "startuesin" e JMeter argumentin JVM:
-Dfile.encoding=UTF-8 - Shto JSR223 PostProcessor në Subscriber me rresht në groovy:
prev.setDataEncoding("UTF-8")
Transmetimi i tekstit
Opcioni mĂ« i lenĂ«. I pĂ«rshtatshĂ«m pĂ«r debugimin e testeve tĂ« shkruara sĂ« fundi. Ose pĂ«r rastet kur Ă«shtĂ« e nevojshme tĂ« dĂ«rgohet ndonjĂ« gjĂ« e vogĂ«l. Zgjidhni opsionin Burimi i mesazhit â Tekstare dhe vendosni trupin e mesazhit nĂ« bllokun e tekstit:

Dërgimi i skedarit
Opcioni mĂ« i shpeshtĂ«. I pĂ«rshtatshĂ«m pĂ«r shumicĂ«n e skenarĂ«ve. Zgjidhni opsionin Burimi i mesazhit â Nga skedari dhe specifikoni rrugĂ«n pĂ«r tek mesazhi nĂ« fushĂ« Skedari â Emri i skedarit:

Dërgimi i skedarit në fushën e tekstit
Opcioni më universale. I përshtatshëm për shumicën e skenarëve + mund të përdoret në JMS Point-to-Point, ku nuk ka opsion të dytë dërgimi:

Dërgimi i një vargu bajtësh
Opcioni më i komplikuar. I përshtatshëm për verifikimin e një dërgimi të saktë deri në bajt, pa deformime, SMS dhe perturbacione. Nuk do ta arrini këtë në JMeterin standard, më e qartë u tha këtë.
Prandaj duhej të shkarkohej dhe modifikohej JMS Subscriber.
Zëvendësova në metodën extractContent(..) rreshtin:
buffer.append(bytesMessage.getBodyLength() + " bajta janë marrë në BytesMessage");në:
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);
}dhe rihapat JMeterin.
Duhet shtuar disa JSR223 Sampler. I pari â para disa Publisher/Subscriber pĂ«r krijimin e njĂ«rĂ«s DAT-fajl, qĂ« pĂ«rmban byte tĂ« rastĂ«sishĂ«m:
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");
}I dyti â nĂ« fund tĂ« skenarit, fshin fajlin:
import java.io.File;
File RESULT_FILE = new File(vars.get("PATH_TO_BYTES"));
RESULT_FILE.delete();Dhe mos harro të shtosh rrugën e fajlit te Publisher:

Po ashtu verifikimin nĂ« JSR223 Assertion pĂ«r Subscriber â krahaso byte-t fillestare me ato qĂ« vijnĂ« nĂ« radhĂ«n e marrĂ«sit:
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("Krahasimi dështoi");
SampleResult.setResponseData("Byte-t kanë ndryshuar","UTF-8");
IsSuccess=false;
}Përfundimi
Përshkruaj katër mënyra për dërgimin e mesazheve në radhët që i përdor çdo ditë në praktikë. Shpresoj se kjo informacion do t'ju lehtësojë jetën. Në vazhdim planifikoj të flas për përvojën time në testimin e shkëmbimit, ku në një anë është radhë dhe në anën tjetër një bazë të dhënash ose sistem skedari.
Ruani kohën tuaj. Dhe faleminderit për vëmendjen.

Burimi: habr.com
