Дараалал ба JMeter: нийтлэгч болон захиалагчтай хуваалцах

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

Бид холбооны томоохон компанид дата автобус хийж байна. Төрөл бүрийн хүсэлтийн формат, хувиргалт, нарийн төвөгтэй чиглүүлэлт. Туршилт хийхийн тулд та дараалалд маш олон мессеж илгээх хэрэгтэй. Гараар хийх нь бүх эмч нар үүнийг даван туулж чаддаггүй өвдөлт юм.

Дараалал ба JMeter: нийтлэгч болон захиалагчтай хуваалцах

Танилцуулга

Хэдийгээр би эхлээд энэ өвдөлтийг тэвчих хэрэгтэй болсон. Энэ бүхэн RFHUtil-ээс эхэлсэн. Хүчирхэг, гэхдээ эвгүй, аймшигтай: Та Оросыг мэднэ.

Дараалал ба JMeter: нийтлэгч болон захиалагчтай хуваалцах

Зарим тохиолдолд зайлшгүй шаардлагатай боловч идэвхтэй ашиглах үед тогтмол буурдаг.
Тохиромжтой туршилт хийх боломжгүй юм.

JMeter-ийн тусламжтайгаар бүх зүйл илүү хялбар болсон. Эхний үе шатыг эзэмшиж, дассаны дараа аз жаргалтай тест хийх найдвар төрж эхлэв.

Би JMS Publisher болон JMS Subscriber түүвэрлэгчийг идэвхтэй ашигладаг. JMS Point-to-Point-ээс ялгаатай нь энэ хосыг ашиглахад илүү тохиромжтой мэт санагдсан. Жишээлбэл, JMS Selector дахь Subscriber-ийн тусламжтайгаар та хувьсагчийг зааж өгч болох боловч Point-to-Point-д та чадахгүй (эсвэл энэ арга нь тийм ч тодорхой биш).

Дээж авагч бэлтгэх

JMS нийтлэгч

  • Тохиргоо - Дээж бүр. Апачи зөвлөж байна Хэрэв дараалал/сэдвийг хувьсагчаар зааж өгсөн бол энэ сонголтыг ашиглана уу.
  • Дуусах хугацаа (ms) = 120000. Амжилтгүй болсон тохиолдолд тестийн хүсэлтүүд 2 минутын дараа дарааллаас алга болно.
  • Тогтворгүй хүргэх горимыг ашиглах уу? - үнэн. IBM батлахЭнэ байнгын горим нь гэнэтийн алдаа гарсан тохиолдолд дамжуулагдсан мессежийг найдвартай хадгалах боломжийг олгодог. Мөн байнгын бус горимд илүү хурдан солилцоо. Туршилтын хувьд хурд нь илүү чухал юм.

Нийтлэгч бүрт би захиалагч JMS сонгогч дээр ашиглах jms шинж чанарыг тохируулсан. Илгээлт бүрийн хувьд Хэрэглэгчийн параметрийн туршилтын төлөвлөгөөний элементэд санамсаргүй утгыг үүсгэнэ:

Дараалал ба JMeter: нийтлэгч болон захиалагчтай хуваалцах

Ингэснээр та зөв мессежийг уншсан гэдэгт итгэлтэй байж болно.

Урьдчилан тохируулсан JMS Publisher-ийн эцсийн "хоосон":

Дараалал ба JMeter: нийтлэгч болон захиалагчтай хуваалцах

JMS захиалагч

  • Тохиргоо - Дээж бүр. За ойлголоо.
  • Хугацаа (ms) = 100000. Хэрэв хүсэлт 100 секунд хүлээсний дараа дараалалд ирэхгүй бол ямар нэг зүйл буруу болсон гэсэн үг.
  • Дээжийн хооронд зогсох уу? - үнэн.

JMS Сонгогч - маш тохиромжтой зүйл. Эцсийн JMS захиалагч:

Дараалал ба JMeter: нийтлэгч болон захиалагчтай хуваалцах

Дамжуулсан мессежийн кирилл үсгийг хэрхэн яаж зохицуулах вэ. JMeter дээр анхдагч байдлаар, зассаны дараа тахир харагдуулдаг. Үүнээс зайлсхийж, агуу, хүчирхэгийг үргэлж, хаа сайгүй эдлэхийн тулд та дараахь зүйлийг хийх хэрэгтэй.

  1. JMeter "эхлүүлэгч" дээр JVM аргумент нэмнэ үү:
    -Dfile.encoding=UTF-8
  2. JSR223 PostProcessor-ийг захиалагч руу сайхан шугамаар нэмнэ үү:
    prev.setDataEncoding("UTF-8")

Текст илгээх

Хамгийн залхуу сонголт. Шинээр бичсэн тестүүдийг дибаг хийхэд тохиромжтой. Эсвэл ядаж жижиг зүйл илгээх шаардлагатай тохиолдолд. Сонголтыг сонгоно уу Зурвасын эх сурвалж - Textarea мөн мессежийн хэсгийг текст блокт байрлуулна:

Дараалал ба JMeter: нийтлэгч болон захиалагчтай хуваалцах

Файл дамжуулах

Хамгийн түгээмэл сонголт. Ихэнх хувилбаруудад тохиромжтой. Сонголтыг сонгоно уу Зурвасын эх сурвалж - Файлаас мөн талбарт мессеж хүрэх замыг зааж өгнө Файл - Файлын нэр:

Дараалал ба JMeter: нийтлэгч болон захиалагчтай хуваалцах

Файлыг текст талбар руу шилжүүлж байна

Хамгийн уян хатан сонголт. Ихэнх хувилбарт тохиромжтой + нь хоёр дахь илгээх сонголт байхгүй тохиолдолд JMS Point-to-Point-д ашиглаж болно:

Дараалал ба JMeter: нийтлэгч болон захиалагчтай хуваалцах

Байтын массивыг дамжуулж байна

Хамгийн хэцүү сонголт. Хүсэлтүүдийг гуйвуулах, SMS, түгшүүргүйгээр байт хүртэл үнэн зөв дамжуулахыг шалгахад тохиромжтой. Та үүнийг анхдагч 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 for Subscriber-ийн шалгалт - хүлээн авагчийн дараалалд ирсэн эх байтыг харьцуулна уу:

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: нийтлэгч болон захиалагчтай хуваалцах

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх