This is an automated email from the ASF dual-hosted git repository.
liuhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-agent-test-tool.git
The following commit(s) were added to refs/heads/master by this push:
new c205048 fix(logs): adjust LogAssert log sorting to preserve expected
order (#59)
c205048 is described below
commit c205048e467f6547c80fee3b2d091bae5f32e53d
Author: hao <[email protected]>
AuthorDate: Sun Sep 14 14:00:13 2025 +0800
fix(logs): adjust LogAssert log sorting to preserve expected order (#59)
---
mock-collector/src/main/assembly/assembly.xml | 2 +-
.../agent/tool/validator/assertor/LogAssert.java | 28 +++++++++++++++++++++-
.../test/agent/tool/validator/entity/LogEvent.java | 2 +-
.../tool/validator/entity/SegmentForRead.java | 2 +-
validator/src/test/resources/actualData.yaml | 20 +++++++++++++++-
validator/src/test/resources/expectedData.yaml | 20 +++++++++++++++-
6 files changed, 68 insertions(+), 6 deletions(-)
diff --git a/mock-collector/src/main/assembly/assembly.xml
b/mock-collector/src/main/assembly/assembly.xml
index 81973ae..3facba7 100644
--- a/mock-collector/src/main/assembly/assembly.xml
+++ b/mock-collector/src/main/assembly/assembly.xml
@@ -19,7 +19,7 @@
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd">
- <id></id>
+ <id>mock-collector-assembly</id>
<formats>
<format>tar.gz</format>
</formats>
diff --git
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/LogAssert.java
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/LogAssert.java
index d6b2d25..3206515 100644
---
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/LogAssert.java
+++
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/LogAssert.java
@@ -41,7 +41,24 @@ public class LogAssert {
if (actual == null || excepted.size() != actual.size()) {
throw new LogSizeNotEqualsException(excepted.size(), (actual !=
null) ? actual.size() : 0);
}
-
+ Comparator<LogData> logComparator = (log1, log2) -> {
+ String ep1 = log1.getEndpoint() != null ? log1.getEndpoint() : "";
+ String ep2 = log2.getEndpoint() != null ? log2.getEndpoint() : "";
+ int cmp = ep1.compareTo(ep2);
+ if (cmp != 0) return cmp;
+
+ String type1 = log1.getBody() != null && log1.getBody().getType()
!= null ? log1.getBody().getType() : "";
+ String type2 = log2.getBody() != null && log2.getBody().getType()
!= null ? log2.getBody().getType() : "";
+ cmp = type1.compareTo(type2);
+ if (cmp != 0) return cmp;
+
+ String content1 = getContentValue(log1);
+ String content2 = getContentValue(log2);
+ return content1.compareTo(content2);
+ };
+
+ excepted.sort(logComparator);
+ actual.sort(logComparator);
for (int index = 0; index < excepted.size(); index++) {
LogData exceptedLog = excepted.get(index);
LogData actualLog = actual.get(index);
@@ -144,4 +161,13 @@ public class LogAssert {
ExpressParser.parse(excepted.getValue()).assertValue("",
actual.getValue());
}
+ private static String getContentValue(LogData log) {
+ if (log.getBody() == null || log.getBody().getContent() == null)
return "";
+ Map<String, String> content = log.getBody().getContent();
+ if (content.get("text") != null) return content.get("text");
+ if (content.get("json") != null) return content.get("json");
+ if (content.get("yaml") != null) return content.get("yaml");
+ return "";
+ }
+
}
diff --git
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/entity/LogEvent.java
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/entity/LogEvent.java
index f4158f7..cecd641 100644
---
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/entity/LogEvent.java
+++
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/entity/LogEvent.java
@@ -39,4 +39,4 @@ public interface LogEvent {
return keyValuePairs;
}
}
-}
+}
\ No newline at end of file
diff --git
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/entity/SegmentForRead.java
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/entity/SegmentForRead.java
index dd815aa..f132506 100644
---
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/entity/SegmentForRead.java
+++
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/entity/SegmentForRead.java
@@ -329,4 +329,4 @@ public class SegmentForRead implements Segment {
this.spans = spans;
}
-}
+}
\ No newline at end of file
diff --git a/validator/src/test/resources/actualData.yaml
b/validator/src/test/resources/actualData.yaml
index cb5deb3..7384a0b 100644
--- a/validator/src/test/resources/actualData.yaml
+++ b/validator/src/test/resources/actualData.yaml
@@ -174,7 +174,7 @@ meterItems:
singleValue: 200.0
logItems:
- serviceName: foo
- logSize: 2
+ logSize: 4
logs:
- timestamp: 12345667890
endpoint: "/foo1"
@@ -204,6 +204,24 @@ logItems:
spanId: 1
tags: {}
layer: ''
+ - timestamp: 111
+ endpoint: ''
+ body:
+ type: ''
+ content:
+ text: "empty endpoint log2"
+ traceContext: { }
+ tags: { }
+ layer: ''
+ - timestamp: 1111
+ endpoint: ''
+ body:
+ type: ''
+ content:
+ text: "empty endpoint log1"
+ traceContext: { }
+ tags: { }
+ layer: ''
- serviceName: bar
logSize: 1
diff --git a/validator/src/test/resources/expectedData.yaml
b/validator/src/test/resources/expectedData.yaml
index 8fa2f89..a37517a 100644
--- a/validator/src/test/resources/expectedData.yaml
+++ b/validator/src/test/resources/expectedData.yaml
@@ -144,8 +144,26 @@ meterItems:
singleValue: ge 0
logItems:
- serviceName: foo
- logSize: 2
+ logSize: 4
logs:
+ - timestamp: gt 0
+ endpoint: ''
+ body:
+ type: ''
+ content:
+ text: "empty endpoint log1"
+ traceContext: { }
+ tags: { }
+ layer: ''
+ - timestamp: gt 0
+ endpoint: ''
+ body:
+ type: ''
+ content:
+ text: "empty endpoint log2"
+ traceContext: { }
+ tags: { }
+ layer: ''
- timestamp: gt 0
endpoint: "/foo1"
body: