feat: add BenchmarkActor for performance test

This commit is contained in:
tjq 2023-01-01 10:25:58 +08:00
parent eb6b0c35a5
commit 268f5dd5c7
2 changed files with 71 additions and 0 deletions

View File

@ -1,5 +1,11 @@
package tech.powerjob.remote.framework;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomStringUtils;
import tech.powerjob.common.PowerSerializable;
import tech.powerjob.common.utils.CommonUtils;
import tech.powerjob.remote.framework.actor.Actor;
import tech.powerjob.remote.framework.actor.Handler;
@ -9,6 +15,7 @@ import tech.powerjob.remote.framework.actor.Handler;
* @author tjq
* @since 2023/1/1
*/
@Slf4j
@Actor(path = "benchmark")
public class BenchmarkActor {
@ -17,4 +24,52 @@ public class BenchmarkActor {
return k;
}
@Handler(path = "standard")
public BenchmarkResponse processStandardRequest(BenchmarkRequest request) {
log.info("[BenchmarkActor] receive request: {}", request);
BenchmarkResponse response = new BenchmarkResponse()
.setSuccess(true)
.setContent(request.getContent())
.setProcessThread(Thread.currentThread().getName())
.setServerReceiveTs(System.currentTimeMillis());
if (request.getResponseSize() != 0 && request.getResponseSize() > 0) {
response.setExtra(RandomStringUtils.random(request.getResponseSize()));
}
if (request.getBlockingMills() !=0 && request.getBlockingMills() > 0) {
CommonUtils.easySleep(request.getBlockingMills());
}
return response;
}
@Data
public static class BenchmarkRequest implements PowerSerializable {
/**
* 请求内容
*/
private String content;
/**
* 期望的响应大小可空
*/
private Integer responseSize;
/**
* 阻塞时间模拟 IO 耗时
*/
private Integer blockingMills;
}
@Data
@Accessors(chain = true)
public static class BenchmarkResponse implements PowerSerializable {
private boolean success;
/**
* 原路返回原来的 content
*/
private String content;
private String processThread;
private long serverReceiveTs;
private String extra;
}
}

View File

@ -16,6 +16,7 @@
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<vertx.version>4.3.7</vertx.version>
<powerjob-remote-framework.version>4.2.0</powerjob-remote-framework.version>
</properties>
@ -27,6 +28,21 @@
<version>${powerjob-remote-framework.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.vertx/vertx-core -->
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>${vertx.version}</version>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-web</artifactId>
<version>${vertx.version}</version>
</dependency>
</dependencies>
</project>