【转】java接口的性能测试
private SampleResult results;
public void setupTest(JavaSamplerContext arg0) {
results = new SampleResult();
}
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
return params;
}
//测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于LoadRunner中的Action方法
public SampleResult runTest(JavaSamplerContext arg0) {
results.sampleStart();
results.sampleEnd();
results.setSuccessful(true);
return results;
}
//结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法
public void teardownTest(JavaSamplerContext arg0) {
}
|
package app;
import http.HttpClient4;
import http.HttpParameter;
import http.HttpResp;
import http.JsonUtil;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.Random;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PostMethod;
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.yeepay.g3.utils.common.encrypt.AES;
import com.yibao.utils.des3.RSA_Encrypt;
public class TheardTest extends AbstractJavaSamplerClient{
private SampleResult results;
public void setupTest(JavaSamplerContext arg0) {
results = new SampleResult();
}
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
return params;
}
public static String ramdonNum(int num){
Random rd = new Random();
StringBuilder sb = new StringBuilder("");
if (num <1){
return null;
}
else{
for(int i=1;i<=num;i++){
int sr=rd.nextInt(9);
sb.append(String.valueOf(sr));
}
return sb.toString();
}}
public static void testCreditPay() throws ParseException{
String PUBLIC_KEY=TheardTest.testConsult();
HttpClient client = new HttpClient();
PostMethod method = new PostMethod("http://xxxxxxxx/xxxxxx/api/bankcard/credit/pay");
String key=TheardTest.ramdonNum(6);
String encryptkey = "0123456789"+key;
String merchantAccount = "YB01000000078";
//民生
String cardNo ="XXXXXXXXX";
String validthru="xxx7";
String cvv2 = "6xx";
String phone = "13xxxxxx5431";
String orderId = "33hhkssseef3utyt2"+key;
System.out.println(orderId);
Integer transtime = (int)(System.currentTimeMillis()/1000);
Integer currency = 156;
String amount = "50";
String productcatalog = "1";
String productName = "123";
String productDesc = "小丸子";
String userIp = "123.45.45.45";
String identityId = "a";
Integer identityType = 6;
String other = "eeee";
String data = "{\"merchantaccount\":\"" + merchantAccount
+"\",\"cardno\":\"" + cardNo
+ "\",\"validthru\":\"" + validthru
+ "\",\"cvv2\":\"" + cvv2
+ "\",\"phone\":\"" + phone
+ "\",\"orderid\":\"" + orderId
+ "\",\"transtime\":" + transtime
+ ",\"currency\":" + currency
+ ",\"amount\":" + amount
+ ",\"productcatalog\":\"" + productcatalog
+ "\",\"productname\":\"" + productName
+ "\",\"productdesc\":\"" + productDesc
+ "\",\"userip\":\"" + userIp
+ "\",\"identityid\":\"" + identityId
+ "\",\"identitytype\":" + identityType
+ ",\"other\":\"" + other + "\"}";
data = AES.encryptToBase64(data, encryptkey);
try {
method.setParameter("merchantaccount", merchantAccount);
method.setParameter("data", data);
method.setParameter("encryptkey", RSA_Encrypt.encrypt(encryptkey, PUBLIC_KEY));
client.executeMethod(method);
System.out.println(method.getStatusLine());
String respStr = method.getResponseBodyAsString();
System.out.println(respStr);
String result = AES.decryptFromBase64(respStr, encryptkey);
System.out.println(result);
// 自动退款
Map<String, Object> mapjson=JsonUtil.parse(result);
Object obj = mapjson.get("yborderid");
String yborderid=obj.toString();
System.out.println("流水号:"+yborderid);
TheardTest.refundTeseCase(yborderid,merchantAccount,amount);
method.releaseConnection();
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
|
/**
* 测试协商接口
* @author shangwei
* @return
* @throws ParseException
*
*/
public static String testConsult() throws ParseException{
String url = "http://xxxxxxx/xxxxxx/consult";
HttpClient4 client =HttpClient4.createDefault();
String data = "";
Date d = new Date();
Calendar now = Calendar.getInstance();
now.setTime(d);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateline=format.format(now.getTime());
System.out.println(dateline);
Date date = format.parse(dateline);
String dates=date.getTime()/1000+"";
System.out.println(dates);
try {
data = AES.encryptToBase64(dates, "12345678901234HH");
} catch (Exception e) {
e.printStackTrace();
}
HttpParameter parameter = new HttpParameter();
parameter.add("data", data);
parameter.add("merchantaccount", "YB01000000078");
HttpResp resp = new HttpResp();
try{
resp=client.doPost(url, parameter, "utf-8");
String respStr= resp.getText("utf-8");
System.out.println(respStr);
String aes=AES.decryptFromBase64(respStr, "12345678901234HH");
System.out.println(aes);
return aes;
}catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
client.shutdown();
return "出错啦";
}
public static void refundTeseCase(String yborderid,String merchantAccount,String amount) throws IOException{
String url ="http://xxxxxxxx/xxxxxxx/api/refund/direct";
HttpClient4 client =HttpClient4.createDefault();
HttpParameter parameter = new HttpParameter();
parameter.add("merchantaccount", merchantAccount);
parameter.add("merchantrefundid", "093032323");
parameter.add("transorderid", yborderid);
parameter.add("amount", amount);
HttpResp rep;
try {
rep = client.doPost(url, parameter,"utf-8");
System.out.println(rep.getStatusCode());
System.out.println(rep.getText("utf-8"));
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于LoadRunner中的Action方法
public SampleResult runTest(JavaSamplerContext arg0) {
results.sampleStart();
try {
testCreditPay();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
results.sampleEnd();
results.setSuccessful(true);
return results;
}
//结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法
public void teardownTest(JavaSamplerContext arg0) {
}
}
|
【转】java接口的性能测试的更多相关文章
- Jmeter+jenkins如何快速搭建接口和性能测试持续集成解决方案-[基于windows篇]
最近在用Jmeter本来想写一个详细的使用教程,突然看到有前辈已经写好了不错的教程,特此"借花献佛"整理出来分享给大家! Jenkins + Jmeter 构建接口.性能测试持续集 ...
- java接口调用——webservice就是一个RPC而已
很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...
- java 接口的作用和好处
1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意 ...
- java接口
一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...
- java接口的嵌套
java接口 1.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值 2.接口中的方法默认都是 public abstract ...
- java 接口和抽象类的区别
java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...
- java 接口(上)
1.接口中的方法都是抽象方法.而普通的抽象类里面不一定都是抽象方法.抽象类中必须有抽象方法,同时也可以有非抽象方法.继承抽象父类的子类中,如果依然有抽象方法,那么这个子类也是抽象类.即只要类中有抽象方 ...
- java接口和抽象类
关于接口 1.创建一个接口,需要使用interface关键字. 2.实现一个接口,需要使用implements关键字. 3.接口的成员属性都是静态常量(默认public static final). ...
- python面向对象进阶 反射 单例模式 以及python实现类似java接口功能
本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...
随机推荐
- Find Min In Rotated Sorted Array,寻找反转序列中最小的元素。
问题描述:寻找反转序列中最小的元素. 算法分析:和寻找某个数是一个道理,还是利用二分查找,总体上分两种情况.nums[left]<=nums[mid],else.但是,在截取子序列的时候,有可能 ...
- JNI_Z_07_方法的操作(没有String类型的参数)_参数的传递方式
1. 2.VC6(CPP)的DLL代码: #include<stdio.h> #include "jniZ_TjniMethod02.h" JNIEXPORT void ...
- codeforces 820A. Mister B and Book Reading 解题报告
题目链接:http://codeforces.com/problemset/problem/820/A 坑爹题目,坑爹题目,坑爹题目....汗 = =! 后台还110个 test 有个地方需要注意下 ...
- python中的mysql操作
一. 数据库在自动化测试中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到,测试的时候就从数据库中读取出来.这点是非常重要的! 存测试结果 二. python中的数 ...
- 安装(解密)win10 10074 esd 更新 10162 esd
最新ESD:http://ms-vnext.net/Win10esds/ 公开下载:http://ms-vnext.net/Win10esds/urls/ ----------------更新 --- ...
- C#-foreach与yield
(转自:http://www.jb51.net/article/34627.htm) 1. foreach语句 C#编译器会把foreach语句转换为IEnumerable接口的方法和属性. fore ...
- javascript: 代码优化
一.避免全局查找 在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些 function search() { //当我要使用当前页面地址和主机域 ...
- vsftpd的530 Login incorrect错误解决方法 vsftpd登录错误
530 Login incorrect只有用匿名anonymous才可登录,其余所有用户都报530 Login incorrect错 复制代码 代码如下: local_enable=YESwrite_ ...
- DRF 的 版本,解析器,与序列化
DRF 的 版本,解析器,与序列化 补充 配置文件中的 类的调用: (字符串) v1 = ["view.xx.apth.Role","view.xx.apth.Role& ...
- NTP服务器和国内可用的NTP地址
NTP 是什么? NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备[如计算机.手机]的时间的协议. NTP 实现什么目的? 目的很简单,就是为了提供准确 ...