Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

Hello, Habr! Tani waa taxane aniga daabacaad hore, kaas oo aan kaga hadli doono fursadaha lagu geliyo farriimaha safafka isticmaalaya JMeter.

Waxaan u samaynaynaa xogta baska shirkad weyn oo federaal ah. Qaabab codsi oo kala duwan, isbeddello, marin adag. Imtixaanka, waxaad u baahan tahay inaad farriimo badan u dirto safka. Gacanta waa xanuun uusan lafopractor kasta xamili karin.

Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

Horudhac

Inkasta oo aan ku khasbanaaday in aan xanuunkan u dulqaato markii hore. Dhammaantood waxay ku bilaabeen RFHUtil. Xoog badan, laakiin sirgaxan oo cabsi leh: Hagaag, waad taqaan Rus.

Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

Waa lagama maarmaan xaaladaha qaarkood, laakiin si tartiib tartiib ah hoos ugu dhacaya haddii si firfircoon loo isticmaalo.
Tijaabada ku habboon waa wax aan suurtagal ahayn iyada.

JMeter wax walba way fududaden. Marxaladda koowaad ee maaraynta iyo la qabsiga ka dib, rajadii ayaa soo ifbaxday imtixaan farxadeed.

Waxaan si firfircoon u isticmaalaa daabacaha JMS iyo muunadaha macaamiisha JMS. Si ka duwan JMS Point-to-point, labadani waxay u muuqdeen kuwo ku habboon in la isticmaalo. Tusaale ahaan, macmiilka JMS Selector waxaad ku qeexi kartaa doorsoome, laakiin Point-to-point ma awoodid (ama habkani maaha mid aad u muuqda).

Diyaarinta sambalayaasha

Daabacaha JMS

  • Dejinta - Muunad kasta. Apache waxay ku talinaysaa Isticmaal doorashadan haddii safafka/ mowduucyada lagu qeexo doorsoomayaasha.
  • Dhicis (ms) = 120000. Haddii ay dhacdo guuldarro, codsiyada imtixaanku waxay ka baxayaan safka 2 daqiiqo ka dib.
  • Isticmaal habka gaarsiinta aan joogtada ahayn? - run. IBM ogolaatohabkaas joogtada ahi wuxuu xaqiijiyaa ilaalinta la isku halayn karo ee fariimaha la kala qaado haddii ay dhacdo guuldarro lama filaan ah. Iyo beddelka degdegga ah ee hab aan joogto ahayn. Ujeedooyinka tijaabada, xawaaruhu waa ka muhimsan yahay.

Daabace kasta waxaan dejiyaa hanti jms oo macmiilku u isticmaali doono Xulashada JMS. Soo gudbin kasta, qiime random ah ayaa laga soo saarayaa cutubka qorshaha tijaabinta Parameters User:

Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

Sidan ayaad ku hubin kartaa in fariinta saxda ah la akhriyay.

"Madhan" kama dambaysta ah ee daabacaha JMS ee horay loo habeeyey:

Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

Macmiil JMS

  • Dejinta - Muunad kasta. Hagaag, waad fahantay.
  • Waqti-joojin (ms) = 100000. Haddii codsigu ku iman waayo safka ka dib 100 ilbiriqsi oo sugitaan ah, markaa wax khaldameen.
  • Jooji inta u dhaxaysa shaybaarrada? - run.

Xulashada JMS - aad u habboon shay. Macmiilka JMS ee u dambeeya:

Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

Sida loola macaamilo alifbeetada Cyrillic ee fariimaha la kala qaado. Gudaha JMeter, sida caadiga ah, ka dib markii la saxo, waxaa loo soo bandhigay si qalloocan. Si aad taas uga fogaato oo aad ugu raaxaysato kan weyn ee xoogga badan had iyo jeer iyo meel kasta, waxaad u baahan tahay inaad:

  1. Ku dar dooda JVM JMeter "furaha":
    -Dfile.encoding=UTF-8
  2. Ku dar JSR223 PostProcessor-ka Macmiillaha leh khadka jeexan:
    prev.setDataEncoding("UTF-8")

Soo dir qoraal

Doorashada ugu caajiska badan. Ku haboon khaladka imtixaanada qoran ee cusub. Ama kiisaska marka aad u baahan tahay inaad dirto ugu yaraan wax yar. Dooro ikhtiyaar Isha fariinta - Textarea oo dhig jidhka farriinta meel qoraal ah:

Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

Wareejinta faylka

Doorashada ugu caansan. Ku habboon inta badan xaaladaha. Dooro ikhtiyaar Isha fariinta - Laga soo bilaabo faylka oo tilmaan jidka loo maro farriinta goobta dhexdeeda File - Magaca faylka:

Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

U wareejinta faylka goobta qoraalka

Doorashada ugu badan. Ku habboon inta badan xaaladaha + waxa loo isticmaali karaa JMS Point-to-point halkaas oo aanay jirin doorasho labaad oo diris ah:

Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

Gudbinta habraaca byte

Doorashada ugu adag. Ku habboon hubinta gudbinta saxda ah ee codsiyada ilaa byte-ka, iyada oo aan qalloocin, SMS iyo qas. Ma awoodi doontid inaad tan ku sameyso JMeter-ka caadiga ah. halkan Waxaa hubaal ah in arrintan la ii sheegay.

Markaa waxay noqotay inaan soo dejiyo ilo waxna ka beddel code Macmiil JMS.

Lagu bedelay habka extractContent(..) line:

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

ku saabsan:

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

oo dib loo dhisay JMeter.

Waxa hadhay oo dhan waa in lagu daro dhawr JSR223 Sampler ah. Midka koowaad waa ka hor daabacaha/lammaanaha is-diiwaangeliyaha si ay u abuuraan faylka DAT oo ka kooban bytes random:

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

Midda labaad - dhamaadka qoraalka, tirtirtaa faylka:

import java.io.File;

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

Ha iloobin inaad ku darto dariiqa faylka ku jira Publisher:

Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

Iyo sidoo kale jeeg ku jira JSR223 Xaqiijinta Macmiilka - barbar dhig ilaha byteska iyo kuwa soo gala safka qaataha:

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

gunaanad

Waxaan qeexay afar siyaabood oo farriimaha loogu diri karo safafka, kuwaas oo aan isticmaalo maalin kasta ficil ahaan. Waxaan rajeynayaa in macluumaadkani uu noloshaada kuu fududeeyo. Sii wadida, waxaan qorsheynayaa inaan ka hadlo waayo-aragnimadayda tijaabinta beddelka halkaas oo uu jiro saf ka jiro hal dhinac iyo kaydka xogta ama nidaamka faylalka kale.

Waqtigaaga ilaali. Waad ku mahadsan tahay dareenkaaga.

Safafka iyo JMeter: la wadaagida daabacaha iyo macmiilaha

Source: www.habr.com

Add a comment