Biðraðir og JMeter: deila með útgefanda og áskrifanda

Halló, Habr! Þetta er framhald af mínum fyrri útgáfu, þar sem ég mun tala um valkosti til að setja skilaboð í biðraðir með JMeter.

Við erum að búa til gagnastrætó fyrir stórt sambandsfyrirtæki. Ýmis beiðnisnið, umbreytingar, flókin leið. Til að prófa þarftu að senda mikið af skilaboðum í biðröðina. Handvirkt er sársauki sem ekki sérhver kírópraktor getur séð um.

Biðraðir og JMeter: deila með útgefanda og áskrifanda

Inngangur

Þó ég hafi þurft að þola þennan sársauka fyrst. Þetta byrjaði allt með RFHUtil. Öflugur, en óþægilegur og skelfilegur: Jæja, þú þekkir Rus.

Biðraðir og JMeter: deila með útgefanda og áskrifanda

Ómissandi í sumum tilfellum, en minnkar jafnt og þétt ef um virka notkun er að ræða.
Þægileg próf er ómögulegt með því.

Með JMeter er allt orðið auðveldara. Eftir fyrsta stig meistaranámsins og að venjast því fór vonin að kvikna um ánægjulegar prófanir.

Ég nota virkan JMS Publisher og JMS Subscriber sýnatökutæki. Ólíkt JMS Point-to-Point, virtist þetta par þægilegra í notkun. Til dæmis, með Subscriber í JMS Selector geturðu tilgreint breytu, en með Point-to-Point geturðu það ekki (eða þessi aðferð er ekki mjög augljós).

Undirbúningur sýnatöku

JMS útgefandi

  • Uppsetning - Hvert sýnishorn. Apache mælir með notaðu þennan valmöguleika ef biðraðir/efni eru tilgreind með breytum.
  • Rennur (ms) = 120000. Ef bilun verður, munu prófbeiðnir hverfa úr biðröðinni eftir 2 mínútur.
  • Nota óviðvarandi sendingarham? - satt. IBM samþykkirþessi viðvarandi háttur tryggir áreiðanlega varðveislu sendra skilaboða ef skyndileg bilun kemur upp. Og hraðari skipti í óviðvarandi ham. Í prófunarskyni er hraði mikilvægari.

Í hverjum útgefanda set ég jms eign sem áskrifandinn mun nota í JMS valinu. Fyrir hverja innsendingu er tilviljunarkennt gildi myndað í prófunaráætlunarhlutanum fyrir notendafæribreytur:

Biðraðir og JMeter: deila með útgefanda og áskrifanda

Þannig geturðu verið viss um að rétt skilaboð séu lesin.

Loka „eyða“ forstillts JMS útgefanda:

Biðraðir og JMeter: deila með útgefanda og áskrifanda

JMS áskrifandi

  • Uppsetning - Hvert sýnishorn. Jæja, þú skilur.
  • Tímamörk (ms) = 100000. Ef beiðnin berst ekki í biðröð eftir 100 sekúndna bið, þá fór eitthvað úrskeiðis.
  • Hætta á milli sýna? - satt.

JMS Selector - frekar þægilegt hlutur. Lokaáskrifandi JMS:

Biðraðir og JMeter: deila með útgefanda og áskrifanda

Hvernig á að takast á við kyrillíska stafrófið í sendum skilaboðum. Í JMeter, sjálfgefið, eftir prófarkalestur, birtist það skakkt. Til að forðast þetta og njóta hins mikla og kraftmikla alltaf og alls staðar þarftu að:

  1. Bættu JVM rökum við JMeter „ræsiforritið“:
    -Dfile.encoding=UTF-8
  2. Bættu JSR223 PostProcessor við áskrifanda með grófri línu:
    prev.setDataEncoding("UTF-8")

Sendu texta

Latasti kosturinn. Hentar vel til að kemba nýskrifuð próf. Eða fyrir tilvik þegar þú þarft að senda að minnsta kosti eitthvað lítið. Veldu valkost Uppspretta skilaboða - Textarea og settu meginmál skilaboðanna í textablokk:

Biðraðir og JMeter: deila með útgefanda og áskrifanda

Skráaflutningur

Algengasta valkosturinn. Hentar fyrir flestar aðstæður. Veldu valkost Uppruni skilaboða - Úr skrá og tilgreinið leiðina að skilaboðunum í reitnum Skrá - Skráarnafn:

Biðraðir og JMeter: deila með útgefanda og áskrifanda

Að flytja skrá yfir í textareit

Fjölhæfasti kosturinn. Hentar fyrir flestar aðstæður + er hægt að nota í JMS Point-to-Point þar sem enginn annar sendimöguleiki er til staðar:

Biðraðir og JMeter: deila með útgefanda og áskrifanda

Fer framhjá bætafylki

Erfiðasti kosturinn. Hentar til að athuga óskeikulanlega nákvæma sendingu beiðna niður í bæti, án röskunar, SMS og truflana. Þú munt ekki geta gert þetta í sjálfgefna JMeter. hér Mér var örugglega sagt frá þessu.

Svo ég varð að sækja heimildir og breyta kóða JMS áskrifandi.

Skipt út í aðferðinni extractContent(..) lína:

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);
}

og endurbyggður JMeter.

Allt sem er eftir er að bæta við nokkrum JSR223 sýnishornum. Sú fyrsta er á undan útgefanda/áskrifanda parinu til að búa til DAT skrá sem inniheldur handahófskennd bæti:

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");
        }

Annað - í lok handritsins, eyðir skránni:

import java.io.File;

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

Og ekki gleyma að bæta slóðinni við skrána í Publisher:

Biðraðir og JMeter: deila með útgefanda og áskrifanda

Og líka ávísun á JSR223 Assertion for Subscriber - berðu saman upprunabætin við þau sem koma í biðröð viðtakandans:

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;
	}

Ályktun

Ég lýsti fjórum leiðum til að senda skilaboð í biðraðir, sem ég nota á hverjum degi í reynd. Ég vona að þessar upplýsingar geri líf þitt auðveldara. Í framhaldinu ætla ég að segja frá reynslu minni af því að prófa skipti þar sem er biðröð í öðrum endanum og gagnagrunnur eða skráarkerfi í hinum.

Sparaðu tíma þinn. Og takk fyrir athyglina.

Biðraðir og JMeter: deila með útgefanda og áskrifanda

Heimild: www.habr.com

Bæta við athugasemd