日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java jmeter_使用Jmeter中的Java Request进行性能测试

發布時間:2024/7/23 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java jmeter_使用Jmeter中的Java Request进行性能测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在使用jmeter進行性能測試的時候,有可能會需要通過一些腳本去測試性能,(比如通過sokeeper的api去測試sokeeper的讀寫性能)。這時,我們可以通過Java?Request實現,以下是操作步驟。

首先創建一個maven?project。

因Jmeter的Java?Request腳本依賴Jmeter的一些核心jar包,所以我們要maven項目的pom文件中添加Jmeter的一些依賴包:ApacheJMeter_core、ApacheJMeter_java:

編寫Java?Sample,繼承AbstractJavaSample,并重寫以下方法:

public?Arguments?getDefaultParameters();可選,定義可用參數及默認值;

·??public?void?setupTest(JavaSamplerContext?arg0):可選,測試前執行,做一些初始化工作;

·??public?SampleResult?runTest(JavaSamplerContext?arg0);必選,實現自定義請求;

·??public?void?teardownTest(JavaSamplerContext?arg0):可選,測試結束時調用;

示例代碼:

import?org.apache.curator.RetryPolicy;

import?org.apache.curator.framework.CuratorFramework;

import?org.apache.curator.framework.CuratorFrameworkFactory;

import?org.apache.curator.retry.ExponentialBackoffRetry;

import?org.apache.curator.utils.EnsurePath;

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;

public?class?CuratorRequestSample?extends?AbstractJavaSamplerClient?{

protected?CuratorFramework?client?=?null;

protected?long?subCount?=?1l;

protected?long?TOTAL_SUB_COUNT?=?100000l;

/**

*?定義可用參數及默認值

*/

public?Arguments?getDefaultParameters()?{

Arguments?params?=?new?Arguments();

params.addArgument("connect_str",?"192.168.103.136:2181,192.168.103.154:2181");

//?設置參數,并賦予默認值0

return?params;

}

/**

*?可選,測試前執行,做一些初始化工作,在Jmeter執行的時候,一個Thread只執行一次setupTest方法

*/

public?void?setupTest(JavaSamplerContext?context)?{

String?connect_str?=?context.getParameter("connect_str");

RetryPolicy?retryPolicy?=?new?ExponentialBackoffRetry(1000,?4);

client?=

CuratorFrameworkFactory.builder().connectString(connect_str)

.connectionTimeoutMs(3000).namespace("curator_sample")

.sessionTimeoutMs(5000).retryPolicy(retryPolicy).build();

client.start();

EnsurePath?ensure?=?new?EnsurePath("/curator_sample/setData");

try?{

ensure.ensure(client.getZookeeperClient());

}?catch?(Exception?e)?{

e.printStackTrace();

}

}

/**

*?可選,測試結束時調用,用于資源釋放,一個Thread只執行一次

*/

public?void?teardownTest(JavaSamplerContext?context)?{

client.close();

}

/**

*?必選,實現自定義請求

*/

public?SampleResult?runTest(JavaSamplerContext?arg0)?{

SampleResult?resuts?=?new?SampleResult();

resuts.sampleStart();

try?{

byte[]?bytes?=?client.getData().forPath("/setData");

resuts.setSuccessful(true);

}?catch?(Exception?e)?{

resuts.setSuccessful(false);

}

resuts.sampleEnd();

return?resuts;

}

}

然后,把項目打成jar包,并將包放到${jmeter_home}/lib/ext/目錄下。如還需要依賴第三方jar,需要將第三方的jar也放到${jmeter_home}/lib/ext/目錄下。

啟動Jmeter。

創建線程組:

創建Java?Request?Sample:

此時,會在Java請求頁面的“類名稱”下拉列表中看到我們之前寫的Java?Request腳本:

選中其中一個要測試的腳本,可以看到配置的參數:

然后再添加Summary?Report即可,保存測試計劃。設置線程組屬性,執行測試計劃。即可。

優化技巧一

很多情況下我們在編寫Java?Sample時,需要編寫多個Java?Sample,且這些Java?Sample之間,擁有共同的資源初始化操作、資源釋放操作,只是在核心業務不同而已,這時,我們可以封裝一個基類。例:

import?org.apache.curator.RetryPolicy;

import?org.apache.curator.framework.CuratorFramework;

import?org.apache.curator.framework.CuratorFrameworkFactory;

import?org.apache.curator.retry.ExponentialBackoffRetry;

import?org.apache.curator.utils.EnsurePath;

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;

/**

*?Curator的Java請求測試基類

*

*?@author?majian

*?@version?1.0,?2016-2-22

*?@since?1.0,?2016-2-22

*/

public?abstract?class?CuratorBaseRequest?extends?AbstractJavaSamplerClient?{

protected?CuratorFramework?client?=?null;

protected?long?subCount?=?1l;

protected?long?TOTAL_SUB_COUNT?=?100000l;

/**

*?定義可用參數及默認值

*/

public?Arguments?getDefaultParameters()?{

Arguments?params?=?new?Arguments();

params.addArgument("connect_str",?"192.168.103.136:2181,192.168.103.154:2181");//?設置參數,并賦予默認值0

return?params;

}

/**

*?可選,測試前執行,做一些初始化工作,在Jmeter執行的時候,一個Thread只執行一次setupTest方法

*/

public?void?setupTest(JavaSamplerContext?context)?{

String?connect_str?=?context.getParameter("connect_str");

RetryPolicy?retryPolicy?=?new?ExponentialBackoffRetry(1000,?4);

client?=

CuratorFrameworkFactory.builder().connectString(connect_str)

.connectionTimeoutMs(3000).namespace("curator_sample")

.sessionTimeoutMs(5000).retryPolicy(retryPolicy).build();

client.start();

EnsurePath?ensure?=?new?EnsurePath("/curator_sample/setData");

try?{

ensure.ensure(client.getZookeeperClient());

}?catch?(Exception?e)?{

e.printStackTrace();

}

}

/**

*?可選,測試結束時調用,用于資源釋放,一個Thread只執行一次

*/

public?void?teardownTest(JavaSamplerContext?context)?{

client.close();

}

/**

*?必選,實現自定義請求

*/

public?SampleResult?runTest(JavaSamplerContext?arg0)?{

SampleResult?resuts?=?new?SampleResult();

resuts.sampleStart();

try?{

testHandler();

resuts.setSuccessful(true);

}?catch?(Exception?e)?{

resuts.setSuccessful(false);

}

resuts.sampleEnd();

return?resuts;

}

/**

*?核心業務執行功能實現,只需實現此接口即可

*?@throws?Exception

*/

public?abstract?void?testHandler()?throws?Exception;

}

然后我們可以創建不同的Java請求,繼承這個基類,只需實現testHandler()方法即可。如:

curator獲取數據的Java?Request:

public?class?GetDataRequest?extends?CuratorBaseRequest?{

public?void?testHandler()?throws?Exception?{

byte[]?bytes?=?client.getData().forPath("/setData");

}

}

Curaotr設置數據的Java?Request:

import?org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

public?class?SetDataRequest?extends?CuratorBaseRequest?{

private?byte[]?a100?=?new?byte[100];

public?void?setupTest(JavaSamplerContext?context)?{

for?(int?i?=?0;?i?

a100[i]?=?'A';

}

super.setupTest(context);

}

public?void?testHandler()?throws?Exception?{

client.setData().forPath("/setData",?a100);

}

}

這樣,可以避免大量的冗余代碼。

優化技巧二

在編寫完Java?Sample后,每次都需要我們打成jar包,然后再復制jar包到${jmeter_home}\lib\ext下,然后再重起jmeter,這樣操作比較繁瑣。這時,我們可以通過在maven項目中添加一個maven插件來幫助我們簡化操作。

org.apache.maven.plugins

maven-antrun-plugin

copy-files

package

overwrite="true"?/>

run

如此,我們便可在執行mvn?package命令的時候,自動將項目打包,并將包復制到指定的目錄下了,我們只需再重啟jmeter就可以了。

總結

以上是生活随笔為你收集整理的java jmeter_使用Jmeter中的Java Request进行性能测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。