fix(logs): adjust LogAssert log sorting to preserve expected order - #59
Merged
Conversation
wu-sheng
reviewed
Sep 14, 2025
| @@ -1,3 +1,22 @@ | |||
| /* | |||
Member
There was a problem hiding this comment.
For latest mvnw, we don't need this Java class. For his older version, I am not sure whether it is proper to add ASF header.
Contributor
Author
There was a problem hiding this comment.
Do I need to delete this class or remove the ASF header?
mrproliu
reviewed
Sep 14, 2025
| 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> |
Contributor
There was a problem hiding this comment.
Why you need to change this?
Contributor
There was a problem hiding this comment.
Please don’t change the default permission.
mrproliu
approved these changes
Sep 14, 2025
wu-sheng
added a commit
to apache/skywalking-python
that referenced
this pull request
Aug 1, 2026
…ting The upgraded collector sorts expected and actual logs by their body text before comparing them pairwise (apache/skywalking-agent-test-tool#59). The two `logging`-module records are matched by `text: not null`, which sorts as that literal string, while the records themselves led with the default layout's timestamp — so they sorted first while their placeholders sorted last, inverting the pairing and failing every field. Pin a layout that leads with the logger name, which sorts after the placeholders and orders the two records deterministically (CRITICAL before ERROR), and reorder the expected entries to match. The formatted path is still exercised, only the field order in the layout changes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
wu-sheng
added a commit
to apache/skywalking-python
that referenced
this pull request
Aug 1, 2026
The pinned mock-collector image dated from October 2022, 13 commits behind the tool's master. Move it to c6b91a0e, which carries the fix for the first-insert race in SegmentItems/LogItems (apache/skywalking-agent-test-tool#65): when two processes reported their first segment for the same service name concurrently, the collector silently dropped one while both reporters got HTTP 200. sw_fork_support worked around that race by seeding the service name with a parent-only /ping request and waiting for the collector to register it before triggering the concurrent parent/child reports. The collector no longer needs the help, so the endpoint, the seed step and the extra expected segment are gone and the test is back to asserting exactly the cross-fork trace it is about. The upgrade also picks up the validator changes made since 2022, one of which affected us. LogAssert now sorts both the expected and the actual logs by their body text before comparing them pairwise (apache/skywalking-agent-test-tool#59), and the sort uses the raw expected string, so a matcher such as `text: not null` participates as the literal "not null". sw_loguru matches its two logging-module records that way while the records themselves led with the default layout's timestamp, so they sorted first and their placeholders last, inverting the pairing. Pin a layout that leads with the logger name, which sorts after the placeholders and orders the two records deterministically, and reorder the expected entries to match; SWFormatter is still exercised. Its expected.data.yml is the only one in the tree with a non-empty logItems block, so no other test is affected. Also refresh CLAUDE.md: supported Python and grpcio floor, the current plugin list, the agent's fork/prefork lifecycle, and the plugin-test validation notes.
wu-sheng
added a commit
to apache/skywalking-python
that referenced
this pull request
Aug 2, 2026
…410) The pinned mock-collector image dated from October 2022, 13 commits behind the tool's master. Move it to c6b91a0e, which carries the fix for the first-insert race in SegmentItems/LogItems (apache/skywalking-agent-test-tool#65): when two processes reported their first segment for the same service name concurrently, the collector silently dropped one while both reporters got HTTP 200. sw_fork_support worked around that race by seeding the service name with a parent-only /ping request and waiting for the collector to register it before triggering the concurrent parent/child reports. The collector no longer needs the help, so the endpoint, the seed step and the extra expected segment are gone and the test is back to asserting exactly the cross-fork trace it is about. The upgrade also picks up the validator changes made since 2022, one of which affected us. LogAssert now sorts both the expected and the actual logs by their body text before comparing them pairwise (apache/skywalking-agent-test-tool#59), and the sort uses the raw expected string, so a matcher such as `text: not null` participates as the literal "not null". sw_loguru matches its two logging-module records that way while the records themselves led with the default layout's timestamp, so they sorted first and their placeholders last, inverting the pairing. Pin a layout that leads with the logger name, which sorts after the placeholders and orders the two records deterministically, and reorder the expected entries to match; SWFormatter is still exercised. Its expected.data.yml is the only one in the tree with a non-empty logItems block, so no other test is affected. Also refresh CLAUDE.md: supported Python and grpcio floor, the current plugin list, the agent's fork/prefork lifecycle, and the plugin-test validation notes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
**aim:**Added sorting in LogAssert to ensure consistent order when logs appear concurrently.
**changes:**added deterministic sorting to logsEquals in LogAssert to ensure that logs are compared consistently, regardless of the order in which they appear.
Logs are now sorted by endpoint → body.type → body.content before performing assertions.
add two new logs in test file