You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2024/03/20 23:51:32 UTC
(skywalking) branch data-generator updated: Fix service order
This is an automated email from the ASF dual-hosted git repository.
hanahmily pushed a commit to branch data-generator
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/data-generator by this push:
new ab05bdfa89 Fix service order
ab05bdfa89 is described below
commit ab05bdfa896d0f18fcee2564aaf76bd2fdd98481
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Thu Mar 21 07:51:10 2024 +0800
Fix service order
Signed-off-by: Gao Hongtao <ha...@gmail.com>
---
docs/en/setup/backend/segment-template.json | 42 ++++++++--------------
.../restapi/SegmentGeneratorHandler.java | 15 +++++++-
.../apache/skywalking/restapi/SegmentRequest.java | 19 ++++++----
.../skywalking/restapi/SegmentGeneratorTest.java | 1 +
.../src/test/resources/segment.tpl.json | 8 ++---
5 files changed, 45 insertions(+), 40 deletions(-)
diff --git a/docs/en/setup/backend/segment-template.json b/docs/en/setup/backend/segment-template.json
index 0cfc9c1a39..7539775670 100644
--- a/docs/en/setup/backend/segment-template.json
+++ b/docs/en/setup/backend/segment-template.json
@@ -3,25 +3,25 @@
"type": "uuid",
"changingFrequency": "1"
},
+ "serviceInstanceName": {
+ "type": "randomString",
+ "length": "10",
+ "letters": true,
+ "numbers": true,
+ "domainSize": 10
+ },
+ "serviceName": {
+ "type": "randomString",
+ "prefix": "service_",
+ "length": "1",
+ "letters": false,
+ "numbers": true,
+ "domainSize": 10
+ },
"segments": {
"type": "randomList",
"size": 5,
"item": {
- "serviceInstanceName": {
- "type": "randomString",
- "length": "10",
- "letters": true,
- "numbers": true,
- "domainSize": 10
- },
- "serviceName": {
- "type": "randomString",
- "prefix": "service_",
- "length": "1",
- "letters": false,
- "numbers": true,
- "domainSize": 10
- },
"endpointName": {
"type": "randomString",
"length": "10",
@@ -73,18 +73,6 @@
"letters": true,
"numbers": true
},
- "peer": {
- "type": "randomString",
- "length": "10",
- "prefix": "test_peer_",
- "letters": true,
- "numbers": true
- },
- "spanLayer": {
- "type": "randomInt",
- "min": "0",
- "max": "4"
- },
"componentId": {
"type": "randomInt",
"min": "0",
diff --git a/oap-server/server-tools/data-generator/src/main/java/org/apache/skywalking/restapi/SegmentGeneratorHandler.java b/oap-server/server-tools/data-generator/src/main/java/org/apache/skywalking/restapi/SegmentGeneratorHandler.java
index 0b018324c3..e1038869dd 100644
--- a/oap-server/server-tools/data-generator/src/main/java/org/apache/skywalking/restapi/SegmentGeneratorHandler.java
+++ b/oap-server/server-tools/data-generator/src/main/java/org/apache/skywalking/restapi/SegmentGeneratorHandler.java
@@ -61,6 +61,8 @@ public class SegmentGeneratorHandler {
public HttpResponse generateMockSegments(
@Default("0") @Param("size") int size,
@Default("0") @Param("qps") int qps,
+ @Default("0") @Param("duration") int duration,
+ @Default("") @Param("group") String group,
@RequestObject SegmentRequest request) {
if (size > 0 && qps > 0) {
@@ -71,8 +73,9 @@ public class SegmentGeneratorHandler {
}
log.info("Generate {} mock segments, qps: {}, template: {}", size, qps, request);
+ request.init();
final IntConsumer generator = unused -> {
- final List<SegmentGenerator.SegmentResult> segments = request.next(null);
+ final List<SegmentGenerator.SegmentResult> segments = request.next(group);
log.debug("Generating segment: {}", (Object) segments);
segments.forEach(s -> {
segmentParserService.send(s.segmentObject);
@@ -102,6 +105,16 @@ public class SegmentGeneratorHandler {
log.error("Exception in future: ", f.cause());
}
});
+ final int durationSeconds = duration > 0 ? duration : Integer.MAX_VALUE;
+ future.addListener(f -> {
+ try {
+ Thread.sleep(durationSeconds * 1000L);
+ future.cancel(true);
+ log.info("Generate mock segments is canceled: requestId: {}", requestId);
+ } catch (InterruptedException e) {
+ log.error("Interrupted", e);
+ }
+ });
return HttpResponse.of(MediaType.PLAIN_TEXT, requestId);
}
diff --git a/oap-server/server-tools/data-generator/src/main/java/org/apache/skywalking/restapi/SegmentRequest.java b/oap-server/server-tools/data-generator/src/main/java/org/apache/skywalking/restapi/SegmentRequest.java
index a1cecf7142..769be844c3 100644
--- a/oap-server/server-tools/data-generator/src/main/java/org/apache/skywalking/restapi/SegmentRequest.java
+++ b/oap-server/server-tools/data-generator/src/main/java/org/apache/skywalking/restapi/SegmentRequest.java
@@ -30,21 +30,28 @@ import java.util.stream.IntStream;
@Data
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
-public final class SegmentRequest implements Generator<Object, List<SegmentGenerator.SegmentResult>> {
+public final class SegmentRequest implements Generator<String, List<SegmentGenerator.SegmentResult>> {
private Generator<String, String> traceId;
private Generator<String, String> serviceName;
private Generator<String, String> serviceInstanceName;
private Generator<Object, List<SegmentGenerator>> segments;
+ private List<String> serviceList;
+
+ void init() {
+ String prefix = getServiceName().next("");
+ final List<SegmentGenerator> segments = getSegments().next("");
+ serviceList = IntStream.range(0, segments.size()).mapToObj(i -> prefix + i).collect(Collectors.toList());
+ }
+
@Override
- public List<SegmentGenerator.SegmentResult> next(Object ignored) {
+ public List<SegmentGenerator.SegmentResult> next(String group) {
final String traceId = getTraceId().next(null);
final List<SegmentGenerator> segments = getSegments().next(traceId);
SegmentGenerator.SegmentResult last = null;
- List<SegmentGenerator.SegmentContext> context = IntStream.range(0, segments.size()).mapToObj(i -> {
- String serviceName = getServiceName().next(null);
- return new SegmentGenerator.SegmentContext(traceId, serviceName, getServiceInstanceName().next(serviceName));
- }).collect(Collectors.toList());
+ List<SegmentGenerator.SegmentContext> context = IntStream.range(0, segments.size()).mapToObj(i ->
+ new SegmentGenerator.SegmentContext(traceId, serviceList.get(i), getServiceInstanceName().next(serviceList.get(i)))
+ ).collect(Collectors.toList());
List<SegmentGenerator.SegmentResult> result = new ArrayList<>(segments.size());
for (int i = 0; i < segments.size(); i++) {
SegmentGenerator.SegmentContext ctx = context.get(i);
diff --git a/oap-server/server-tools/data-generator/src/test/java/org/apache/skywalking/restapi/SegmentGeneratorTest.java b/oap-server/server-tools/data-generator/src/test/java/org/apache/skywalking/restapi/SegmentGeneratorTest.java
index c202043b26..d55b4cd877 100644
--- a/oap-server/server-tools/data-generator/src/test/java/org/apache/skywalking/restapi/SegmentGeneratorTest.java
+++ b/oap-server/server-tools/data-generator/src/test/java/org/apache/skywalking/restapi/SegmentGeneratorTest.java
@@ -43,6 +43,7 @@ class SegmentGeneratorTest {
assertNotNull(url);
File jsonFile = new File(url.toURI());
SegmentRequest sr = objectMapper.readValue(jsonFile, SegmentRequest.class);
+ sr.init();
Set<String> serviceSet = new HashSet<>();
Set<String> serviceInstanceSet = new HashSet<>();
Set<String> endpointSet = new HashSet<>();
diff --git a/oap-server/server-tools/data-generator/src/test/resources/segment.tpl.json b/oap-server/server-tools/data-generator/src/test/resources/segment.tpl.json
index 90518347b4..3597234abf 100644
--- a/oap-server/server-tools/data-generator/src/test/resources/segment.tpl.json
+++ b/oap-server/server-tools/data-generator/src/test/resources/segment.tpl.json
@@ -11,12 +11,8 @@
"domainSize": 10
},
"serviceName": {
- "type": "randomString",
- "prefix": "service_",
- "length": "1",
- "letters": false,
- "numbers": true,
- "domainSize": 10
+ "type": "fixedString",
+ "value": "service_"
},
"segments": {
"type": "randomList",