Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

Эй Хабр! Бул менин уландысы мурунку жарыялоо, анда мен JMeter аркылуу билдирүүлөрдү кезекке коюунун варианттары жөнүндө сүйлөшөм.

Биз чоң федералдык компания үчүн маалымат автобусун куруп жатабыз. Ар кандай суроо форматтары, трансформациялар, татаал маршрутизация. Сыноо үчүн сиз кезекте турган көп билдирүүлөрдү жөнөтүшүңүз керек. Кол менен - ​​ар бир хиропрактика көтөрө албаган оору.

Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

тааныштыруу

Бул ооруга адегенде чыдаш керек да. Мунун баары RFHUtil менен башталды. Күчтүү, бирок ыңгайсыз жана коркунучтуу: Русаны билесиз.

Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

Кээ бир учурларда алмаштырылгыс, бирок активдүү колдонууда туруктуу төмөндөйт.
Аны менен ыңгайлуу сыноо мүмкүн эмес.

JMeter менен баары оңой болуп калды. Өздөштүрүү жана көнүү менен биринчи этаптан кийин бактылуу сынактан үмүт пайда болду.

Мен JMS Publisher жана JMS Subscriber үлгүлөрүн жигердүү колдоном. JMS Point-to-Point айырмаланып, бул жубайлар менен иштөө ыңгайлуураак көрүндү. Мисалы, сиз JMS Selectorдогу Subscriber'да өзгөрмө көрсөтсөңүз болот, бирок Point-to-Point'те эмес (же бул ыкма өтө ачык эмес).

Үлгүлөрдү даярдоо

JMS Publisher

  • Орнотуу - Ар бир үлгү. Apache сунуштайт кезектер/темалар өзгөрмөлөр аркылуу аныкталса, бул параметрди колдонуңуз.
  • Мөөнөтү (мс) = 120000. Иштен чыкпаса, тесттик суроо-талаптар 2 мүнөттөн кийин кезектен жок болот.
  • Туруктуу жеткирүү режими колдонулсунбу? — чын. IBM дооматтарбул туруктуу режим күтүлбөгөн жерден ката болгон учурда өткөрүлүп берилген билдирүүлөрдүн коопсуз сакталышын камсыздайт. Жана туруктуу эмес режимде тез алмашуу. Сыноо максатында ылдамдык маанилүү.

Ар бир Жарыялоочуда, мен Абонент JMS селекторунда колдоно турган jms касиетин койдум. Ар бир тапшыруу үчүн Колдонуучунун параметрлеринин тест планынын элементинде кокустук маани түзүлөт:

Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

Ушундай жол менен сиз туура билдирүү окулуп жаткандыгына ишене аласыз.

Алдын ала конфигурацияланган JMS Publisherдин акыркы "боштугу":

Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

JMS абоненти

  • Орнотуу - Ар бир үлгү. Мейли, түшүнөсүң.
  • Тайм-аут (мс) = 100000. Эгерде суроо-талап 100 секунд күткөндөн кийин кезекке келбесе, анда бир жерден ката кетти.
  • Үлгүнүн ортосунда токтоп туруңузбу? — чын.

JMS Selector - абдан ыңгайлуу буюм. Акыркы JMS абоненти:

Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

Берилген билдирүүлөрдөгү кириллица менен кантип иштөө керек. JMeterде, демейки боюнча, кемиткенден кийин, ал кыйшык көрүнөт. Мунун алдын алуу жана улуу жана күчтүү ар дайым жана бардык жерде ырахат алуу үчүн, сизге керек:

  1. JMeter "ишке киргизгичке" JVM аргументин кошуңуз:
    -Dfile.encoding=UTF-8
  2. Жазуучуга JSR223 PostProcessor кошуңуз:
    prev.setDataEncoding("UTF-8")

Текст өткөрүү

Эң жалкоо вариант. Жаңы жазылган тесттерди оңдоо үчүн ылайыктуу. Же, жок эле дегенде, кичинекей бир нерсе жөнөтүү керек болгон учурларда. Опцияны тандаңыз Билдирүү булагы - Textarea жана билдирүүнүн негизги бөлүгүн тексттик блокко жайгаштырыңыз:

Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

File Transfer

Эң көп вариант. Көпчүлүк сценарийлер үчүн ылайыктуу. Опцияны тандаңыз Билдирүү булагы - Файлдан жана талаада билдирүүгө жолду көрсөтүңүз Файлдын аты:

Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

Файлды текст кутучасына өткөрүү

Эң универсалдуу вариант. Көпчүлүк сценарийлерге ылайыктуу + экинчи жөнөтүү опциясы жок JMS Point-to-Pointте колдонулушу мүмкүн:

Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

Байт массивинен өтүү

Эң кыйын вариант. Бир байтка чейинки суроо-талаптарды бурмалоосуз, смссиз жана ызы-чуусуз жеткирүүнү текшерүү үчүн ылайыктуу. Сиз муну демейки JMeterде кыла албайсыз, бул жерде Муну мага ачык айтышкан.

Ошентип, мен жүктөп алууга туура келди булактар жана өзгөртүү коду JMS абоненти.

ыкмасы менен алмаштырылган extractContent(..) сап:

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

боюнча:

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 кайра курулду.

Бир нече JSR223 үлгүлөрүн кошуу керек. Биринчиси, кокус байттарды камтыган DAT файлын түзүү үчүн Жарыялоочу/Абонент жупунун алдында:

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

Экинчиси, скрипттин аягында, файлды жок кылат:

import java.io.File;

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

Жана Publisherдеги файлга жолду кошууну унутпаңыз:

Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

Ошондой эле Абонент үчүн JSR223 Assertion текшерүү - баштапкы байттарды алуучунун кезегине келгендер менен салыштырыңыз:

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

жыйынтыктоо

Кезекке билдирүүлөрдү жөнөтүүнүн төрт жолу сүрөттөлдү, мен аны күн сайын иш жүзүндө колдоном. Бул маалымат сиздин жашооңузду жеңилдетет деп ишенем. Улантууда, мен бир четинде кезек, экинчи жагынан маалымат базасы же файл системасы турган алмашууну сынап көрүү боюнча өз тажрыйбам жөнүндө сүйлөшкүм келет.

Убактыңарга кам көр. Жана көңүлүңүз үчүн рахмат.

Кезектер жана JMeter: Жарыялоочу жана жазылуучу менен алмашуу

Source: www.habr.com

Комментарий кошуу