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

Unified Diff: net/quic/chromium/quic_chromium_client_session_test.cc

Issue 2848923004: Move the "wait for QUIC handshake confirmation" logic to QuicChromiumClientSession::StreamRequest (Closed)
Patch Set: fix Created 3 years, 8 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
« no previous file with comments | « net/quic/chromium/quic_chromium_client_session.cc ('k') | net/quic/chromium/quic_http_stream.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/chromium/quic_chromium_client_session_test.cc
diff --git a/net/quic/chromium/quic_chromium_client_session_test.cc b/net/quic/chromium/quic_chromium_client_session_test.cc
index 3d85ddd620beefd2d2fa8e524bafa33dc2856f1c..2ac521305b457e265ea593dcd845e8d1fbf41ac8 100644
--- a/net/quic/chromium/quic_chromium_client_session_test.cc
+++ b/net/quic/chromium/quic_chromium_client_session_test.cc
@@ -207,7 +207,7 @@ TEST_P(QuicChromiumClientSessionTest, StreamRequest) {
// Request a stream and verify that a stream was created.
std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
- session_->CreateStreamRequest();
+ session_->CreateStreamRequest(/*requires_confirmation=*/false);
TestCompletionCallback callback;
ASSERT_EQ(OK, stream_request->StartRequest(callback.callback()));
EXPECT_TRUE(stream_request->ReleaseStream() != nullptr);
@@ -217,6 +217,54 @@ TEST_P(QuicChromiumClientSessionTest, StreamRequest) {
EXPECT_TRUE(quic_data.AllWriteDataConsumed());
}
+TEST_P(QuicChromiumClientSessionTest, ConfirmationRequiredStreamRequest) {
+ MockQuicData quic_data;
+ quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
+ quic_data.AddRead(ASYNC, ERR_IO_PENDING);
+ quic_data.AddRead(ASYNC, OK); // EOF
+ quic_data.AddSocketDataToFactory(&socket_factory_);
+
+ Initialize();
+ CompleteCryptoHandshake();
+
+ // Request a stream and verify that a stream was created.
+ std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
+ session_->CreateStreamRequest(/*requires_confirmation=*/true);
+ TestCompletionCallback callback;
+ ASSERT_EQ(OK, stream_request->StartRequest(callback.callback()));
+ EXPECT_TRUE(stream_request->ReleaseStream() != nullptr);
+
+ quic_data.Resume();
+ EXPECT_TRUE(quic_data.AllReadDataConsumed());
+ EXPECT_TRUE(quic_data.AllWriteDataConsumed());
+}
+
+TEST_P(QuicChromiumClientSessionTest, StreamRequestBeforeConfirmation) {
+ MockQuicData quic_data;
+ quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
+ quic_data.AddRead(ASYNC, ERR_IO_PENDING);
+ quic_data.AddRead(ASYNC, OK); // EOF
+ quic_data.AddSocketDataToFactory(&socket_factory_);
+
+ Initialize();
+
+ // Request a stream and verify that a stream was created.
+ std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
+ session_->CreateStreamRequest(/*requires_confirmation=*/true);
+ TestCompletionCallback callback;
+ ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
+
+ CompleteCryptoHandshake();
+
+ EXPECT_THAT(callback.WaitForResult(), IsOk());
+
+ EXPECT_TRUE(stream_request->ReleaseStream() != nullptr);
+
+ quic_data.Resume();
+ EXPECT_TRUE(quic_data.AllReadDataConsumed());
+ EXPECT_TRUE(quic_data.AllWriteDataConsumed());
+}
+
TEST_P(QuicChromiumClientSessionTest, CancelStreamRequestBeforeRelease) {
MockQuicData quic_data;
quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
@@ -231,7 +279,7 @@ TEST_P(QuicChromiumClientSessionTest, CancelStreamRequestBeforeRelease) {
// Request a stream and cancel it without releasing the stream.
std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
- session_->CreateStreamRequest();
+ session_->CreateStreamRequest(/*requires_confirmation=*/false);
TestCompletionCallback callback;
ASSERT_EQ(OK, stream_request->StartRequest(callback.callback()));
stream_request.reset();
@@ -263,7 +311,7 @@ TEST_P(QuicChromiumClientSessionTest, AsyncStreamRequest) {
// Request a stream and verify that it's pending.
std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
- session_->CreateStreamRequest();
+ session_->CreateStreamRequest(/*requires_confirmation=*/false);
TestCompletionCallback callback;
ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
@@ -301,7 +349,7 @@ TEST_P(QuicChromiumClientSessionTest, CancelPendingStreamRequest) {
// Request a stream and verify that it's pending.
std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
- session_->CreateStreamRequest();
+ session_->CreateStreamRequest(/*requires_confirmation=*/false);
TestCompletionCallback callback;
ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
@@ -332,7 +380,7 @@ TEST_P(QuicChromiumClientSessionTest, ConnectionCloseBeforeStreamRequest) {
// Request a stream and verify that it failed.
std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
- session_->CreateStreamRequest();
+ session_->CreateStreamRequest(/*requires_confirmation=*/false);
TestCompletionCallback callback;
ASSERT_EQ(ERR_CONNECTION_CLOSED,
stream_request->StartRequest(callback.callback()));
@@ -341,6 +389,31 @@ TEST_P(QuicChromiumClientSessionTest, ConnectionCloseBeforeStreamRequest) {
EXPECT_TRUE(quic_data.AllWriteDataConsumed());
}
+TEST_P(QuicChromiumClientSessionTest, ConnectionCloseBeforeHandshakeConfirmed) {
+ MockQuicData quic_data;
+ quic_data.AddRead(ASYNC, ERR_IO_PENDING);
+ quic_data.AddRead(server_maker_.MakeConnectionClosePacket(1));
+ quic_data.AddSocketDataToFactory(&socket_factory_);
+
+ Initialize();
+
+ // Request a stream and verify that it's pending.
+ std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
+ session_->CreateStreamRequest(/*requires_confirmation=*/true);
+ TestCompletionCallback callback;
+ ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
+
+ // Close the connection and verify that the StreamRequest completes with
+ // an error.
+ quic_data.Resume();
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_CLOSED));
+
+ EXPECT_TRUE(quic_data.AllReadDataConsumed());
+ EXPECT_TRUE(quic_data.AllWriteDataConsumed());
+}
+
TEST_P(QuicChromiumClientSessionTest, ConnectionCloseWithPendingStreamRequest) {
MockQuicData quic_data;
quic_data.AddWrite(client_maker_.MakeInitialSettingsPacket(1, nullptr));
@@ -361,7 +434,7 @@ TEST_P(QuicChromiumClientSessionTest, ConnectionCloseWithPendingStreamRequest) {
// Request a stream and verify that it's pending.
std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
- session_->CreateStreamRequest();
+ session_->CreateStreamRequest(/*requires_confirmation=*/false);
TestCompletionCallback callback;
ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
@@ -728,7 +801,7 @@ TEST_P(QuicChromiumClientSessionTest, MaxNumStreamsViaRequest) {
}
std::unique_ptr<QuicChromiumClientSession::StreamRequest> stream_request =
- session_->CreateStreamRequest();
+ session_->CreateStreamRequest(/*requires_confirmation=*/false);
TestCompletionCallback callback;
ASSERT_EQ(ERR_IO_PENDING, stream_request->StartRequest(callback.callback()));
« no previous file with comments | « net/quic/chromium/quic_chromium_client_session.cc ('k') | net/quic/chromium/quic_http_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698