Queues è JMeter: Scambià cù l'editore è l'abbonatu

Ciao, Habr! Questa hè una sequenza di a meia pubblicazione precedente, In quale parleraghju di l'opzioni per mette i missaghji in fila cù JMeter.

Facemu un bus di dati per una grande cumpagnia federale. Diversi furmati di dumanda, trasfurmazioni, routing intricatu. Per pruvà, avete bisognu di mandà assai messagi à a fila. A manu hè un dulore chì micca ogni chiropraviu pò trattà.

Queues è JMeter: Scambià cù l'editore è l'abbonatu

Introduzione

Ancu s'è aghju avutu à suppurtà stu dulore in prima. Tuttu hà cuminciatu cù RFHUtil. Putenti, ma goffa è spaventosa: Ebbè, sapete Rus.

Queues è JMeter: Scambià cù l'editore è l'abbonatu

Indispensabile in certi casi, ma sempre in diminuzione in casu di usu attivu.
A prova còmuda hè impussibile cun ella.

Cù JMeter tuttu hè diventatu più faciule. Dopu à a prima tappa di maestru è abituatu, a speranza hà cuminciatu à spuntà per una prova felice.

Aghju utilizatu attivamente i samplers JMS Publisher è JMS Subscriber. A cuntrariu di JMS Point-to-Point, sta coppia pareva più còmuda d'utilizà. Per esempiu, cù Subscriber in JMS Selector pudete specificà una variabile, ma cù Point-to-Point ùn pudete micca (o stu metudu ùn hè micca assai ovvi).

Preparazione di campioni

JMS Editore

  • Setup - Ogni Sample. Apache ricumanda aduprate sta opzione se fila / temi sò specificati via variàbili.
  • Scadenza (ms) = 120000. In casu di fallimentu, e dumande di teste spariranu da a fila dopu à 2 minuti.
  • Aduprà u modu di consegna non persistente? - veru. IBM appruvaquellu modu persistente assicura a preservazione affidabile di i missaghji trasmessi in casu di un fallimentu bruscu. È u scambiu più veloce in modu micca persistente. Per scopi di teste, a velocità hè più impurtante.

In ogni Publisher aghju stabilitu una pruprietà jms chì l'Abbonatu aduprà in u JMS Selector. Per ogni sottumissione, un valore aleatoriu hè generatu in l'elementu di u pianu di prova di Parametri d'Usuariu:

Queues è JMeter: Scambià cù l'editore è l'abbonatu

Questu modu pudete esse sicuru chì u missaghju currettu hè lettu.

U "blank" finali di un editore JMS pre-configuratu:

Queues è JMeter: Scambià cù l'editore è l'abbonatu

Abbonatu JMS

  • Setup - Ogni Sample. Ebbè, avete capitu.
  • Timeout (ms) = 100000. Se a dumanda ùn ghjunghje micca in a fila dopu à 100 seconde d'aspittà, allora qualcosa hè andatu.
  • Ferma trà i campioni? - veru.

JMS Selector - abbastanza convenientu cosa. Abbonatu JMS Finale:

Queues è JMeter: Scambià cù l'editore è l'abbonatu

Cumu trattà cù l'alfabetu cirillicu in i missaghji trasmessi. In JMeter, di manera predeterminata, dopu a correzione di prova, hè visualizata in forma storta. Per evitari questu è gode di u grande è putente sempre è in ogni locu, avete bisognu di:

  1. Aghjunghjite un argumentu JVM à u "launcher" JMeter:
    -Dfile.encoding=UTF-8
  2. Aghjunghjite PostProcessor JSR223 à l'Abbonatu cù a linea groovy:
    prev.setDataEncoding("UTF-8")

Mandate u testu

L'opzione più pigra. Adatta per debugging testi appena scritti. O per i casi quandu avete bisognu di mandà almenu qualcosa chjuca. Scegli l'opzione Fonte di u messagiu - Textarea è mette u corpu di u messagiu in un bloccu di testu:

Queues è JMeter: Scambià cù l'editore è l'abbonatu

Trasferendu un schedariu

L'opzione più cumuna. Adatta per a maiò parte di i scenarii. Scegli l'opzione Fonte di u messagiu - Da u schedariu è indicà a strada di u messagiu in u campu File - Filename:

Queues è JMeter: Scambià cù l'editore è l'abbonatu

Trasferendu un schedariu à un campu di testu

L'opzione più versatile. Adatta per a maiò parte di i scenari + pò esse usatu in JMS Point-to-Point induve ùn ci hè una seconda opzione di mandatu:

Queues è JMeter: Scambià cù l'editore è l'abbonatu

Passà un array di byte

L'opzione più difficiule. Adatta per verificà a trasmissione infalliblemente precisa di e dumande finu à u byte, senza distorsioni, SMS è perturbazioni. Ùn puderà micca fà questu in u JMeter predeterminatu. ccà Hè statu definitu di questu.

Allora aghju avutu à scaricà fonti è mudificà codice Abbonatu JMS.

Sustituitu in u metudu extractContent(..) linea:

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

nantu à:

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

è ricustruitu JMeter.

Tuttu ciò chì resta hè di aghjunghje un coppiu di Samplers JSR223. U primu hè davanti à u paru Editore / Abbonatu per creà un schedariu DAT chì cuntene bytes aleatorii:

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

U sicondu - à a fine di u script, sguassate u schedariu:

import java.io.File;

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

È ùn vi scurdate di aghjunghje a strada à u schedariu in Publisher:

Queues è JMeter: Scambià cù l'editore è l'abbonatu

È ancu un cuntrollu in JSR223 Assertion for Subscriber - paragunate i bytes di fonte cù quelli chì arrivanu in a fila di u destinatariu:

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

cunchiusioni

Aghju descrittu quattru manere di mandà missaghji à fila, chì aghju utilizatu ogni ghjornu in pratica. Spergu chì sta infurmazione rende a vostra vita più faciule. In seguitu, aghju pensatu à parlà di a mo sperienza di pruvà un scambiu induve ci hè una fila à una estremità è una basa di dati o un sistema di schedari à l'altru.

Risparmiate u vostru tempu. È grazie per a vostra attenzione.

Queues è JMeter: Scambià cù l'editore è l'abbonatu

Source: www.habr.com

Add a comment