Rindas un JMeter: kopīgošana ar izdevēju un abonentu

Sveiks, Habr! Šis ir turpinājums manējam iepriekšējā publikācija, kurā es runāšu par iespējām ievietot ziņojumus rindās, izmantojot JMeter.

Mēs veidojam datu kopni lielam federālam uzņēmumam. Dažādi pieprasījumu formāti, transformācijas, sarežģīta maršrutēšana. Lai veiktu testēšanu, uz rindu ir jānosūta daudz ziņojumu. Manuāli ir sāpes, ar kurām ne katrs manuālais terapeits var tikt galā.

Rindas un JMeter: kopīgošana ar izdevēju un abonentu

Ievads

Lai gan sākumā man bija jāsamierinās ar šīm sāpēm. Viss sākās ar RFHUtil. Spēcīgs, bet neērts un biedējošs: Nu, jūs zināt Rus.

Rindas un JMeter: kopīgošana ar izdevēju un abonentu

Dažos gadījumos neaizstājams, bet aktīvas lietošanas gadījumā tas pastāvīgi samazinās.
Ērta pārbaude ar to nav iespējama.

Ar JMeter viss ir kļuvis vienkāršāks. Pēc pirmā apgūšanas un pierašanas posma sāka parādīties cerība uz laimīgu pārbaudi.

Es aktīvi izmantoju JMS Publisher un JMS Subscriber paraugus. Atšķirībā no JMS Point-to-Point, šis pāris šķita ērtāk lietojams. Piemēram, ar Subscriber JMS Selector var norādīt mainīgo, bet ar punktu-punktu jūs nevarat (vai arī šī metode nav īpaši acīmredzama).

Paraugu ņemšanas sagatavošana

JMS izdevējs

  • Iestatīšana — katrs paraugs. Apache iesaka izmantojiet šo opciju, ja rindas/tēmas ir norādītas, izmantojot mainīgos.
  • Derīguma termiņš (ms) = 120000. Neveiksmes gadījumā testa pieprasījumi pazudīs no rindas pēc 2 minūtēm.
  • Vai izmantot nepastāvīgu piegādes režīmu? - taisnība. IBM pretenzijaska pastāvīgais režīms nodrošina drošu pārsūtīto ziņojumu saglabāšanu pēkšņas atteices gadījumā. Un ātrāka apmaiņa nepastāvīgā režīmā. Pārbaudes nolūkos ātrums ir svarīgāks.

Katrā izdevējā es iestatu jms rekvizītu, ko abonents izmantos JMS atlasītājā. Katram iesniegumam lietotāja parametru testa plāna elementā tiek ģenerēta nejauša vērtība:

Rindas un JMeter: kopīgošana ar izdevēju un abonentu

Tādā veidā jūs varat būt pārliecināti, ka ir izlasīts pareizais ziņojums.

Iepriekš konfigurēta JMS izdevēja pēdējais “tukšais”:

Rindas un JMeter: kopīgošana ar izdevēju un abonentu

JMS abonents

  • Iestatīšana — katrs paraugs. Nu tu saproti.
  • Taimauts (ms) = 100000 100. Ja pieprasījums neienāk rindā pēc XNUMX sekunžu gaidīšanas, tad radās kļūda.
  • Apstāties starp paraugiem? - taisnība.

JMS Selector - diezgan ērti lieta. Galīgais JMS abonents:

Rindas un JMeter: kopīgošana ar izdevēju un abonentu

Kā rīkoties ar kirilicas alfabētu pārsūtītajos ziņojumos. Programmā JMeter pēc noklusējuma pēc korektūras tas tiek parādīts greizi. Lai no tā izvairītos un vienmēr un visur izbaudītu lielo un vareno, jums ir nepieciešams:

  1. Pievienojiet JVM argumentu JMeter “palaidējam”:
    -Dfile.encoding=UTF-8
  2. Pievienojiet JSR223 PostProcessor abonentam ar rievotu līniju:
    prev.setDataEncoding("UTF-8")

Sūtīt tekstu

Slinkākais variants. Piemērots tikko uzrakstīto testu atkļūdošanai. Vai arī gadījumiem, kad jānosūta kaut kas mazs. Izvēlieties opciju Ziņojuma avots — Textarea un ievietojiet ziņojuma pamattekstu teksta blokā:

Rindas un JMeter: kopīgošana ar izdevēju un abonentu

Failu pārsūtīšana

Visizplatītākā iespēja. Piemērots lielākajai daļai scenāriju. Izvēlieties opciju Ziņojuma avots — no faila un laukā norādiet ceļu uz ziņojumu Fails — faila nosaukums:

Rindas un JMeter: kopīgošana ar izdevēju un abonentu

Faila pārsūtīšana uz teksta lauku

Vispusīgākā iespēja. Piemērots lielākajai daļai scenāriju + var izmantot JMS no punkta uz punktu, kur nav otrās sūtīšanas iespējas:

Rindas un JMeter: kopīgošana ar izdevēju un abonentu

Nododot baitu masīvu

Sarežģītākais variants. Piemērots, lai pārbaudītu nekļūdīgi precīzu pieprasījumu pārsūtīšanu līdz baitam, bez traucējumiem, SMS un traucējumiem. Jūs to nevarēsit izdarīt noklusējuma JMeter. šeit Man noteikti par to stāstīja.

Tāpēc man bija jālejupielādē avoti un modificēt kods JMS abonents.

Aizstāts metodē extractContent(..) rinda:

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

par:

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

un pārbūvēja JMeter.

Atliek tikai pievienot pāris JSR223 paraugus. Pirmais ir pirms izdevēja/abonenta pāra, lai izveidotu DAT failu, kurā ir nejauši baiti:

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

Otrais - skripta beigās izdzēš failu:

import java.io.File;

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

Neaizmirstiet pievienot ceļu uz failu Publisher:

Rindas un JMeter: kopīgošana ar izdevēju un abonentu

Un arī pārbaudiet JSR223 apstiprinājumu abonentam - salīdziniet avota baitus ar tiem, kas nonāk adresāta rindā:

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

Secinājums

Es aprakstīju četrus veidus, kā nosūtīt ziņojumus uz rindām, kurus ikdienā izmantoju praksē. Es ceru, ka šī informācija atvieglos jūsu dzīvi. Turpinājumā plānoju pastāstīt par savu pieredzi, pārbaudot biržu, kur vienā galā ir rinda, bet otrā – datubāze vai failu sistēma.

Ietaupiet savu laiku. Un paldies par uzmanību.

Rindas un JMeter: kopīgošana ar izdevēju un abonentu

Avots: www.habr.com

Pievieno komentāru