Редови и ЈМетер: дељење са издавачем и претплатником

Здраво, Хабр! Ово је мој наставак претходна публикација, у којем ћу говорити о опцијама за постављање порука у редове помоћу ЈМетер-а.

Правимо магистралу података за велику савезну компанију. Различити формати захтева, трансформације, замршено рутирање. За тестирање, потребно је да пошаљете много порука у ред чекања. Ручно је бол са којом не може сваки киропрактичар да се носи.

Редови и ЈМетер: дељење са издавачем и претплатником

Увод

Иако сам у почетку морао да трпим овај бол. Све је почело са РФХУтил-ом. Моћно, али незгодно и застрашујуће: Па, знаш Руса.

Редови и ЈМетер: дељење са издавачем и претплатником

Неопходан у неким случајевима, али у сталном опадању у случају активне употребе.
Погодно тестирање је немогуће са њим.

Са ЈМетер-ом све је постало лакше. Након прве фазе савладавања и навикавања, почела је да сијева нада у срећно тестирање.

Активно користим узорке ЈМС Публисхер и ЈМС Субсцрибер. За разлику од ЈМС Поинт-то-Поинт, овај пар се чинио погоднијим за употребу. На пример, са Субсцрибер-ом у ЈМС Селецтор-у можете навести променљиву, али са Поинт-то-Поинт не можете (или овај метод није баш очигледан).

Припрема узорака

ЈМС Публисхер

  • Подешавање – сваки узорак. Апацхе препоручује користите ову опцију ако су редови/теме специфицирани преко променљивих.
  • Истек (мс) = 120000. У случају неуспеха, захтеви за тестирање ће нестати из реда након 2 минута.
  • Желите ли да користите нетрајни начин испоруке? - истина. ИБМ одобраватај трајни режим обезбеђује поуздано очување пренетих порука у случају изненадног квара. И бржа размена у нетрајном режиму. За потребе тестирања, брзина је важнија.

У сваком издавачу постављам јмс својство које ће претплатник користити у ЈМС селектору. За сваку подношење, насумична вредност се генерише у елементу плана тестирања корисничких параметара:

Редови и ЈМетер: дељење са издавачем и претплатником

На овај начин можете бити сигурни да је тачна порука прочитана.

Коначно „празно“ унапред конфигурисаног ЈМС Публисхер-а:

Редови и ЈМетер: дељење са издавачем и претплатником

ЈМС Субсцрибер

  • Подешавање – сваки узорак. Па, разумеш.
  • Временско ограничење (мс) = 100000. Ако захтев не стигне у ред након 100 секунди чекања, онда је нешто пошло наопако.
  • Заустављање између узорака? - истина.

ЈМС Селецтор - прилично згодно ствар. Коначни ЈМС претплатник:

Редови и ЈМетер: дељење са издавачем и претплатником

Како поступати са ћириличним писмом у преношеним порукама. У ЈМетер-у се подразумевано, после коректуре, приказује криво. Да бисте то избегли и уживали у великом и моћном увек и свуда, потребно је:

  1. Додајте ЈВМ аргумент у ЈМетер „покретач“:
    -Dfile.encoding=UTF-8
  2. Додајте ЈСР223 постпроцесор претплатнику са гроови линијом:
    prev.setDataEncoding("UTF-8")

Пошаљи текст

Најлења опција. Погодно за отклањање грешака у свеже написаним тестовима. Или за случајеве када треба да пошаљете бар нешто мало. Изаберите опцију Извор поруке - Тектареа и ставите тело поруке у блок текста:

Редови и ЈМетер: дељење са издавачем и претплатником

Пренос датотеке

Најчешћа опција. Погодно за већину сценарија. Изаберите опцију Извор поруке - Из датотеке и назначите путању до поруке у пољу Датотека – Име датотеке:

Редови и ЈМетер: дељење са издавачем и претплатником

Пребацивање датотеке у текстуално поље

Најсвестранија опција. Погодно за већину сценарија + може се користити у ЈМС Поинт-то-Поинт где не постоји друга опција слања:

Редови и ЈМетер: дељење са издавачем и претплатником

Преношење низа бајтова

Најтежа опција. Погодно за проверу непогрешиво тачног преноса захтева до бајта, без изобличења, СМС-а и пертурбација. Нећете моћи то да урадите у подразумеваном ЈМетер-у. овде Дефинитивно ми је речено за ово.

Тако да сам морао да преузмем извори и модификовати код ЈМС Субсцрибер.

Замењен у методи 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);
}

и поново изградио ЈМетер.

Остаје само да додате неколико ЈСР223 узорковача. Први је пре него што пар издавач/претплатник креира ДАТ датотеку која садржи насумичне бајтове:

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

И не заборавите да додате путању до датотеке у Публисхер-у:

Редови и ЈМетер: дељење са издавачем и претплатником

И такође провера у ЈСР223 тврдњи за претплатника - упоредите изворне бајтове са онима који стигну у ред примаоца:

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

Закључак

Описао сам четири начина слања порука у редове, које свакодневно користим у пракси. Надам се да ће вам ове информације олакшати живот. У наставку, планирам да говорим о свом искуству тестирања размене где постоји ред на једном крају и база података или систем датотека на другом.

Уштедите своје време. И хвала на пажњи.

Редови и ЈМетер: дељење са издавачем и претплатником

Извор: ввв.хабр.цом

Додај коментар