java自定義jar包讓jemeter使用


背景:可能在做定義化的要求上,jmeter原有的jar包,已經不能滿足我們,就需要自己寫一個方法,以下就是寫入的一個模擬post的請求,在jmeter中使用的案例

一:寫代碼

1.代碼中的有兩個包,原諒我取名字取的cuo,第一個包名,com.databasecomputer這個包下有一個addcomputerinfo這個類,com.jmeter包下有httpcientPost這個類

 

com.jmeter.httpcientPost 一個post請求,是登錄請求,打印的是code碼和登錄后的信息

package com.jemeter;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;

public class httpclientPost {
	
	public static int sendpost() throws ClientProtocolException, IOException {
		CloseableHttpClient httpclient = HttpClients.createDefault();
		HttpPost post = new HttpPost("https://user.XXX.com/m-users-a-act_sign.htm?pipeline=xx");
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("email", "zhang1@qq.com"));
		params.add(new BasicNameValuePair("password", "zhangjun123"));
		post.setEntity(new UrlEncodedFormEntity(params));
		CloseableHttpResponse response2 = httpclient.execute(post);

		int code = response2.getStatusLine().getStatusCode();
		HttpEntity http = response2.getEntity();

		InputStream instreams = http.getContent();
		BufferedReader reader = new BufferedReader(new InputStreamReader(instreams));
		StringBuffer buffer = new StringBuffer();
		String line;
		while ((line = reader.readLine()) != null) {
			buffer.append(line + "br ");
		}
		reader.close();
		System.out.println(code +" respones:"+buffer);
		
		return code;
	}

}

 com.databasecomputer.addcomputerinfo  以下就是調用,並且調用事務

package com.databasecomputer;

import java.io.IOException;

import org.apache.http.client.ClientProtocolException;
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 com.jemeter.httpclientPost;

public class addcomputerInfo extends AbstractJavaSamplerClient {

	public SampleResult runTest(JavaSamplerContext arg0) {
		// TODO Auto-generated method stub
		SampleResult result=new SampleResult();
		result.sampleStart();  //事務啟動
		try {
		int responeCode=httpclientPost.sendpost();
			if (responeCode==200) {
				result.setSuccessful(true);
			}else {
				result.setSuccessful(false);
			}
		} catch (ClientProtocolException e) {
			result.setSuccessful(false);
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			result.setSuccessful(false);
			e.printStackTrace();
		}
		result.sampleEnd();//事務關閉
		return result;
		
		
	}
	public static void main(String[] args) {
		new addcomputerInfo().runTest(new JavaSamplerContext(new Arguments()));
	}

}

  

運行打印code碼,返回登錄成功,注意:在運行時,要導入jmeter的jar包,不然運行會報錯,然后我就是不知道導入哪些包,出錯一個問題,就導入相應的包,但是發現效率很低,干脆全部導入了

 

導包的過程,導入的是jmeter下lib的所有jar文件

 

 二、打包

代碼調試沒有問題,就打包生成jar文件,生成文件可以用maven命令生成,也可以使用項目自己生成

生成文件為postdemo,文件路徑是在jmeter下的lib/ext文件夾下

 

 

三、jmeter使用

 

 注:如果生成jar成功,在啟動jmeter中會去查找到這個方法名,自己加載出來,我在線程組中設置了10次

點擊運行,控制台顯示

 

 運行的次數

 

 

說明調用jar成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM