Први кораци са Јметер 10 - Јава Рекуест

Getting Started With Jmeter 10 Java Request



Када је нека логика захтева сложенија, процену узорка која долази са Јметром је теже применити или ће перформансе бити ниже. Тренутно можете да напишете сопствени Јава код да бисте применили сопствени захтев.
На пример, Соцкет захтев, Хттп захтев, РоцкетМК захтев итд., Све док се Јава може применити, може се извршити у јметру.

Преглед садржаја



Јметер10 - Јава захтев



0к00 Припрема:



0к01 Направите класу Јава захтева

0к02 узорак кода:

0к03 тест код



Тегла паковања 0к04

0к05 употреба

0к06 Демо пројекат


0к00 Припрема:

Прво креирајте свој властити јава пројекат, увезите пакете повезане са Јметер-ом, увезите пакете повезане са захтевима, као што је хттп хттпхттп.

// Jmeter related classes Import org.apache.jmeter.config.Arguments // request parameters Import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient // request base class Import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext // request context, can be understood as the content passed by Jmeter Import org.apache.jmeter.samplers.SampleResult // request result


0к01 Направите класу Јава захтева

1. Затражите наслеђивање класе АбстрацтЈаваСамплерЦлиент
2. Створите потребне параметре за захтев, примењујући јавни метод Аргументс гетДефаултПараметерс ()
3. Напишите метод иницијализације захтева, само једном, имплементирајте јавну воид методу сетупТест (ЈаваСамплерЦонтект цонтект)
4. Напишите метод извршења петље захтева, извршите више пута, примените јавну методу СамплеРесулт рунТест (ЈаваСамплерЦонтект цонтект)
5. Напишите метод завршетка захтева за примену јавне воид теардовнТест (ЈаваСамплерЦонтект цонтект) методе

0к02 узорак кода:

Демонстрација хттп захтева.

package com.max.javarequest import com.max.javarequest.core.HttpClientUtil import org.apache.jmeter.config.Arguments import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext import org.apache.jmeter.samplers.SampleResult import java.util.ArrayList import java.util.List import org.apache.commons.lang3.StringUtils /** * http request sample * @author max.bai * @date 2019.02 */ public class SleepTapHttpRequest extends AbstractJavaSamplerClient { private String reqUrl private String deviceid private String mac private String userid private String payload = 'requestdata' private HttpClient httpClient private HttpPost httpPost public Arguments getDefaultParameters() { / / Set the parameters required by the request, will be displayed in the jmeter page Arguments params = new Arguments() params.addArgument('reqUrl', '') params.addArgument('deviceid', '') params.addArgument('mac', '') params.addArgument('userid', '') return params } public void setupTest(JavaSamplerContext context) { / / Initialize the request, get the request parameters reqUrl = context.getParameter('reqUrl') deviceid = context.getParameter('deviceid') mac = context.getParameter('mac') userid = context.getParameter('userid') httpClient = new DefaultHttpClient() httpPost = new HttpPost(reqUrl) httpPost.setHeader(HTTP.CONTENT_TYPE, 'application/x-www-form-urlencoded charset=utf-8') } // request execution public SampleResult runTest(JavaSamplerContext context) { // Create a sample. The sample content will see the contents after adding the observation tree. SampleResult results = new SampleResult() results.sampleStart() //Start timing try { //System.out.println(payload) results.setSamplerData(payload) / / set the request data String res = doPost(ppayload) // send http post request //System.out.println('>'+res+'<') results.setResponseData(res, 'utf-8') //Set the request response content results.setDataType(SampleResult.TEXT) if('true'.equals(res)){ results.setSuccessful(true) //Set the request result successfully }else{ results.setSuccessful(false) //Set the request result failed } } catch (Exception e) { //e.printStackTrace() results.setSuccessful(false) } results.sampleEnd() //Timed end The response to the request is the start and end of the decision. return results } public void teardownTest(JavaSamplerContext context) { super.teardownTest(context) } /** * send http post request * @param reqData requests data * @return response data */ private String doPost(String reqData){ String reseContent = '' try { httpPost.setEntity(new StringEntity(reqData == null ? '' : reqData, 'utf-8')) HttpResponse response = httpClient.execute(httpPost) HttpEntity entity = response.getEntity() if (null != entity) { reseContent = EntityUtils.toString(entity, ContentType.getOrDefault(entity).getCharset()) EntityUtils.consume(entity) } } catch (Exception e) { throw new IllegalStateException(e) } return reseContent } }


0к03 тест код

Тест код се може креирати у пројекту, извршити и тестирати, успешно упаковати и ставити у извршење Јметра.

package com.max.javarequest import org.apache.jmeter.config.Arguments import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext public class Test { public static void main(String[] args) { // test http // fill in the parameters Arguments params = new Arguments() params.addArgument('reqUrl', 'http://39.105.100.51:9191/ttt/bbbb') params.addArgument('deviceid', '1') params.addArgument('mac', '1CCCCCC00001') params.addArgument('userid', '1') // instantiate the request and execute the request JavaSamplerContext context = new JavaSamplerContext(params) SleepTapHttpRequest sttest = new SleepTapHttpRequest() sttest.setupTest(context) for(int i=0i<20i++){ sttest.runTest(context) } sttest.teardownTest(context) } }

Тегла паковања 0к04

Пројекат је упакован у јар пакет и смештен у либ / ект / директоријум Јметер-а. Сродне тегле попут РоцкетМК такође су овде смештене.

D: oolsapache-jmeter-4.0libext


0к05 употреба

У Јметер додајте -> самплер -> Јава захтев
Постоји класа Јава написана у имену класе. Након избора, параметри постављени у класи ће се појавити испод.
Попуните одговарајуће извршавање параметара. У стаблу за посматрање резултата можете да видите информације о слању захтева, информације о одговору и да ли је успешан.

0к06 Демо пројекат

Пројекат садржи ТЦП, Хттп, РоцкетМК захтеве.

хттпс://довнлоад.цсдн.нет/довнлоад/мак229мак/10983455