mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
feat: add BenchmarkActor for performance test
This commit is contained in:
parent
eb6b0c35a5
commit
268f5dd5c7
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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>
|
Loading…
x
Reference in New Issue
Block a user