Queues ak JMeter: pataje ak Editè ak Abònen

Bonjou, Habr! Sa a se yon fen nan mwen an piblikasyon anvan, nan ki mwen pral pale sou opsyon pou mete mesaj nan keu lè l sèvi avèk JMeter.

Nou ap fè yon otobis done pou yon gwo konpayi federal. Divès fòma demann, transfòmasyon, routage konplike. Pou tès, ou bezwen voye anpil mesaj nan keu la. Manyèlman se yon doulè ke se pa tout kiropratisyen ka okipe.

Queues ak JMeter: pataje ak Editè ak Abònen

Entwodiksyon

Malgre ke mwen te oblije sipòte doulè sa a nan premye. Tout bagay te kòmanse ak RFHUtil. Pwisan, men gòch ak pè: Oke, ou konnen Ris.

Queues ak JMeter: pataje ak Editè ak Abònen

Endispansab nan kèk ka, men piti piti dekline nan ka ta gen itilizasyon aktif.
Tès pratik se enposib ak li.

Avèk JMeter tout bagay vin pi fasil. Apre premye etap la nan metrize ak abitye ak li, espwa te kòmanse dimanchye pou tès kè kontan.

Mwen aktivman itilize JMS Publisher ak echantiyon JMS Subscriber yo. Kontrèman ak JMS Point-to-Point, pè sa a te sanble pi pratik pou itilize. Pa egzanp, avèk Subscriber nan JMS Selector ou ka presize yon varyab, men ak Point-to-Point ou pa kapab (oswa metòd sa a pa trè evidan).

Prepare echantiyon yo

JMS Piblikatè

  • Enstalasyon - Chak echantiyon. Apache rekòmande itilize opsyon sa a si ke moun kap kriye/sijè yo espesifye atravè varyab.
  • Expiration (ms) = 120000. Nan ka echèk, demann tès yo pral disparèt nan keu la apre 2 minit.
  • Sèvi ak mòd livrezon ki pa pèsistan? - vre. IBM apwouvemòd ki pèsistan asire prezèvasyon serye nan mesaj transmèt nan evènman an nan yon echèk toudenkou. Ak pi vit echanj nan mòd ki pa pèsistan. Pou rezon tès, vitès la pi enpòtan.

Nan chak Piblikatè mwen mete yon pwopriyete jms ke Abònen a pral itilize nan Seleksyon JMS la. Pou chak soumèt, yo pwodwi yon valè o aza nan eleman plan tès Paramèt itilizatè a:

Queues ak JMeter: pataje ak Editè ak Abònen

Nan fason sa a ou ka asire w ke mesaj ki kòrèk la li.

"Vid" final la nan yon Editè JMS ki te deja konfigirasyon:

Queues ak JMeter: pataje ak Editè ak Abònen

JMS abònen

  • Enstalasyon - Chak echantiyon. Oke, ou konprann.
  • Timeout (ms) = 100000. Si demann lan pa rive nan keu a apre 100 segonn nan ap tann, Lè sa a, yon bagay ale mal.
  • Sispann ant echantiyon yo? - vre.

JMS Seleksyon - byen pratik bagay. Final JMS abònen:

Queues ak JMeter: pataje ak Editè ak Abònen

Ki jan fè fas ak alfabè a sirilik nan mesaj transmèt. Nan JMeter, pa default, apre koreksyon, li parèt kwochi. Pou evite sa a epi jwi gwo ak pwisan toujou ak tout kote, ou bezwen:

  1. Ajoute yon agiman JVM nan "lanseur" JMeter:
    -Dfile.encoding=UTF-8
  2. Ajoute JSR223 PostProcessor nan abònen ak liy groovy:
    prev.setDataEncoding("UTF-8")

Voye tèks

Opsyon ki pi parese. Apwopriye pou debogaj tès ki fèk ekri. Oswa pou ka lè ou bezwen voye omwen yon ti bagay. Chwazi opsyon Sous mesaj - Textarea epi mete kò mesaj la nan yon blòk tèks:

Queues ak JMeter: pataje ak Editè ak Abònen

File transfè

Opsyon ki pi komen. Apwopriye pou pifò senaryo. Chwazi opsyon Sous mesaj - Soti nan dosye epi endike chemen mesaj la nan jaden an File - Non fichye:

Queues ak JMeter: pataje ak Editè ak Abònen

Transfere yon dosye nan yon jaden tèks

Opsyon ki pi versatile. Apwopriye pou pifò senaryo + yo ka itilize nan JMS Point-to-Point kote pa gen okenn dezyèm opsyon voye:

Queues ak JMeter: pataje ak Editè ak Abònen

Pase yon etalaj byte

Opsyon ki pi difisil. Apwopriye pou tcheke transmisyon infaillibl egzat demann desann nan byte a, san yo pa distòsyon, SMS ak perturbation. Ou pa pral kapab fè sa nan JMeter default la. isit la Mwen te definitivman te di sou sa a.

Se konsa, mwen te oblije telechaje sous epi modifye kòd JMS abònen.

Ranplase nan metòd la extractContent(..) liy:

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

sou:

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

ak rebati JMeter.

Tout sa ki rete se ajoute yon koup JSR223 Samplers. Premye a se anvan pè Editè/Abònen pou kreye yon dosye DAT ki gen byte o aza:

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

Dezyèm lan - nan fen script la, efase fichye a:

import java.io.File;

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

Epi pa bliye ajoute chemen an nan dosye a nan Editè:

Queues ak JMeter: pataje ak Editè ak Abònen

Epi tou yon chèk nan JSR223 Assertion for Subscriber - konpare bytes sous yo ak sa ki rive nan keu moun k ap resevwa a:

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

Konklizyon

Mwen te dekri kat fason yo voye mesaj nan keu, ke mwen itilize chak jou nan pratik. Mwen espere enfòmasyon sa yo fè lavi ou pi fasil. An kontinyasyon, mwen planifye pou pale sou eksperyans mwen nan tès yon echanj kote gen yon keu nan yon bout ak yon baz done oswa sistèm dosye nan lòt la.

Sove tan ou. E mèsi pou atansyon ou.

Queues ak JMeter: pataje ak Editè ak Abònen

Sous: www.habr.com

Add nouvo kòmantè