偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JMeter進(jìn)階—詳解Java sampler的設(shè)計(jì)方法(附源碼)

開發(fā) 后端
jmeter通過Java請(qǐng)求可以實(shí)現(xiàn)該需求(這樣就可以處理一些公司自定義的協(xié)議了,開發(fā)提供協(xié)議接口,然后我們通過java sampler進(jìn)行調(diào)用)。

[[431970]]

JMeter Java Sampler介紹

我們通常使用jmeter做http或者h(yuǎn)ttps請(qǐng)求的測(cè)試,但是有些場景我們需要直接調(diào)用Java接口進(jìn)行性能測(cè)試, jmeter通過Java請(qǐng)求可以實(shí)現(xiàn)該需求(這樣就可以處理一些公司自定義的協(xié)議了,開發(fā)提供協(xié)議接口,然后我們通過java sampler進(jìn)行調(diào)用)。本文將會(huì)詳細(xì)介紹jmeter中如何編寫 java請(qǐng)求并對(duì)其進(jìn)行調(diào)用!

添加Java請(qǐng)求

JMeter進(jìn)階——詳解Java sampler的設(shè)計(jì)方法(附源碼)

Java請(qǐng)求如下:

JMeter進(jìn)階——詳解Java sampler的設(shè)計(jì)方法(附源碼)

其中上圖里com.my.demo.JmeterDemo2,即我們需要調(diào)用的Java類;str是我們需要傳入的參數(shù)。那么Jmeter中如何實(shí)現(xiàn)對(duì)java請(qǐng)求的調(diào)用呢?我會(huì)在本文詳細(xì)講解!

設(shè)計(jì)Java請(qǐng)求思路與代碼解析

如何編寫jmeter java請(qǐng)求,簡單地說分如下幾點(diǎn):

1寫一個(gè)類,叫做Demo,使其繼承AbstractJavaSamplerClient;

2.在public SampleResult runTest(JavaSamplerContext arg0)方法里,寫處理java代碼的邏輯;

3.在public Arguments getDefaultParameters()方法里定義從jmeter中傳入java代碼的參數(shù);

4.把類Demo 打成jar包并放入jmeter的\lib\ext 目錄下(如果Demo需要依賴其它jar包需要一起放入\lib\ext目錄下)

實(shí)例代碼如下:

  1. import org.apache.commons.lang3.StringUtils; 
  2. import org.apache.jmeter.config.Arguments; 
  3. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; 
  4. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; 
  5. import org.apache.jmeter.samplers.SampleResult; 
  6. public class JmeterDemo2 extends AbstractJavaSamplerClient 
  7. private SampleResult sr; 
  8. public Arguments getDefaultParameters() { 
  9. Argumentsparams = new Arguments(); 
  10. params.addArgument("str"""); 
  11. return params; 
  12. public SampleResult runTest(JavaSamplerContext arg0) { 
  13. this.sr.setSampleLabel("commonsio-demo2"); 
  14. try { 
  15. Stringstr=arg0.getParameter("para"); 
  16. //使用jar包中StringUtils類的countMatches方法來統(tǒng)計(jì)字符串a(chǎn)的個(gè)數(shù) 
  17. int num=StringUtils.countMatches(str, "a"); 
  18. if (num==0) { 
  19. this.sr.setResponseMessage("ResponseMessage:參數(shù)匹配0個(gè)"); //Sample Result 中的Response message 
  20. this.sr.setResponseData("ResponseData:參數(shù)匹配0個(gè)","UTF-8"); //Response Data的值,會(huì)被后面的覆蓋 
  21. this.sr.setSuccessful(true);//Sample Result 中的結(jié)果 
  22. }else { 
  23. this.sr.setResponseMessage("ResponseMessage:參數(shù)匹配"+num+"個(gè)"); 
  24. this.sr.setResponseData("ResponseData:參數(shù)匹配"+num+"個(gè)","UTF-8"); 
  25. this.sr.setSuccessful(false); 
  26. }catch (Exception e) { 
  27. this.sr.setResponseMessage(e.getMessage().toString()); 
  28. this.sr.setSuccessful(false); 
  29. }finally { 
  30. //this.sr.setResponseData("結(jié)束測(cè)試""UTF-8"); 
  31. super.getNewLogger().info("####測(cè)試執(zhí)行####"); 
  32. try { 
  33. Thread.sleep(500); 
  34. }catch (InterruptedException e) { 
  35. // TODO Auto-generated catch block 
  36. e.printStackTrace(); 
  37. return this.sr; 
  38. public void setupTest(JavaSamplerContext context) { 
  39. super.setupTest(context); 
  40. super.getNewLogger().info("####測(cè)試開始####"); 
  41. this.sr = new SampleResult(); 
  42. this.sr.sampleStart(); 
  43. public void teardownTest(JavaSamplerContext context) { 
  44. super.teardownTest(context); 
  45. this.sr.sampleEnd(); 
  46. super.getNewLogger().info("####測(cè)試結(jié)束####"); 

這里對(duì)上述代碼做詳細(xì)分析:

主要用到的方法如下:

JMeter進(jìn)階——詳解Java sampler的設(shè)計(jì)方法(附源碼)

方法執(zhí)行的先后順序?yàn)椋?/p>

getDefaultParameters() -->

setupTest(JavaSamplerContext context)-->

runTest(JavaSamplerContext context) -->

teardownTest(JavaSamplerContext context)

代碼運(yùn)行后,打開日志結(jié)果如下,參數(shù)para 對(duì)應(yīng)代碼String str=arg0.getParameter("para");

JMeter進(jìn)階——詳解Java sampler的設(shè)計(jì)方法(附源碼)

從日志中可以看到

setupTest(JavaSamplerContext context) 中的代碼被執(zhí)行1次,打印

####測(cè)試開始####

teardownTest(JavaSamplerContext context) 中的代碼被執(zhí)行1次,打印

####測(cè)試結(jié)束####

而runTest中的方法super.getNewLogger().info("####測(cè)試執(zhí)行####"); 被執(zhí)行5次,因?yàn)樵诰€程組中,設(shè)置執(zhí)行5次。(線程組線程執(zhí)行的次數(shù),影響java請(qǐng)求中的runTest,而不會(huì)影響setupTest和teardownTest)。方法super.getNewLogger().info("")會(huì)把值寫入日志。

setResponseMessage("ResponseMessage:參數(shù)匹配0個(gè)");打印到Sample Result 中的Response message里;setSampleLabel("commonsio-demo2");設(shè)置java請(qǐng)求的顯示名稱,如下圖:

JMeter進(jìn)階——詳解Java sampler的設(shè)計(jì)方法(附源碼)

setResponseData("ResponseData:參數(shù)匹配0個(gè)","UTF-8"); 打印到Response Data,如下圖:

JMeter進(jìn)階——詳解Java sampler的設(shè)計(jì)方法(附源碼)

最后,方法setSuccessful(true)會(huì)影響測(cè)試結(jié)果

在IDE中開發(fā)Jmeter Java 請(qǐng)求

在IDE中開發(fā)Jmeter Java 請(qǐng)求與普通java開發(fā)一致,引入需要的java包以及jmeter相關(guān)jar包即可,引入Jmeter lib\ext下的ApacheJMeter_core.jar和ApacheJMeter_java.jar到IDE中!

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-05-04 10:56:23

JmeterJava

2021-02-05 11:27:09

微服務(wù)源碼加載配置

2021-09-12 07:30:10

配置

2021-09-13 15:17:52

FastThreadL源碼Java

2021-09-02 07:00:01

Glide流程Android

2021-09-07 06:40:25

AndroidLiveData原理

2021-08-10 20:41:33

AndroidApp流程

2021-09-01 06:48:16

AndroidGlide緩存

2021-08-17 13:41:11

AndroidView事件

2009-07-30 13:42:28

ASP.NET報(bào)表問題ASP.NET

2009-12-22 17:08:18

Linux系統(tǒng)源碼包安

2018-05-13 16:00:22

主播APP視頻

2020-04-02 20:26:22

線程組插件開發(fā)

2021-09-03 07:27:38

AndroidGlide管理

2021-05-17 09:50:06

Kubebuilde源碼CURD

2009-06-17 13:58:00

JMeter測(cè)試EJB

2009-11-30 16:38:30

Android

2021-08-05 20:39:34

AndroidKotlinStandard.kt

2011-07-20 11:09:58

蘋果 OpenCL 變量

2023-01-12 08:50:46

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)