Schlaangen an JMeter: deelen mat Publisher an Abonnent

Moien, Habr! Dëst ass e Fortsetzung vu mengem virdrun Publikatioun, an deem ech iwwer Optioune schwätzen fir Messagen a Schlaangen ze setzen mat JMeter.

Mir maachen eng daten Bus fir eng grouss Féderalen Firma. Verschidde Ufroformater, Transformatiounen, komplizéiert Routing. Fir ze testen, musst Dir vill Messagen an d'Schlaang schécken. Manuell ass e Schmerz deen net all Chiropraktiker kann handhaben.

Schlaangen an JMeter: deelen mat Publisher an Abonnent

Aféierung

Obschonn ech fir d'éischt mat dëser Péng missen ophalen. Et huet alles ugefaang mat RFHUtil. Mächteg, awer schweier an grujeleg: Ma, Dir kennt Rus.

Schlaangen an JMeter: deelen mat Publisher an Abonnent

An e puer Fäll onverzichtbar, awer am Fall vun aktive Gebrauch stänneg erof.
Confortabel Testen ass onméiglech mat et.

Mat JMeter ass alles méi einfach ginn. No der éischter Etapp vum Meeschter a Gewunnecht, huet d'Hoffnung ugefaang fir glécklech ze testen.

Ech benotzen aktiv de JMS Publisher an JMS Abonnent Sampler. Am Géigesaz zu JMS Point-to-Point, schéngt dëst Pair méi bequem ze benotzen. Zum Beispill, mam Abonnent am JMS Selector kënnt Dir eng Variabel spezifizéieren, awer mat Point-to-Point kënnt Dir net (oder dës Method ass net ganz offensichtlech).

Preparéieren Sampler

JMS Verlag

  • Setup - All Sample. Apache recommandéiert benotzt dës Optioun wann Schlaangen / Themen iwwer Verännerlechen uginn.
  • Verfall (ms) = 120000. Am Fall vun Echec, Test Ufroe verschwannen aus der Schlaang no 2 Minutten.
  • Net-persistent Liwwerung Modus benotzen? - wouer. IBM approuvéiertdee persistente Modus garantéiert zouverlässeg Erhaalung vun iwwerdroenen Messagen am Fall vun engem plötzlechen Ausfall. A méi séier Austausch am net-persistent Modus. Fir Testzwecker ass d'Geschwindegkeet méi wichteg.

An all Publisher setzen ech eng jms Eegeschafte déi den Abonnent am JMS Selector benotzt. Fir all Soumissioun gëtt e zoufällege Wäert am Benotzerparameter Testplang Element generéiert:

Schlaangen an JMeter: deelen mat Publisher an Abonnent

Op dës Manéier kënnt Dir sécher sinn datt de richtege Message gelies gëtt.

Déi lescht "Leer" vun engem pre-konfiguréierten JMS Publisher:

Schlaangen an JMeter: deelen mat Publisher an Abonnent

JMS Abonnent

  • Setup - All Sample. Gutt, Dir verstitt.
  • Timeout (ms) = 100000. Wann d'Ufro no 100 Sekonnen waarden net an der Schlaang kënnt, dann ass eppes falsch gaang.
  • Stop tëscht Echantillon? - wouer.

JMS Selector - ganz bequem Saach. Finale JMS Abonnent:

Schlaangen an JMeter: deelen mat Publisher an Abonnent

Wéi mat dem kyrillesche Alphabet an iwwerdroe Messagen ëmzegoen. Am JMeter, par défaut, no Korrekturliesen, gëtt et kromm ugewisen. Fir dëst ze vermeiden an déi grouss a mächteg ëmmer an iwwerall ze genéissen, musst Dir:

  1. Füügt e JVM Argument un de JMeter "Launcher":
    -Dfile.encoding=UTF-8
  2. Füügt JSR223 PostProcessor zum Abonnent mat groovy Linn:
    prev.setDataEncoding("UTF-8")

Schécken Text

Déi faulst Optioun. Gëeegent fir Debugging frësch schrëftlech Tester. Oder fir Fäll wou Dir op d'mannst eppes Klenges muss schécken. Wielt Optioun Message Quell - Textarea a setzt de Kierper vun der Noriicht an engem Textblock:

Schlaangen an JMeter: deelen mat Publisher an Abonnent

Datei Transfert

Déi allgemeng Optioun. Gëeegent fir déi meescht Szenarie. Wielt Optioun Message Quell - Vun Fichier an uginn de Wee fir de Message am Feld Datei - Dateinumm:

Schlaangen an JMeter: deelen mat Publisher an Abonnent

Transfert vun enger Datei an en Textfeld

Déi villsäitegst Optioun. Gëeegent fir déi meescht Szenarie + kann an JMS Point-to-Point benotzt ginn wou et keng zweet Sendoptioun gëtt:

Schlaangen an JMeter: deelen mat Publisher an Abonnent

Passéiert e Byte-Array

Déi schwéierst Optioun. Gëeegent fir d'infallibly korrekt Iwwerdroung vun Ufroen bis op de Byte ze kontrolléieren, ouni Verzerrung, SMS a Perturbatioun. Dir kënnt dat net am Standard JMeter maachen. hei Ech war definitiv iwwer dëst gesot.

Also ech hu missen eroflueden Quellen an änneren code JMS Abonnent.

Ersat an der Method extractContent(..) Linn:

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

un:

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

an opgebaut JMeter.

Alles wat bleift ass e puer JSR223 Sampler ze addéieren. Déi éischt ass virum Publisher / Abonnent Pair fir eng DAT Datei ze kreéieren déi zoufälleg Bytes enthält:

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

Déi zweet - um Enn vum Skript läscht d'Datei:

import java.io.File;

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

An vergiesst net de Wee an d'Datei am Publisher ze addéieren:

Schlaangen an JMeter: deelen mat Publisher an Abonnent

An och e Scheck an JSR223 Behaaptung fir Abonnent - vergläicht d'Quellbytes mat deenen, déi an der Schlaang vum Empfänger ukommen:

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

Konklusioun

Ech beschriwwen véier Weeër fir Messagen an Schlaangen ze schécken, déi ech all Dag an der Praxis benotzen. Ech hoffen dës Informatioun mécht Äert Liewen méi einfach. An der Fortsetzung plangen ech iwwer meng Erfahrung ze schwätzen fir en Austausch ze testen, wou et eng Schlaang op engem Enn ass an eng Datebank oder Dateiesystem um aneren.

Spuert Är Zäit. A merci fir Är Opmierksamkeet.

Schlaangen an JMeter: deelen mat Publisher an Abonnent

Source: will.com

Setzt e Commentaire