Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

Helo, Habr! Mae hwn yn ddilyniant i fy un i cyhoeddiad blaenorol, lle byddaf yn siarad am opsiynau ar gyfer gosod negeseuon mewn ciwiau gan ddefnyddio JMeter.

Rydym yn gwneud bws data ar gyfer cwmni ffederal mawr. Fformatau cais amrywiol, trawsnewidiadau, llwybro cymhleth. Ar gyfer profi, mae angen i chi anfon llawer o negeseuon i'r ciw. Mae llaw yn boen na all pob ceiropractydd ei drin.

Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

Cyflwyniad

Er bod yn rhaid i mi ddioddef y boen hon ar y dechrau. Dechreuodd y cyfan gyda RFHUtil. Pwerus, ond lletchwith a brawychus: Wel, ti'n nabod Rus.

Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

Anhepgor mewn rhai achosion, ond yn gostwng yn raddol rhag ofn y bydd defnydd gweithredol.
Mae profi cyfleus yn amhosibl ag ef.

Gyda JMeter mae popeth wedi dod yn haws. Ar Γ΄l y cam cyntaf o feistroli a dod i arfer ag ef, dechreuodd gobaith gwawrio ar gyfer profi hapus.

Rwy'n defnyddio samplwyr JMS Publisher a JMS Subscriber. Yn wahanol i JMS Point-to-Point, roedd y pΓ’r hwn yn ymddangos yn fwy cyfleus i'w ddefnyddio. Er enghraifft, gyda Tanysgrifiwr yn JMS Selector gallwch nodi newidyn, ond gyda Point-to-Point ni allwch (neu nid yw'r dull hwn yn amlwg iawn).

Paratoi sampleri

Cyhoeddwr JMS

  • Gosod - Pob Sampl. Apache yn argymell defnyddiwch yr opsiwn hwn os pennir ciwiau/pynciau trwy newidynnau.
  • Dod i ben (ms) = 120000. Mewn achos o fethiant, bydd ceisiadau prawf yn diflannu o'r ciw ar Γ΄l 2 funud.
  • Defnyddio modd dosbarthu nad yw'n gyson? - gwir. IBM yn cymeradwyobod modd parhaus yn sicrhau cadwraeth ddibynadwy o negeseuon a drosglwyddir os bydd methiant sydyn. A chyfnewid cyflymach yn y modd nad yw'n barhaus. At ddibenion profi, mae cyflymder yn bwysicach.

Ym mhob Cyhoeddwr gosodaf briodwedd jms y bydd y Tanysgrifiwr yn ei ddefnyddio yn y Dewisydd JMS. Ar gyfer pob cyflwyniad, cynhyrchir gwerth ar hap yn yr elfen cynllun prawf Paramedrau Defnyddiwr:

Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

Fel hyn gallwch fod yn sicr bod y neges gywir yn cael ei darllen.

Y β€œgwag” olaf o Gyhoeddwr JMS wedi'i ffurfweddu ymlaen llaw:

Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

Tanysgrifiwr JMS

  • Gosod - Pob Sampl. Wel, rydych chi'n deall.
  • Goramser (ms) = 100000. Os nad yw'r cais yn cyrraedd y ciw ar Γ΄l 100 eiliad o aros, yna aeth rhywbeth o'i le.
  • Stopio rhwng samplau? - gwir.

Dewisydd JMS - eithaf cyfleus peth. Tanysgrifiwr JMS terfynol:

Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

Sut i ddelio Γ’'r wyddor Syrilig mewn negeseuon a drosglwyddir. Yn JMeter, yn ddiofyn, ar Γ΄l prawfddarllen, mae'n cael ei arddangos yn gam. Er mwyn osgoi hyn a mwynhau'r gwych a'r pwerus bob amser ac ym mhobman, mae angen i chi:

  1. Ychwanegu dadl JVM at β€œlansiwr” JMeter:
    -Dfile.encoding=UTF-8
  2. Ychwanegu JSR223 PostProcessor at Danysgrifiwr gyda llinell groovy:
    prev.setDataEncoding("UTF-8")

Anfon testun

Yr opsiwn mwyaf diog. Addas ar gyfer dadfygio profion newydd eu hysgrifennu. Neu ar gyfer achosion pan fydd angen i chi anfon o leiaf rhywbeth bach. Dewiswch opsiwn Ffynhonnell y neges - Textarea a gosodwch gorff y neges mewn bloc testun:

Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

Trosglwyddo ffeiliau

Yr opsiwn mwyaf cyffredin. Yn addas ar gyfer y rhan fwyaf o senarios. Dewiswch opsiwn Ffynhonnell y neges - O ffeil a dangos y llwybr i'r neges yn y maes Ffeil - Enw ffeil:

Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

Trosglwyddo ffeil i faes testun

Yr opsiwn mwyaf amlbwrpas. Yn addas ar gyfer y rhan fwyaf o senarios + gellir ei ddefnyddio yn JMS Point-to-Point lle nad oes ail opsiwn anfon:

Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

Pasio arae beit

Yr opsiwn mwyaf anodd. Yn addas ar gyfer gwirio trosglwyddiad anffaeledig ceisiadau i lawr i'r beit, heb afluniad, SMS ac aflonyddwch. Ni fyddwch yn gallu gwneud hyn yn y JMeter rhagosodedig. yma Cefais wybod yn bendant am hyn.

Felly roedd yn rhaid i mi lawrlwytho ffynonellau ac addasu ΠΊΠΎΠ΄ Tanysgrifiwr JMS.

Wedi'i ddisodli yn y dull extractContent(..) llinell:

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

ar:

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

ac a ailadeiladodd JMeter.

Y cyfan sydd ar Γ΄l yw ychwanegu cwpl o Samplwyr JSR223. Mae'r cyntaf cyn y pΓ’r Cyhoeddwr/Tanysgrifiwr i greu ffeil DAT sy'n cynnwys beit ar hap:

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

Mae'r ail - ar ddiwedd y sgript, yn dileu'r ffeil:

import java.io.File;

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

A pheidiwch ag anghofio ychwanegu'r llwybr at y ffeil yn Publisher:

Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

A hefyd siec yn JSR223 Haeriad ar gyfer Tanysgrifiwr - cymharwch y beit ffynhonnell Γ’'r rhai sy'n cyrraedd ciw y derbynnydd:

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

Casgliad

Disgrifiais bedair ffordd o anfon negeseuon i giwiau, yr wyf yn eu defnyddio bob dydd yn ymarferol. Rwy'n gobeithio y bydd y wybodaeth hon yn gwneud eich bywyd yn haws. I barhau, rwy'n bwriadu siarad am fy mhrofiad o brofi cyfnewidfa lle mae ciw ar un pen a chronfa ddata neu system ffeiliau ar y pen arall.

Arbedwch eich amser. A diolch am eich sylw.

Ciwiau a JMeter: rhannu gyda'r Cyhoeddwr a'r Tanysgrifiwr

Ffynhonnell: hab.com

Ychwanegu sylw