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;
|
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.Actor;
|
||||||
import tech.powerjob.remote.framework.actor.Handler;
|
import tech.powerjob.remote.framework.actor.Handler;
|
||||||
|
|
||||||
@ -9,6 +15,7 @@ import tech.powerjob.remote.framework.actor.Handler;
|
|||||||
* @author tjq
|
* @author tjq
|
||||||
* @since 2023/1/1
|
* @since 2023/1/1
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Actor(path = "benchmark")
|
@Actor(path = "benchmark")
|
||||||
public class BenchmarkActor {
|
public class BenchmarkActor {
|
||||||
|
|
||||||
@ -17,4 +24,52 @@ public class BenchmarkActor {
|
|||||||
return k;
|
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>
|
<maven.compiler.target>8</maven.compiler.target>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<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>
|
<powerjob-remote-framework.version>4.2.0</powerjob-remote-framework.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
@ -27,6 +28,21 @@
|
|||||||
<version>${powerjob-remote-framework.version}</version>
|
<version>${powerjob-remote-framework.version}</version>
|
||||||
</dependency>
|
</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>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
Loading…
x
Reference in New Issue
Block a user