完善jmter
This commit is contained in:
@@ -0,0 +1,217 @@
|
||||
package com.jmeter.test;
|
||||
|
||||
import com.sunyard.SydApiException;
|
||||
import com.sunyard.proto.Util;
|
||||
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 racal.sunyard.main.SydApi4j;
|
||||
import racal.sunyard.main.SydApiBuilder;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
|
||||
public class Test4Jemter extends AbstractJavaSamplerClient {
|
||||
|
||||
private String SM2dn ;
|
||||
private String RSAdn ;
|
||||
private String ip ;
|
||||
private String ip2 ;
|
||||
private String oData;
|
||||
private String sign;
|
||||
private byte[] orgData;
|
||||
|
||||
private int type;
|
||||
|
||||
private static ThreadLocal<SydApi4j> api;
|
||||
|
||||
|
||||
/**
|
||||
* 定义默认的参数,在jmeter中会自动显示在这里定义的默认参数
|
||||
* @return Arguments对象
|
||||
*/
|
||||
@Override
|
||||
public Arguments getDefaultParameters() {
|
||||
Arguments arguments = new Arguments();
|
||||
arguments.addArgument("SM2dn", "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1");
|
||||
arguments.addArgument("RSAdn", "C=cn,O=CFCA TEST CA,OU=NCS2,OU=Enterprises,CN=041@Z402451000010@ShanDong@00000001");
|
||||
arguments.addArgument("orgData", "12345678");
|
||||
arguments.addArgument("ip", "192.168.0.166");
|
||||
// arguments.addArgument("ip2", "172.16.17.161");
|
||||
arguments.addArgument("type", "1");
|
||||
arguments.addArgument("sign", "12345678");
|
||||
return arguments;
|
||||
}
|
||||
|
||||
/**
|
||||
* 在执行测试之前执行,只执行一次,可以获取传递过来的参数,一般用来做初始化操作
|
||||
* @param context 可以获取jmeter传递过来的参数
|
||||
*/
|
||||
@Override
|
||||
public void setupTest(JavaSamplerContext context) {
|
||||
//对成员变量初始化
|
||||
SM2dn = context.getParameter("SM2dn");
|
||||
RSAdn = context.getParameter("RSAdn");
|
||||
oData = context.getParameter("orgData");
|
||||
ip = context.getParameter("ip");
|
||||
// ip2 = context.getParameter("ip2");
|
||||
type = context.getIntParameter("type");
|
||||
sign = context.getParameter("sign");
|
||||
System.setProperty("com.sunyard.dnsort", "false");
|
||||
api = new ThreadLocal<SydApi4j>() {
|
||||
public SydApi4j initialValue() {
|
||||
|
||||
SydApiBuilder builder = new SydApiBuilder().setIp(ip);
|
||||
final SydApi4j api = (SydApi4j) builder.build();
|
||||
return api;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 真正的测试代码块,jmeter按照配置的逻辑执行该方法
|
||||
* @param javaSamplerContext 上下文对象,可以获取jmeter传递的参数
|
||||
* @return SampleResult对象用于封装结果
|
||||
*/
|
||||
@Override
|
||||
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
|
||||
SampleResult sr = new SampleResult();
|
||||
//设置标签
|
||||
sr.setSampleLabel("testDemo");
|
||||
//设置开始标志,否则无法统计tps等
|
||||
sr.sampleStart();
|
||||
try {
|
||||
orgData = oData.getBytes(); //SM2裸签
|
||||
//执行业务逻辑
|
||||
switch(type){
|
||||
case 1:
|
||||
api.get().SYD_NakedSign(SM2dn, orgData, (byte[]) null);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(Util.encodeBase64(nakedSign1), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
|
||||
case 2:
|
||||
api.get().SYD_NakedVerify(SM2dn, Util.decodeBase64(sign), orgData, (byte[])null) ;
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(String.valueOf(nakedVerify1), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 3:
|
||||
//RSA裸签
|
||||
api.get().SYD_NakedSign(1, RSAdn,orgData,(byte[])null);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(Util.encodeBase64(nakedSign2), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 4:
|
||||
api.get().SYD_NakedVerify(1, RSAdn,Util.decodeBase64(sign),orgData ,(byte[])null);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(String.valueOf(nakedVerify2), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 5:
|
||||
api.get().detachedSign(1, orgData, SM2dn);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(detSign1, StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 6:
|
||||
api.get().detachedVerify(1, orgData, sign);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(String.valueOf(detV1), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 7:
|
||||
api.get().detachedSign(2,1, orgData, RSAdn);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(detSign2, StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 8:
|
||||
api.get().detachedVerify(2,2, orgData, sign);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(String.valueOf(detV2), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 9:
|
||||
api.get().attachedSignHsm(orgData, SM2dn);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(attSign1, StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 10:
|
||||
api.get().attachedVerify( sign.getBytes());
|
||||
sr.setResponseCodeOK();
|
||||
// sr.setResponseData(String.valueOf(attV1), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 11:
|
||||
api.get().attachedSignRSAHsm(2, orgData, RSAdn);
|
||||
sr.setResponseCodeOK();
|
||||
// sr.setResponseData(attSign2, StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 12:
|
||||
api.get().attachedVerifyRSA(2, sign);
|
||||
sr.setResponseCodeOK();
|
||||
// sr.setResponseData(String.valueOf(attV2), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 13:
|
||||
api.get().generateDE(SM2dn.getBytes(), 3, 1, orgData);
|
||||
// byte[] cipherKey = (byte[]) genSM2.get(SydApi.RET_CIPHER_KEY);
|
||||
sr.setResponseCodeOK();
|
||||
// sr.setResponseData(new String(cipherKey), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 14:
|
||||
api.get().decryptDE(true, 1, SM2dn.getBytes(), sign);;
|
||||
// byte[] oData = (byte[]) denSM2.get("oData");
|
||||
sr.setResponseCodeOK();
|
||||
// sr.setResponseData(new String(oData), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
|
||||
case 15:
|
||||
api.get(). generateDE(RSAdn.getBytes(), 4, 1, orgData);
|
||||
// byte[] cipherKeyRSA = (byte[]) genRSA.get(SydApi.RET_CIPHER_KEY);
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(new String(cipherKeyRSA), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
case 16:
|
||||
api.get().decryptDERSA(true, 1, RSAdn.getBytes(), sign);
|
||||
// byte[] oDataRSA = (byte[]) denRSA.get("oData");
|
||||
sr.setResponseCodeOK();
|
||||
//sr.setResponseData(new String(oDataRSA), StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
|
||||
default:
|
||||
sr.setResponseCodeOK();
|
||||
sr.setResponseData("请选择测试组", StandardCharsets.UTF_8.displayName());
|
||||
break;
|
||||
}
|
||||
sr.setSuccessful(true);
|
||||
}catch (SydApiException e){
|
||||
e.printStackTrace();
|
||||
sr.setResponseCode(String.valueOf(e.getRetCode()));
|
||||
sr.setResponseData(e.getMessage(), StandardCharsets.UTF_8.displayName());
|
||||
sr.setSuccessful(false);
|
||||
}finally {
|
||||
sr.sampleEnd();
|
||||
}
|
||||
return sr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试完成后执行,一般用于关闭资源
|
||||
* @param context 上下文对象,可用于获取jmeter传递的参数
|
||||
*/
|
||||
@Override
|
||||
public void teardownTest(JavaSamplerContext context) {
|
||||
System.runFinalization();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user