Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

Silav Habr! Ev sekna min e weşana berê, ku tê de ez ê li ser vebijarkên ji bo danîna peyaman di rêzan de bi karanîna JMeter biaxivim.

Em ji bo pargîdaniyek mezin a federal otobusek daneyê çêdikin. Formên daxwaznameyên cihêreng, veguherîn, rêveçûna tevlihev. Ji bo ceribandinê, hûn hewce ne ku gelek peyaman bişînin rêzê. Bi destan êşek e ku ne her chiropractor dikare hilgire.

Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

Pîrozbahiyê

Digel ku di destpêkê de neçar bûm ku ez vê êşê ragirim. Hemî bi RFHUtil dest pê kir. Hêzdar, lê aciz û tirsnak: Belê, hûn Rus nas dikin.

Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

Di hin rewşan de neçar e, lê di rewşa karanîna çalak de bi domdarî kêm dibe.
Testkirina hêsan bi wê re ne gengaz e.

Bi JMeter re her tişt hêsantir bûye. Piştî qonaxa yekem a serwerbûn û karanîna wê, hêviyê ji bo ceribandina bextewar dest pê kir.

Ez bi aktîvî nimûneyên JMS Publisher û JMS Subscriber bikar tînim. Berevajî JMS Point-to-Point, ev cot ji bo karanîna hêsantir xuya bû. Mînakî, bi Subscriber di JMS Selector de hûn dikarin guhêrbarek diyar bikin, lê bi Point-to-Point hûn nikarin (an jî ev rêbaz ne pir eşkere ye).

Amadekirina nimûneyan

JMS Publisher

  • Sazkirin - Her Nimûne. Apache pêşniyar dike Heke rêzên/mijar bi rêya guhêrbaran hatine diyarkirin vê vebijarkê bikar bînin.
  • Bidawîbûn (ms) = 120000. Di rewşeke têkçûyî de, daxwazên testê dê piştî 2 hûrdeman ji rêzê winda bibin.
  • Moda radestkirina ne-domdar bikar bînin? - rast. IBM pesend dikeew moda domdar di bûyera têkçûnek ji nişka ve parastina pêbawer a peyamên hatine şandin misoger dike. Û di moda ne-domdar de danûstendina zûtir. Ji bo armancên ceribandinê, lez girîngtir e.

Di her Weşangerekê de min taybetmendiyek jms ku Abonî dê di Hilbijartina JMS-ê de bikar bîne datîne. Ji bo her radestkirinê, di hêmana plana testa Parametreyên Bikarhêner de nirxek rasthatî tê çêkirin:

Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

Bi vî awayî hûn dikarin piştrast bin ku peyama rast tê xwendin.

"Bal"a dawî ya Weşangerek JMS-ya pêş-sazkirî:

Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

JMS Subscriber

  • Sazkirin - Her Nimûne. Erê, hûn fêm dikin.
  • Demjimêr (ms) = 100000. Ger daxwaz piştî 100 saniyeyên li bendê negihêje rêzê, wê hingê tiştek xelet derket.
  • Di navbera nimûneyan de raweste? - rast.

JMS Hilbijêr - pir hêsan e tişt. Aboneyê JMS-a dawî:

Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

Meriv çawa bi alfabeya kîrîlî di peyamên hatine şandin de mijûl dibe. Di JMeter de, ji hêla xwerû ve, piştî rastnivîsandinê, ew bi xeletî tê xuyang kirin. Ji bo ku hûn ji vê yekê dûr nekevin û her dem û li her deverê ji mezin û hêzdar sûd werbigirin, hûn hewce ne:

  1. Argumentek JVM li "destpêkera" JMeter zêde bikin:
    -Dfile.encoding=UTF-8
  2. JSR223 PostProcessor li Aboneyê bi xeta groovy zêde bikin:
    prev.setDataEncoding("UTF-8")

Nivîsar bişînin

Vebijarka herî lazî. Minasib ji bo verastkirina ceribandinên nû yên nivîskî. An jî ji bo rewşên ku hûn hewce ne ku bi kêmanî tiştek piçûk bişînin. Vebijêrk hilbijêre Çavkaniya peyamê - Textarea û bedena peyamê di bloka nivîsê de bi cih bikin:

Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

Veguheztina pelek

Vebijêrka herî gelemperî. Minasib ji bo piraniya senaryoyan. Vebijêrk hilbijêre Çavkaniya peyamê - Ji pelê û li qadê riya peyamê nîşan bide Wêne - Navê pelê:

Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

Veguheztina pelê li qada nivîsê

Vebijarka herî pirreng. Ji bo piraniya senaryoyan maqûl e + dikare di JMS Point-to-Point de ku vebijarka şandina duyemîn tune ye were bikar anîn:

Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

Derbaskirina array byte

Vebijarka herî dijwar. Ji bo kontrolkirina veguheztina bêkêmasî ya rast a daxwazan berbi baytê, bêyî tehlîlkirin, SMS û tevliheviyê maqûl e. Hûn ê nikaribin vê yekê di JMetera xwerû de bikin. vir Bê guman li ser vê yekê ji min re hat gotin.

Ji ber vê yekê ez neçar bûm dakêşim çavkaniyên û biguherînin koda JMS Subscriber.

Di rêbazê de veguherîn extractContent(..) xet:

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

li ser:

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

û JMeter ji nû ve ava kir.

Tiştê ku dimîne ev e ku meriv çend JSR223 Samplers lê zêde bike. Ya yekem beriya cotê Weşanger/Aboner e ku pelek DAT-ê ku tê de baytên bêserûber pêk tê biafirîne:

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

Ya duyemîn - di dawiya skrîptê de, pelê jê dike:

import java.io.File;

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

Û ji bîr nekin ku rê li pelê li Publisher zêde bikin:

Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

Û di heman demê de kontrolek JSR223 Daxuyaniya ji bo Subscriber - baytên çavkaniyê bi yên ku digihîjin rêza wergir berhev bikin:

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

encamê

Min çar awayên şandina peyaman ji rêzan re diyar kir, ku ez her roj di pratîkê de bikar tînim. Ez hêvî dikim ku ev agahdarî jiyana we hêsantir dike. Di berdewamiyê de, ez plan dikim ku li ser ezmûna xwe ya ceribandina danûstendinek biaxivim ku li deverek rêzek û li milê din databasek an pergala pelan heye.

Wextê xwe biparêzin. Û spas ji bo baldariya we.

Rêz û JMeter: bi Weşanger û Aboneyê re parvekirin

Source: www.habr.com

Add a comment