Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

Halo, Habr! Ieu sekuel ka abdi publikasi saméméhna, di mana kuring bakal ngobrol ngeunaan pilihan pikeun nempatkeun pesen dina antrian nganggo JMeter.

Kami ngadamel beus data pikeun perusahaan féderal ageung. Rupa-rupa format pamundut, transformasi, routing intricate. Pikeun nguji, anjeun kedah ngirim seueur pesen ka antrian. Sacara manual mangrupikeun nyeri anu henteu tiasa dicekel ku unggal chiropractor.

Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

perkenalan

Sanajan kuring kungsi nahan nyeri ieu mimitina. Éta sadayana dimimitian ku RFHUtil. Kuat, tapi kagok jeung pikasieuneun: Nya, anjeun terang Rus.

Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

Indispensable dina sababaraha kasus, tapi steadily nyirorot dina kasus pamakéan aktip.
Tés anu gampang teu mungkin sareng éta.

Kalawan JMeter sagalana geus jadi gampang. Sanggeus tahap kahiji ngawasaan jeung ngabiasakeun, harepan mimiti subuh pikeun nguji senang.

Kuring aktip ngagunakeun JMS Penerbit jeung JMS Subscriber samplers. Teu kawas JMS Point-to-Point, pasangan ieu sigana leuwih merenah ngagunakeun. Contona, kalawan Subscriber di JMS Selector anjeun bisa nangtukeun variabel, tapi kalawan Point-to-Point anjeun teu bisa (atawa metoda ieu teu pisan atra).

Nyiapkeun samplers

Penerbit JMS

  • Setup - Unggal Sampel. Apache nyarankeun ngagunakeun pilihan ieu lamun antrian / jejer dieusian ngaliwatan variabel.
  • béakna (ms) = 120000. Bisi gagal, requests test bakal ngaleungit tina antrian sanggeus 2 menit.
  • Paké mode pangiriman non-persistent? - leres. IBM satujuyén mode pengkuh ensures pelestarian dipercaya tina pesen dikirimkeun dina acara gagal ngadadak. Jeung bursa gancang dina modeu non-pengkuh. Pikeun tujuan nguji, speed leuwih penting.

Dina unggal Penerbit kuring nyetél sipat jms anu bakal dianggo Palanggan dina Pamilih JMS. Pikeun unggal kiriman, nilai acak dihasilkeun dina elemen rencana uji Parameter pamaké:

Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

Ku cara ieu anjeun tiasa mastikeun yén pesen anu leres dibaca.

"Kosong" ahir tina Penerbit JMS anu tos dikonpigurasikeun:

Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

Palanggan JMS

  • Setup - Unggal Sampel. Muhun, anjeun ngartos.
  • Timeout (ms) = 100000. Upami pamundut teu sumping dina antrian saatos 100 detik ngantosan, teras aya anu salah.
  • Eureun diantara sampel? - leres.

JMS Selector - rada merenah hal. Palanggan JMS Akhir:

Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

Kumaha cara nungkulan hurup Sirilik dina pesen anu dikirimkeun. Dina JMeter, sacara standar, saatos proofreading, ditampilkeun bengkok. Pikeun ngahindarkeun ieu sareng nikmati anu hébat sareng kuat salawasna sareng dimana waé, anjeun kedah:

  1. Tambahkeun argumen JVM kana "peluncur" JMeter:
    -Dfile.encoding=UTF-8
  2. Tambahkeun JSR223 PostProcessor ka Subscriber kalawan garis groovy:
    prev.setDataEncoding("UTF-8")

Kirim téks

Pilihan anu paling puguh. Cocog jeung debugging tés anyar ditulis. Atanapi pikeun kasus nalika anjeun kedah ngirim sahenteuna hal anu alit. Pilih pilihan Sumber pesen - Textarea sareng nempatkeun awak pesen dina blok téks:

Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

Mindahkeun file

Pilihan anu paling umum. Cocog jeung paling skenario. Pilih pilihan Sumber pesen - Tina file jeung nunjukkeun jalur ka talatah di sawah Berkas - Ngaran koropak:

Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

Mindahkeun file ka widang téks

Pilihan anu paling serbaguna. Cocog jeung sabagéan ageung skenario + tiasa dianggo dina JMS Point-to-Point dimana teu aya pilihan ngirim kadua:

Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

Ngaliwatan Asép Sunandar Sunarya bait

Pilihan anu paling hese. Cocog jeung mariksa pangiriman infallibly akurat tina requests handap ka bait, tanpa distorsi, SMS na perturbation. Anjeun moal tiasa ngalakukeun ieu dina JMeter standar. di dieu Kuring ieu pasti ngawartoskeun ngeunaan ieu.

Janten kuring kedah ngaunduh sumber jeung ngaropéa di Palanggan JMS.

Diganti dina métode extractContent(..) garis:

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

dina:

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

sarta diwangun deui JMeter.

Sadaya anu tetep nyaéta nambihan sababaraha Sampler JSR223. Anu kahiji nyaéta sateuacan pasangan Penerbit/Palanggan pikeun nyiptakeun file DAT anu ngandung bait acak:

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

Anu kadua, dina tungtung naskah, ngahapus file:

import java.io.File;

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

Sareng tong hilap nambihan jalur kana file dina Penerbit:

Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

Sareng ogé cek di JSR223 Assertion for Subscriber - ngabandingkeun bait sumber sareng anu sumping dina antrian panarima:

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

kacindekan

Kuring ngajelaskeun opat cara pikeun ngirim pesen ka antrian, anu kuring dianggo unggal dinten dina prakték. Kuring miharep informasi ieu ngajadikeun hirup anjeun leuwih gampang. Dina tuluyan, abdi rencanana ngobrol ngeunaan pangalaman abdi nguji bursa dimana aya antrian di hiji tungtung sarta database atawa sistem file di sisi séjén.

Ngahemat waktos Anjeun. Sareng hatur nuhun kana perhatian anjeun.

Antrian sareng JMeter: ngabagi sareng Penerbit sareng Palanggan

sumber: www.habr.com

Tambahkeun komentar