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:

Reply via email to