Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Sawubona, Habr! Lokhu kulandelana kwami ukushicilelwa kwangaphambilini, lapho ngizokhuluma ngezinketho zokubeka imilayezo kulayini usebenzisa i-JMeter.

Senza ibhasi ledatha lenkampani enkulu yombuso. Amafomethi ezicelo ahlukahlukene, ukuguqulwa, umzila oyinkimbinkimbi. Ukuze uhlole, udinga ukuthumela imilayezo eminingi kulayini. Mathupha izinhlungu akuwona wonke ama-chiropractor angabhekana nazo.

Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Isingeniso

Nakuba kwadingeka ngibekezelele lobu buhlungu ekuqaleni. Konke kwaqala nge-RFHUtil. Inamandla, kodwa iyaxaka futhi iyesabeka: Uyazi, uRus.

Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Iyadingeka kwezinye izimo, kodwa yehla kancane uma isetshenziswa.
Ukuhlola okulula akunakwenzeka ngakho.

Nge-JMeter konke sekulula. Ngemuva kwesigaba sokuqala sokuzijwayeza nokujwayela, ithemba laqala ukuvela ukuze kuhlolwe injabulo.

Ngisebenzisa ngokugcwele amasampula Omshicileli we-JMS kanye ne-JMS Subscriber. Ngokungafani ne-JMS Point-to-Point, lokhu kubhangqwana kubonakale kulula kakhulu ukukusebenzisa. Isibonelo, ngoBhalisi kusikhethi se-JMS ungacacisa okuguquguqukayo, kodwa nge-Point-to-Point awukwazi (noma le ndlela ayibonakali kahle).

Ilungiselela amasampula

Umshicileli we-JMS

  • Isethaphu - Isampula Ngayinye. I-Apache kuncoma sebenzisa le nketho uma ulayini/izihloko zicaciswe ngezinto eziguquguqukayo.
  • Ukuphelelwa yisikhathi (ms) = 120000. Esimeni sokuhluleka, izicelo zokuhlolwa zizonyamalala kulayini ngemva kwemizuzu emi-2.
  • Sebenzisa imodi yokulethwa engapheli? - iqiniso. IBM iyavumaleyo ndlela eqhubekayo iqinisekisa ukulondolozwa okuthembekile kwemilayezo edlulisiwe uma kwenzeka ukwehluleka kungazelelwe. Futhi ukushintshanisa okusheshayo kumodi engaqhubeki. Ngezinjongo zokuhlola, isivinini sibaluleke kakhulu.

Kumshicileli ngamunye ngibeka impahla ye-jms ezosetshenziswa Obhalisile Kusikhethi se-JMS. Kokuthunyelwa ngakunye, kukhiqizwa inani elingahleliwe kusici sohlelo lokuhlola Amapharamitha Womsebenzisi:

Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Ngale ndlela ungaqiniseka ukuthi umlayezo olungile ufundiwe.

“Isikhala” sokugcina somshicileli olungiselelwe kusengaphambili we-JMS:

Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Obhalisile we-JMS

  • Isethaphu - Isampula Ngayinye. Awu, uyaqonda.
  • Isikhathi sokuvala (ms) = 100000. Uma isicelo singafiki kulayini ngemva kwemizuzwana eyi-100 yokulinda, khona-ke kukhona okungahambanga kahle.
  • Yeka phakathi kwamasampuli? - iqiniso.

I-JMS Selector - elula kakhulu into. Obhalisile wokugcina we-JMS:

Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Ungabhekana kanjani nezinhlamvu zesiCyrillic emilayezweni edluliswayo. Ku-JMeter, ngokuzenzakalelayo, ngemva kokuhlola amaphutha, ikhonjiswa ngokugwegwile. Ukuze ugweme lokhu futhi ujabulele ezinkulu nezinamandla njalo futhi yonke indawo, udinga:

  1. Engeza i-agumenti ye-JVM “kumqalisi” we-JMeter:
    -Dfile.encoding=UTF-8
  2. Engeza i-JSR223 PostProcessor kuMbhalisi onomugqa we-groovy:
    prev.setDataEncoding("UTF-8")

Thumela umbhalo

Inketho yokuvilapha. Ifanele ukulungisa amaphutha ezivivinyweni ezisanda kubhalwa. Noma ezimweni lapho udinga ukuthumela okungenani into encane. Khetha inketho Umthombo womlayezo - Textarea bese ubeka umzimba womlayezo ebhulokhini lombhalo:

Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Ukudlulisa ifayela

Inketho evame kakhulu. Ifanele izimo eziningi. Khetha inketho Umthombo womlayezo - Kusuka kufayela bese ukhombisa indlela eya kumyalezo osesigangeni Ifayela - Igama lefayela:

Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Idlulisela ifayela endaweni yombhalo

Inketho eguquguqukayo kakhulu. Ifanele izimo eziningi + ingasetshenziswa ku-JMS Point-to-Point lapho ingekho inketho yesibili yokuthumela:

Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Idlula i-byte array

Inketho enzima kakhulu. Ifanele ukubheka ukudluliswa kwezicelo okunembe ngokungeyikho, ngaphandle kokuhlanekezela, i-SMS kanye nokuphazamiseka. Ngeke ukwazi ukwenza lokhu ku-JMeter ezenzakalelayo. lapha Nakanjani ngatshelwa ngalokhu.

Ngakho kwadingeka ngilande imithombo futhi uguqule ikhodi Obhalisile we-JMS.

Kufakwe esikhundleni endleleni extractContent(..) umugqa:

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

ku:

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

futhi yakha kabusha i-JMeter.

Okusele nje ukwengeza amasampula ambalwa e-JSR223. Esokuqala singaphambi kokuba Umshicileli/Obhalisile udale ifayela le-DAT eliqukethe amabhayithi angahleliwe:

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

Eyesibili, ekugcineni kweskripthi, isusa ifayela:

import java.io.File;

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

Futhi ungakhohlwa ukwengeza indlela eya kufayela Kumshicileli:

Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Futhi isheke kokuthi JSR223 Assertion for Subscriber - qhathanisa amabhayithi omthombo nalawo afika kulayini womamukeli:

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

isiphetho

Ngichaze izindlela ezine zokuthumela imilayezo kulayini, engizisebenzisa nsuku zonke ekusebenzeni. Ngethemba ukuthi lolu lwazi lwenza impilo yakho ibe lula. Ngokuqhubeka, ngihlela ukukhuluma ngolwazi lwami lokuhlola ukushintshana lapho kukhona ulayini ekugcineni kanye nesizindalwazi noma uhlelo lwefayela ngakolunye.

Yonga isikhathi sakho. Futhi ngiyabonga ngokunaka kwakho.

Imigqa kanye ne-JMeter: ukwabelana noMshicileli kanye Nobhalisile

Source: www.habr.com

Engeza amazwana