Bună, Habr! Aceasta este o continuare a mea publicația anterioară, în care voi vorbi despre opțiunile pentru plasarea mesajelor în cozi folosind JMeter.
Facem o magistrală de date pentru o mare companie federală. Diverse formate de solicitare, transformări, rutare complicată. Pentru testare, trebuie să trimiteți o mulțime de mesaje la coadă. Manual este o durere pe care nu orice chiropractician o poate suporta.
Introducere
Deși a trebuit să suport această durere la început. Totul a început cu RFHUtil. Puternic, dar stingher și înfricoșător: Ei bine, îl cunoști pe Rus.
Indispensabil în unele cazuri, dar în scădere constantă în cazul utilizării active.
Testarea convenabilă este imposibilă cu el.
Cu JMeter totul a devenit mai ușor. După prima etapă de stăpânire și obișnuire cu ea, a început să răsară speranța pentru o testare fericită.
Folosesc în mod activ probele JMS Publisher și JMS Subscriber. Spre deosebire de JMS Point-to-Point, această pereche părea mai convenabilă de utilizat. De exemplu, cu Subscriber în JMS Selector poți specifica o variabilă, dar cu Point-to-Point nu poți (sau această metodă nu este foarte evidentă).
Pregătirea probelor
JMS Publisher
Configurare - Fiecare Probă. Apache recomandă utilizați această opțiune dacă cozile/subiectele sunt specificate prin variabile.
Expirare (ms) = 120000. În caz de eșec, cererile de testare vor dispărea din coadă după 2 minute.
Folosiți modul de livrare nepersistent? - Adevărat. IBM revendicăriacel mod persistent asigură păstrarea fiabilă a mesajelor transmise în cazul unei eșecuri bruște. Și schimb mai rapid în modul non-persistent. În scopuri de testare, viteza este mai importantă.
În fiecare Publisher am setat o proprietate jms pe care Abonatul o va folosi în JMS Selector. Pentru fiecare trimitere, este generată o valoare aleatorie în elementul de plan de testare Parametri utilizator:
În acest fel, puteți fi sigur că este citit mesajul corect.
Ultimul „blank” al unui editor JMS preconfigurat:
Abonat JMS
Configurare - Fiecare Probă. Ei bine, înțelegi.
Timeout (ms) = 100000. Dacă cererea nu ajunge în coadă după 100 de secunde de așteptare, atunci ceva a mers prost.
Opriți între mostre? - Adevărat.
JMS Selector - destul de convenabil lucru. Abonat final JMS:
Cum să tratați alfabetul chirilic în mesajele transmise. În JMeter, implicit, după corectare, este afișat strâmb. Pentru a evita acest lucru și a te bucura de marele și puternicul mereu și pretutindeni, trebuie să:
Adăugați un argument JVM la „lansatorul” JMeter:
-Dfile.encoding=UTF-8
Adăugați postprocesor JSR223 la abonat cu o linie groovy:
prev.setDataEncoding("UTF-8")
Trimite text
Cea mai leneșă opțiune. Potrivit pentru depanarea testelor proaspăt scrise. Sau pentru cazurile în care trebuie să trimiteți măcar ceva mic. Selectați opțiunea Sursa mesajului - Textarea și plasați corpul mesajului într-un bloc de text:
Transfer de fișiere
Cea mai comună opțiune. Potrivit pentru majoritatea scenariilor. Selectați opțiunea Sursa mesajului - Din fișier și indicați calea către mesaj în câmp Fișier - Nume fișier:
Transferarea unui fișier într-un câmp de text
Cea mai versatilă opțiune. Potrivit pentru majoritatea scenariilor + poate fi folosit în JMS Point-to-Point unde nu există o a doua opțiune de trimitere:
Trecerea unei matrice de octeți
Cea mai dificilă variantă. Potrivit pentru verificarea transmiterii infailibil de precise a cererilor până la octet, fără distorsiuni, SMS și perturbări. Nu veți putea face acest lucru în JMeter implicit. aici Cu siguranță mi s-a spus despre asta.
Așa că a trebuit să descarc surse si modifica cod Abonat JMS.
Înlocuit în metodă extractContent(..) linia:
buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");
Tot ce rămâne este să adăugați câteva probe JSR223. Primul este înainte de perechea Editor/Abonat pentru a crea un fișier DAT care conține octeți aleatori:
Am descris patru moduri de a trimite mesaje la cozi, pe care le folosesc zilnic în practică. Sper că aceste informații vă vor face viața mai ușoară. În continuare, intenționez să vorbesc despre experiența mea de a testa un schimb unde există o coadă la un capăt și o bază de date sau un sistem de fișiere la celălalt.