e2e: cover egress for non-HTTP traffic, in both speaking orders - #1024
Open
haiyanmeng wants to merge 1 commit into
Open
e2e: cover egress for non-HTTP traffic, in both speaking orders#1024haiyanmeng wants to merge 1 commit into
haiyanmeng wants to merge 1 commit into
Conversation
haiyanmeng
marked this pull request as draft
August 17, 2026 21:58
haiyanmeng
force-pushed
the
e2e-test-non-http
branch
2 times, most recently
from
August 17, 2026 23:32
7c94ebc to
8a30696
Compare
haiyanmeng
requested review from
Lior Lieberman (LiorLieberman) and
Bowei Du (bowei)
August 17, 2026 23:47
haiyanmeng
marked this pull request as ready for review
August 17, 2026 23:48
haiyanmeng
force-pushed
the
e2e-test-non-http
branch
from
August 17, 2026 23:52
8a30696 to
f48de8c
Compare
Collaborator
|
This is great, do we also need "client speaks first" non-HTTP protocol test case (do we have that already?). |
TestActorEgress and TestActorEgressHTTPS both have the client send the
first bytes, so neither notices an egress path that waits for downstream
data before dialing upstream, or that inspects those first bytes to
route. SSH does not work that way: the server announces itself on
accept.
Add that shape to the egress demo and the networking suite:
- /tcp on the egress demo opens a raw TCP connection and reads before
it writes, so an empty banner really does mean the peer stayed
silent rather than that the probe got the ordering wrong.
- bannerserver is an in-cluster TCP origin that echoes on two ports:
on one it greets on accept, on the other it stays silent until
spoken to. Two ports, because the server has to decide whether to
greet before it has read anything, so nothing in the request could
select the behavior -- only the address dialed can.
- TestActorEgressRawTCP dials both ports through one Actor and
requires, per port, both the CONNECT record and the byte counters on
the gateway's close-time access log, which is what shows the gateway
relayed the payload rather than the Actor having reached the origin
some other way.
- TestActorEgressSSH is the same probe against github.com:22.
haiyanmeng
force-pushed
the
e2e-test-non-http
branch
from
August 18, 2026 02:54
f48de8c to
f859011
Compare
Collaborator
Author
Done |
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.
This PR adds e2e test coverage for non-HTTP traffic, in both speaking orders. It adds the following:
/tcpon the egress demo opens a raw TCP connection and reads before it writes,so an empty banner really does mean the peer stayed silent rather than that the
probe got the ordering wrong.
bannerserveris an in-cluster TCP origin that greets on accept and then echoes.bannerserveris an in-cluster TCP origin that echoes on two ports:on one it greets on accept, on the other it stays silent until
spoken to. Two ports, because the server has to decide whether to
greet before it has read anything, so nothing in the request could
select the behavior -- only the address dialed can.
TestActorEgressRawTCPdials both ports through one Actor andrequires, per port, both the CONNECT record and the byte counters on
the gateway's close-time access log, which is what shows the gateway
relayed the payload rather than the Actor having reached the origin
some other way.
TestActorEgressSSHis the same probe againstgithub.com:22.Addresses #1017