Repository navigation
Conversation
Add a Shadow scenario that publishes a 1MiB message then a 1KiB message on different topics, and a log-timestamp check that the small message is not head-of-line blocked. Wire the go binary to the topic-streams pubsub fork (libp2p/specs#729) with WithTopicStreams enabled.
richard-ramos
approved these changes
Oct 14, 2026
Comment on lines
+161
to
+167
| if small_ts < large_ts: | ||
| print( | ||
| f" [OK] node{nid}: small at {small_ts.isoformat()} " | ||
| f"before large at {large_ts.isoformat()} " | ||
| f"(small led by {delta.total_seconds():.3f}s)" | ||
| ) | ||
| else: |
Contributor
There was a problem hiding this comment.
Is it safe to assume that the small message will arrive always before the large message here? Because topic stream should let messages progress independently so this arrival order IMO is not guaranteed.
Makes me wonder if this test should force the large message transfer to be throtled, while the small message is sent and verify the small message arrived (since large transfer would be still incomplete)
gmelodie
approved these changes
Oct 26, 2026
Comment on lines
+27
to
+53
| def parse_args() -> argparse.Namespace: | ||
| parser = argparse.ArgumentParser( | ||
| description=( | ||
| "Validate that the small message arrived before the large message " | ||
| "on every non-publisher node (no cross-topic HoL blocking)." | ||
| ) | ||
| ) | ||
| parser.add_argument( | ||
| "shadow_output", | ||
| help="Path to the Shadow output directory (the one containing the hosts/ folder).", | ||
| ) | ||
| parser.add_argument( | ||
| "--large-id", | ||
| default=LARGE_MESSAGE_ID, | ||
| help=f"Message id of the large message (default: {LARGE_MESSAGE_ID}).", | ||
| ) | ||
| parser.add_argument( | ||
| "--small-id", | ||
| default=SMALL_MESSAGE_ID, | ||
| help=f"Message id of the small message (default: {SMALL_MESSAGE_ID}).", | ||
| ) | ||
| parser.add_argument( | ||
| "--publisher", | ||
| default=PUBLISHER_NODE_ID, | ||
| help=f"Node id of the publisher to exclude (default: {PUBLISHER_NODE_ID}).", | ||
| ) | ||
| return parser.parse_args() |
There was a problem hiding this comment.
I don't think we need a cli for the test
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.
Add a Shadow scenario that publishes a 1MiB message then a 1KiB message on different topics, and a log-timestamp check that the small message is not head-of-line blocked. Wire the go binary to the topic-streams pubsub fork (libp2p/specs#729) with WithTopicStreams enabled.
Test will fail if a message is HoL blocked.