pom build
必須按下面的設置, 打包出 with-dependencies
的jar
, 並把這個xxx-with-dependencies
copy 到 lib/ext
下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JmeterPlug</groupId>
<artifactId>aliyuntest</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 防止打出jar包后,中文參數亂碼 -->
<properties>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<lombok.version>1.16.22</lombok.version>
<jackson.version>2.8.10</jackson.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>4.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-guava</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.14.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<finalName>jmeter-test</finalName>
<!-- 把以來jar包要打入jar內,不然運行時報類找不到錯誤 -->
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<!-- 指定運行主類 -->
<mainClass>com.demo.Test</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
- 實現
AbstractJavaSamplerClient
package support;
import support.util.InvokeAliyunGate ;
import lombok.extern.slf4j.Slf4j;
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 support.util.Keys;
@Slf4j
public class JmeterSupportNing extends AbstractJavaSamplerClient {
// // cdp api
// private static InvokeAliyunGate cdpApis = new InvokeAliyunGate(Keys.UAT_CDP_AK,Keys.UAT_CDP_SK,Keys.UAT_CDP_URI);
// // ulp web
// private static InvokeAliyunGate ulpApis = new InvokeAliyunGate(Keys.UAT_ULP_AK,Keys.UAT_ULP_SK,Keys.UAT_ULP_URI);
// private static InvokeAliyunGate ulpApis_test = new InvokeAliyunGate(Keys.UAT_ULP_AK_TEST,Keys.UAT_ULP_SK_TEST,Keys.UAT_ULP_URI_TEST);
@Override
public void setupTest(JavaSamplerContext context) {
//可選,測試前執行,做一些初始化工作;
log.info("setupTest");
}
@Override
public void teardownTest(JavaSamplerContext context) {
// 可選,測試結束時調用;
System.out.println("teardownTest");
}
@Override
public Arguments getDefaultParameters() {
// 設置可用參數
Arguments jMeterProperties = new Arguments();
jMeterProperties.addArgument("cookie", "");
jMeterProperties.addArgument("method", "");
jMeterProperties.addArgument("body", "");
jMeterProperties.addArgument("path", "");
jMeterProperties.addArgument("gateway_url", "");
jMeterProperties.addArgument("ak", "");
jMeterProperties.addArgument("sk", "");
return jMeterProperties;
}
@Override
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
//必選,實現自定義請求,請求邏輯;
SampleResult sampleResult = new SampleResult();
sampleResult.setSampleLabel("NW Jmeter Java Request"); // 設置請求名稱
try {
sampleResult.sampleStart(); //開始統計響應時間標記
String cookie = javaSamplerContext.getParameter("cookie");
String method = javaSamplerContext.getParameter("method");
String body = javaSamplerContext.getParameter("body");
String path = javaSamplerContext.getParameter("path");
String url = javaSamplerContext.getParameter("gateway_url");
String ak = javaSamplerContext.getParameter("ak");
String sk = javaSamplerContext.getParameter("sk");
InvokeAliyunGate apis = new InvokeAliyunGate(ak, sk ,url);
apis.invokeGateByMode(body, path, method, cookie);
} finally {
sampleResult.sampleEnd();// 結束統計響應時間標記
}
return sampleResult;
}
public static void main(String[] args) {
System.out.println("ok!!!");
// InvokeAliyunGate ulpApis = new InvokeAliyunGate(Keys.UAT_ULP_AK,Keys.UAT_ULP_SK,Keys.UAT_ULP_URI);
// String body = "{\"captcha\":\"string\",\"mobile\":11111111111,\"prefix\":86,\"token\":\"string\"}";
// String path = "/api/login-send-sms-code";
//// String body = "{ \"receiver\":\"11111111111\", \"noticeType\":\"SMS\", \"type\":1 }";
//// String path = "/api/user/web/mobile/reset/send-sms";
// String method = "post";
// ulpApis.invokeGateByMode(body, path, method);
}
}