http3: turning up more tests#15853
Conversation
danzh2010
left a comment
There was a problem hiding this comment.
Nice! Thanks a lot for enabling H3 in this test!
|
|
||
| void EnvoyQuicServerStream::maybeDecodeTrailers() { | ||
| if (sequencer()->IsClosed() && !FinishedReadingTrailers()) { | ||
| ASSERT(!received_trailers().empty()); |
There was a problem hiding this comment.
some h2 protocol test sends empty trailer?
There was a problem hiding this comment.
yeah, the autonomous upstream sends empty trailers for H2/H3 by default
|
|
||
| initialize(); | ||
| std::string response; | ||
| auto connection = createConnectionDriver( |
There was a problem hiding this comment.
RawConnectionDriver doesn't create a QUIC "connection".
There was a problem hiding this comment.
agreed, but I think we need a similar facility to send invalid packets for a quic connection to make sure it's handled gracefully.
| // Send client headers, a GoAway and then a body and ensure the full request and | ||
| // response are received. | ||
| TEST_P(Http2IntegrationTest, GoAway) { | ||
| EXCLUDE_DOWNSTREAM_HTTP3; // QuicHttpClientConnectionImpl::goAway NOT_REACHED_GCOVR_EXCL_LINE |
There was a problem hiding this comment.
QUICHE doesn't support client sending GOAWAY as there is no need. AFAIK Envoy doesn't support server push either, why Envoy needs this feature?
There was a problem hiding this comment.
That's fine. I think we should test that if the API is called we don't do anything harmful (it should be a no-op like it is for HTTP/1.1, rather than crashing) and we should also test to make sure if a client sends a goaway it is a no-op or treated as a protocol error and again doesn't crash.
There was a problem hiding this comment.
It also tests that GOAWAY does not cause existing streams to terminate.
There was a problem hiding this comment.
For HTTP/2. For HTTP/3 given it's a protocol error to send goaway client -> server, I think it probably would cause connection termination.
There was a problem hiding this comment.
It's not a protocol error, but QUICHE client doesn't support it because QUICHE doesn't do server push. I can change NOT_REACHED_GCOVR_EXCL_LINE to log error and return. It won't affect out-going request.
There was a problem hiding this comment.
isn't it a protocol error if an H3 server gets a goaway? cc @DavidSchinazi so I don't make things up =P
There was a problem hiding this comment.
@alyssawilk that's no longer true in IETF QUIC. Client-to-server GOAWAY tells the server to stop using server push. https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-goaway
There was a problem hiding this comment.
Ahh, thanks, I was looking at the wrong version of the spec, and Dan is of course just more up to date than me :-P
| // Send client headers, a GoAway and then a body and ensure the full request and | ||
| // response are received. | ||
| TEST_P(Http2IntegrationTest, GoAway) { | ||
| EXCLUDE_DOWNSTREAM_HTTP3; // QuicHttpClientConnectionImpl::goAway NOT_REACHED_GCOVR_EXCL_LINE |
|
|
||
| initialize(); | ||
| std::string response; | ||
| auto connection = createConnectionDriver( |
| TEST_P(Http2IntegrationTest, BadMagic) { | ||
| if (downstreamProtocol() == Http::CodecClient::Type::HTTP3) { | ||
| return; // protocol-specific framing. | ||
| } |
There was a problem hiding this comment.
EXCLUDE_DOWNSTREAM_HTTP3 means need to fix. This one doesn't?
There was a problem hiding this comment.
correct. I don't think H3 has the equivalent of the initial H2 magic, so we don't have to replicate this test for H3.
I'll add a better comment next I'm in that file.
There was a problem hiding this comment.
Or just rename the test BadHttp2Magic
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
| TEST_P(Http2IntegrationTest, BadMagic) { | ||
| if (downstreamProtocol() == Http::CodecClient::Type::HTTP3) { | ||
| return; // protocol-specific framing. | ||
| } |
There was a problem hiding this comment.
Or just rename the test BadHttp2Magic
| // Send client headers, a GoAway and then a body and ensure the full request and | ||
| // response are received. | ||
| TEST_P(Http2IntegrationTest, GoAway) { | ||
| EXCLUDE_DOWNSTREAM_HTTP3; // QuicHttpClientConnectionImpl::goAway NOT_REACHED_GCOVR_EXCL_LINE |
There was a problem hiding this comment.
It also tests that GOAWAY does not cause existing streams to terminate.
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
|
ok, re-excluded the tests which were failing TSAN. @yanavlasov PTAL? |
| EXCLUDE_DOWNSTREAM_HTTP3; // sort out timeouts | ||
| testRouterRequestAndResponseWithBody(10 * 1024 * 1024, 10 * 1024 * 1024, false, false, nullptr, | ||
| 10 * TSAN_TIMEOUT_FACTOR * TestUtility::DefaultTimeout); | ||
| TSAN_TIMEOUT_FACTOR * TestUtility::DefaultTimeout); |
There was a problem hiding this comment.
Do they simply timed out?
Mind adding TODO for me to re-enable it after #15865?
There was a problem hiding this comment.
Unsure. There's already a TODO to look into the excludes so I'd prefer to not do another push-and-ci cycle to update TODO if that's Ok?
There was a problem hiding this comment.
Fair enough. I'll keep in mind of these tests.
Risk Level: n/a Testing: yes Docs Changes: no Release Notes: no Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Risk Level: n/a
Testing: yes
Docs Changes: no
Release Notes: no