Հերթեր և JMeter. համօգտագործում Հրատարակչի և Բաժանորդի հետ

Բարև, Հաբր: Սա իմ շարունակությունն է նախորդ հրապարակումը, որում ես կխոսեմ JMeter-ի միջոցով հաղորդագրությունները հերթերում տեղադրելու տարբերակների մասին:

Մենք տվյալների ավտոբուս ենք պատրաստում խոշոր դաշնային ընկերության համար: Տարբեր հարցումների ձևաչափեր, փոխակերպումներ, բարդ երթուղիներ: Թեստավորման համար անհրաժեշտ է հերթ ուղարկել բազմաթիվ հաղորդագրություններ։ Ձեռքով ցավ է, որը ոչ բոլոր chiropractor կարող է կարգավորել:

Հերթեր և JMeter. համօգտագործում Հրատարակչի և Բաժանորդի հետ

Ներածություն

Չնայած սկզբում ստիպված էի համակերպվել այս ցավի հետ։ Ամեն ինչ սկսվեց RFHUtil-ից: Հզոր, բայց անհարմար և սարսափելի. Դե, դուք գիտեք Ռուսը:

Հերթեր և JMeter. համօգտագործում Հրատարակչի և Բաժանորդի հետ

Որոշ դեպքերում անփոխարինելի է, բայց ակտիվ օգտագործման դեպքում անշեղորեն նվազում է:
Դրա հետ հարմար փորձարկումն անհնար է։

JMeter-ի հետ ամեն ինչ ավելի հեշտ է դարձել: Տիրապետման ու դրան ընտելանալու առաջին փուլից հետո հույսը սկսվեց ուրախ փորձության համար։

Ես ակտիվորեն օգտագործում եմ JMS Publisher և JMS Subscriber նմուշառիչները: Ի տարբերություն JMS Point-to-Point-ի, այս զույգն ավելի հարմար էր թվում օգտագործման համար: Օրինակ, Subscriber-ի հետ JMS Selector-ում դուք կարող եք նշել փոփոխական, իսկ «Կետ առ կետ» չեք կարող (կամ այս մեթոդն այնքան էլ ակնհայտ չէ):

Նմուշառիչների պատրաստում

JMS հրատարակիչ

  • Կարգավորում - Յուրաքանչյուր նմուշ: Ապաչի խորհուրդ է տալիս օգտագործել այս տարբերակը, եթե հերթերը/թեմաները նշված են փոփոխականների միջոցով:
  • Ժամկետը (ms) = 120000: Անհաջողության դեպքում փորձարկման հարցումները կվերանան հերթից 2 րոպե հետո:
  • Օգտագործե՞լ ոչ մշտական ​​առաքման ռեժիմը: - ճիշտ. IBM հաստատում էայդ մշտական ​​ռեժիմն ապահովում է փոխանցված հաղորդագրությունների հուսալի պահպանումը հանկարծակի ձախողման դեպքում: Եվ ավելի արագ փոխանակում ոչ համառ ռեժիմում: Փորձարկման նպատակով արագությունն ավելի կարևոր է:

Յուրաքանչյուր Հրատարակիչում ես սահմանում եմ jms հատկություն, որը Բաժանորդը կօգտագործի JMS ընտրիչում: Յուրաքանչյուր ներկայացման համար պատահական արժեք է ստեղծվում Օգտվողի պարամետրերի փորձարկման պլանի տարրում.

Հերթեր և JMeter. համօգտագործում Հրատարակչի և Բաժանորդի հետ

Այս կերպ դուք կարող եք վստահ լինել, որ ճիշտ հաղորդագրությունը կարդացվել է:

Նախապես կազմաձևված JMS հրատարակչի վերջնական «դատարկը».

Հերթեր և JMeter. համօգտագործում Հրատարակչի և Բաժանորդի հետ

JMS բաժանորդ

  • Կարգավորում - Յուրաքանչյուր նմուշ: Դե, հասկանում ես։
  • Ժամկետը (ms) = 100000: Եթե հարցումը հերթ չի գալիս 100 վայրկյան սպասելուց հետո, ապա ինչ-որ բան սխալ է տեղի ունեցել:
  • Կանգնե՞լ նմուշների միջև: - ճիշտ.

JMS ընտրիչ - բավականին հարմար բան. Վերջնական JMS բաժանորդ.

Հերթեր և JMeter. համօգտագործում Հրատարակչի և Բաժանորդի հետ

Ինչպես վարվել կիրիլյան այբուբենի հետ փոխանցված հաղորդագրություններում: JMeter-ում լռելյայն, սրբագրելուց հետո ցուցադրվում է ծուռ։ Սրանից խուսափելու և մեծն ու հզորը միշտ և ամենուր վայելելու համար անհրաժեշտ է.

  1. Ավելացնել JVM փաստարկ JMeter «գործարկիչին».
    -Dfile.encoding=UTF-8
  2. Ավելացնել JSR223 PostProcessor-ը groovy գծով բաժանորդին.
    prev.setDataEncoding("UTF-8")

Ուղարկել տեքստ

Ամենածույլ տարբերակը. Հարմար է թարմ գրված թեստերի վրիպազերծման համար: Կամ այն ​​դեպքերի համար, երբ պետք է գոնե մի փոքր բան ուղարկել։ Ընտրեք տարբերակը Հաղորդագրության աղբյուրը՝ Textarea և տեղադրեք հաղորդագրության հիմնական մասը տեքստային բլոկում.

Հերթեր և JMeter. համօգտագործում Հրատարակչի և Բաժանորդի հետ

Ֆայլի փոխանցում

Ամենատարածված տարբերակը. Հարմար է շատ սցենարների համար: Ընտրեք տարբերակը Հաղորդագրության աղբյուր - ֆայլից և դաշտում նշեք հաղորդագրության ուղին Ֆայլ - Ֆայլի անուն:

Հերթեր և JMeter. համօգտագործում Հրատարակչի և Բաժանորդի հետ

Ֆայլի փոխանցում տեքստային դաշտ

Առավել բազմակողմանի տարբերակը. Հարմար է շատ սցենարների համար + կարող է օգտագործվել JMS կետ առ կետ, որտեղ երկրորդ ուղարկելու տարբերակ չկա.

Հերթեր և 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 Samplers: Առաջինը՝ Հրատարակիչ/Բաժանորդ զույգից առաջ՝ պատահական բայթեր պարունակող 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. համօգտագործում Հրատարակչի և Բաժանորդի հետ

Source: www.habr.com

Добавить комментарий