Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(647)

Unified Diff: net/tools/quic/end_to_end_test.cc

Issue 1777083002: Make QuicSimpleServerStream supports multipart response body (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@quicsmaller
Patch Set: Rebased Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/tools/quic/end_to_end_test.cc
diff --git a/net/tools/quic/end_to_end_test.cc b/net/tools/quic/end_to_end_test.cc
index 441a5d9beac9e697c29560c1dd2d49d996f2b028..f761c907c8d78cd5f7bc8a656da09d291bfb9266 100644
--- a/net/tools/quic/end_to_end_test.cc
+++ b/net/tools/quic/end_to_end_test.cc
@@ -1948,10 +1948,13 @@ class ServerStreamWithErrorResponseBody : public QuicSimpleServerStream {
SpdyHeaderBlock headers;
headers[":status"] = "500";
headers["content-length"] = base::UintToString(response_body_.size());
+ response_.set_headers(headers);
+ response_.set_body(response_body_);
// This method must call CloseReadSide to cause the test case, StopReading
// is not sufficient.
ReliableQuicStreamPeer::CloseReadSide(this);
- SendHeadersAndBody(headers, response_body_);
+ next_state_ = SEND_HEADERS;
+ DoLoop();
}
string response_body_;
@@ -2120,6 +2123,44 @@ TEST_P(EndToEndTest, Trailers) {
EXPECT_EQ(trailers, client_->response_trailers());
}
+TEST_P(EndToEndTest, MultipartResponse) {
+ // Test QuicInMemoryCache::AddBidirectionalResponse with multipart response
+ // body works. However, this does not have full coverage since the client only
+ // supports request/response and not bidirectional streaming.
+ ASSERT_TRUE(Initialize());
+ client_->client()->WaitForCryptoHandshakeConfirmed();
+
+ // Set reordering to ensure that Trailers arriving before body is ok.
+ SetPacketSendDelay(QuicTime::Delta::FromMilliseconds(2));
+ SetReorderPercentage(30);
+
+ // Add a response with headers, body, and trailers.
+ const string kBody = "body content";
+
+ SpdyHeaderBlock headers;
+ headers[":status"] = "200";
+ headers[":version"] = "HTTP/1.1";
+ headers["content-length"] = IntToString(kBody.size());
+
+ SpdyHeaderBlock trailers;
+ trailers["some-trailing-header"] = "trailing-header-value";
+ std::vector<std::string> multipart_body;
+ multipart_body.push_back("hellooo!");
+ multipart_body.push_back("here's my second part.");
+ multipart_body.push_back("here's my third part.");
+
+ QuicInMemoryCache::GetInstance()->AddBidirectionalResponse(
+ "www.google.com", "/trailer_url", 200, multipart_body, trailers);
+
+ std::string expected;
+ for (auto s : multipart_body) {
+ expected.append(s);
+ }
+ EXPECT_EQ(expected, client_->SendSynchronousRequest("/trailer_url"));
+ EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
+ EXPECT_EQ(trailers, client_->response_trailers());
+}
+
class EndToEndTestServerPush : public EndToEndTest {
protected:
const size_t kNumMaxStreams = 10;
« no previous file with comments | « components/cronet/android/test/src/org/chromium/net/QuicTestServer.java ('k') | net/tools/quic/quic_in_memory_cache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698