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

Side by Side Diff: net/spdy/spdy_session_unittest.cc

Issue 2593063003: Add Socket::ReadIfReady() (Closed)
Patch Set: Rebased Created 3 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 unified diff | Download patch
« no previous file with comments | « net/spdy/spdy_session.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/spdy/spdy_session.h" 5 #include "net/spdy/spdy_session.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 5409 matching lines...) Expand 10 before | Expand all | Expand 10 after
5420 // Client id exceeding watermark. 5420 // Client id exceeding watermark.
5421 EXPECT_FALSE(session_->OnUnknownFrame(9, 0)); 5421 EXPECT_FALSE(session_->OnUnknownFrame(9, 0));
5422 5422
5423 session_->last_accepted_push_stream_id_ = 6; 5423 session_->last_accepted_push_stream_id_ = 6;
5424 // Low server (even) ids are fine. 5424 // Low server (even) ids are fine.
5425 EXPECT_TRUE(session_->OnUnknownFrame(2, 0)); 5425 EXPECT_TRUE(session_->OnUnknownFrame(2, 0));
5426 // Server id exceeding last accepted id. 5426 // Server id exceeding last accepted id.
5427 EXPECT_FALSE(session_->OnUnknownFrame(8, 0)); 5427 EXPECT_FALSE(session_->OnUnknownFrame(8, 0));
5428 } 5428 }
5429 5429
5430 enum ReadIfReadySupport {
5431 // ReadIfReady() field trial is enabled, and ReadIfReady() is implemented.
5432 READ_IF_READY_ENABLED_SUPPORTED,
5433 // ReadIfReady() field trial is enabled, but ReadIfReady() is unimplemented.
5434 READ_IF_READY_ENABLED_NOT_SUPPORTED,
5435 // ReadIfReady() field trial is disabled.
5436 READ_IF_READY_DISABLED,
5437 };
5438
5439 class SpdySessionReadIfReadyTest
5440 : public SpdySessionTest,
5441 public testing::WithParamInterface<ReadIfReadySupport> {
5442 public:
5443 void SetUp() override {
5444 if (GetParam() != READ_IF_READY_DISABLED)
5445 scoped_feature_list_.InitAndEnableFeature(Socket::kReadIfReadyExperiment);
5446 if (GetParam() == READ_IF_READY_ENABLED_SUPPORTED)
5447 session_deps_.socket_factory->set_enable_read_if_ready(true);
5448 SpdySessionTest::SetUp();
5449 }
5450
5451 private:
5452 base::test::ScopedFeatureList scoped_feature_list_;
5453 };
5454
5455 INSTANTIATE_TEST_CASE_P(/* no prefix */,
5456 SpdySessionReadIfReadyTest,
5457 testing::Values(READ_IF_READY_ENABLED_SUPPORTED,
5458 READ_IF_READY_ENABLED_NOT_SUPPORTED,
5459 READ_IF_READY_DISABLED));
5460
5461 // Tests basic functionality of ReadIfReady() when it is enabled or disabled.
5462 TEST_P(SpdySessionReadIfReadyTest, ReadIfReady) {
5463 SpdySerializedFrame req(
5464 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, HIGHEST, true));
5465 MockWrite writes[] = {
5466 CreateMockWrite(req, 0),
5467 };
5468
5469 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
5470 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
5471 MockRead reads[] = {
5472 CreateMockRead(resp, 1), CreateMockRead(body, 2),
5473 MockRead(ASYNC, 0, 3) // EOF
5474 };
5475
5476 session_deps_.host_resolver->set_synchronous_mode(true);
5477
5478 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
5479 session_deps_.socket_factory->AddSocketDataProvider(&data);
5480
5481 AddSSLSocketData();
5482
5483 CreateNetworkSession();
5484 CreateSecureSpdySession();
5485
5486 base::WeakPtr<SpdyStream> spdy_stream =
5487 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_,
5488 test_url_, HIGHEST, NetLogWithSource());
5489 ASSERT_TRUE(spdy_stream);
5490 EXPECT_EQ(0u, spdy_stream->stream_id());
5491 test::StreamDelegateDoNothing delegate(spdy_stream);
5492 spdy_stream->SetDelegate(&delegate);
5493
5494 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
5495 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5496
5497 base::RunLoop().RunUntilIdle();
5498
5499 EXPECT_FALSE(spdy_stream);
5500 EXPECT_EQ(1u, delegate.stream_id());
5501 }
5502
5430 class SendInitialSettingsOnNewSpdySessionTest : public SpdySessionTest { 5503 class SendInitialSettingsOnNewSpdySessionTest : public SpdySessionTest {
5431 protected: 5504 protected:
5432 void RunInitialSettingsTest(const SettingsMap expected_settings) { 5505 void RunInitialSettingsTest(const SettingsMap expected_settings) {
5433 session_deps_.host_resolver->set_synchronous_mode(true); 5506 session_deps_.host_resolver->set_synchronous_mode(true);
5434 5507
5435 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING)}; 5508 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING)};
5436 5509
5437 SpdySerializedFrame settings_frame( 5510 SpdySerializedFrame settings_frame(
5438 spdy_util_.ConstructSpdySettings(expected_settings)); 5511 spdy_util_.ConstructSpdySettings(expected_settings));
5439 MockWrite writes[] = {MockWrite(ASYNC, kHttp2ConnectionHeaderPrefix, 5512 MockWrite writes[] = {MockWrite(ASYNC, kHttp2ConnectionHeaderPrefix,
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after
6107 CreateSecureSpdySession(); 6180 CreateSecureSpdySession();
6108 6181
6109 // If the experiment is enabled, the SpdySession will close idle sockets. 6182 // If the experiment is enabled, the SpdySession will close idle sockets.
6110 EXPECT_EQ( 6183 EXPECT_EQ(
6111 experiment_enabled_ ? 0 : kNumIdleSockets - 1, 6184 experiment_enabled_ ? 0 : kNumIdleSockets - 1,
6112 http_session_->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL) 6185 http_session_->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)
6113 ->IdleSocketCount()); 6186 ->IdleSocketCount());
6114 } 6187 }
6115 6188
6116 } // namespace net 6189 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_session.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698