Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_proxy_client_socket.h" | 5 #include "net/spdy/spdy_proxy_client_socket.h" |
| 6 | 6 |
| 7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
| 8 #include "net/base/address_list.h" | 8 #include "net/base/address_list.h" |
| 9 #include "net/base/net_log.h" | 9 #include "net/base/net_log.h" |
| 10 #include "net/base/net_log_unittest.h" | 10 #include "net/base/net_log_unittest.h" |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 142 endpoint_host_port_pair_(kOriginHost, kOriginPort), | 142 endpoint_host_port_pair_(kOriginHost, kOriginPort), |
| 143 proxy_(ProxyServer::SCHEME_HTTPS, proxy_host_port_), | 143 proxy_(ProxyServer::SCHEME_HTTPS, proxy_host_port_), |
| 144 endpoint_host_port_proxy_pair_(endpoint_host_port_pair_, proxy_), | 144 endpoint_host_port_proxy_pair_(endpoint_host_port_pair_, proxy_), |
| 145 transport_params_(new TransportSocketParams(proxy_host_port_, | 145 transport_params_(new TransportSocketParams(proxy_host_port_, |
| 146 LOWEST, | 146 LOWEST, |
| 147 false, | 147 false, |
| 148 false)) { | 148 false)) { |
| 149 } | 149 } |
| 150 | 150 |
| 151 void SpdyProxyClientSocketTest::TearDown() { | 151 void SpdyProxyClientSocketTest::TearDown() { |
| 152 sock_.reset(NULL); | |
| 152 if (session_ != NULL) | 153 if (session_ != NULL) |
| 153 session_->spdy_session_pool()->CloseAllSessions(); | 154 session_->spdy_session_pool()->CloseAllSessions(); |
| 154 | 155 |
| 155 spdy::SpdyFramer::set_enable_compression_default(true); | 156 spdy::SpdyFramer::set_enable_compression_default(true); |
| 156 // Empty the current queue. | 157 // Empty the current queue. |
| 157 MessageLoop::current()->RunAllPending(); | 158 MessageLoop::current()->RunAllPending(); |
| 158 PlatformTest::TearDown(); | 159 PlatformTest::TearDown(); |
| 159 } | 160 } |
| 160 | 161 |
| 161 void SpdyProxyClientSocketTest::Initialize(MockRead* reads, | 162 void SpdyProxyClientSocketTest::Initialize(MockRead* reads, |
| (...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 605 | 606 |
| 606 Initialize(reads, arraysize(reads), writes, arraysize(writes)); | 607 Initialize(reads, arraysize(reads), writes, arraysize(writes)); |
| 607 | 608 |
| 608 net::AddressList addr; | 609 net::AddressList addr; |
| 609 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->GetPeerAddress(&addr)); | 610 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->GetPeerAddress(&addr)); |
| 610 | 611 |
| 611 AssertConnectSucceeds(); | 612 AssertConnectSucceeds(); |
| 612 EXPECT_TRUE(sock_->IsConnected()); | 613 EXPECT_TRUE(sock_->IsConnected()); |
| 613 EXPECT_EQ(OK, sock_->GetPeerAddress(&addr)); | 614 EXPECT_EQ(OK, sock_->GetPeerAddress(&addr)); |
| 614 | 615 |
| 616 Run(1); | |
| 617 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->GetPeerAddress(&addr)); | |
|
wtc
2011/12/02 23:16:40
Should we also do
EXPECT_FALSE(sock_->IsConnecte
Ryan Hamilton
2011/12/02 23:59:17
Done.
| |
| 618 | |
| 615 sock_->Disconnect(); | 619 sock_->Disconnect(); |
| 620 | |
| 616 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->GetPeerAddress(&addr)); | 621 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->GetPeerAddress(&addr)); |
| 617 } | 622 } |
| 618 | 623 |
| 619 // ----------- Write | 624 // ----------- Write |
| 620 | 625 |
| 621 TEST_F(SpdyProxyClientSocketTest, WriteSendsDataInDataFrame) { | 626 TEST_F(SpdyProxyClientSocketTest, WriteSendsDataInDataFrame) { |
| 622 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); | 627 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); |
| 623 scoped_ptr<spdy::SpdyFrame> msg1(ConstructBodyFrame(kMsg1, kLen1)); | 628 scoped_ptr<spdy::SpdyFrame> msg1(ConstructBodyFrame(kMsg1, kLen1)); |
| 624 scoped_ptr<spdy::SpdyFrame> msg2(ConstructBodyFrame(kMsg2, kLen2)); | 629 scoped_ptr<spdy::SpdyFrame> msg2(ConstructBodyFrame(kMsg2, kLen2)); |
| 625 MockWrite writes[] = { | 630 MockWrite writes[] = { |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1015 CreateMockRead(*resp, 1, true), | 1020 CreateMockRead(*resp, 1, true), |
| 1016 MockRead(true, 0, 2), // EOF | 1021 MockRead(true, 0, 2), // EOF |
| 1017 }; | 1022 }; |
| 1018 | 1023 |
| 1019 Initialize(reads, arraysize(reads), writes, arraysize(writes)); | 1024 Initialize(reads, arraysize(reads), writes, arraysize(writes)); |
| 1020 | 1025 |
| 1021 AssertConnectSucceeds(); | 1026 AssertConnectSucceeds(); |
| 1022 | 1027 |
| 1023 Run(1); | 1028 Run(1); |
| 1024 | 1029 |
| 1030 ASSERT_FALSE(sock_->IsConnected()); | |
| 1025 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL)); | 1031 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL)); |
| 1026 ASSERT_EQ(ERR_CONNECTION_CLOSED, sock_->Read(NULL, 1, NULL)); | 1032 |
| 1027 ASSERT_EQ(ERR_CONNECTION_CLOSED, sock_->Read(NULL, 1, NULL)); | 1033 ASSERT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->Read(NULL, 1, NULL)); |
| 1034 ASSERT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->Read(NULL, 1, NULL)); | |
| 1028 ASSERT_FALSE(sock_->IsConnectedAndIdle()); | 1035 ASSERT_FALSE(sock_->IsConnectedAndIdle()); |
| 1029 } | 1036 } |
| 1030 | 1037 |
| 1031 // Read pending when socket is closed should return 0 | 1038 // Read pending when socket is closed should return 0 |
| 1032 TEST_F(SpdyProxyClientSocketTest, PendingReadOnCloseReturnsZero) { | 1039 TEST_F(SpdyProxyClientSocketTest, PendingReadOnCloseReturnsZero) { |
| 1033 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); | 1040 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); |
| 1034 MockWrite writes[] = { | 1041 MockWrite writes[] = { |
| 1035 CreateMockWrite(*conn, 0, false), | 1042 CreateMockWrite(*conn, 0, false), |
| 1036 }; | 1043 }; |
| 1037 | 1044 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1089 CreateMockRead(*msg1, 2, true), | 1096 CreateMockRead(*msg1, 2, true), |
| 1090 MockRead(true, 0, 3), // EOF | 1097 MockRead(true, 0, 3), // EOF |
| 1091 }; | 1098 }; |
| 1092 | 1099 |
| 1093 Initialize(reads, arraysize(reads), writes, arraysize(writes)); | 1100 Initialize(reads, arraysize(reads), writes, arraysize(writes)); |
| 1094 | 1101 |
| 1095 AssertConnectSucceeds(); | 1102 AssertConnectSucceeds(); |
| 1096 | 1103 |
| 1097 Run(2); | 1104 Run(2); |
| 1098 | 1105 |
| 1099 AssertSyncReadEquals(kMsg1, kLen1); | 1106 scoped_refptr<IOBuffer> buf(new IOBuffer(kLen1)); |
| 1107 ASSERT_EQ(kLen1, sock_->Read(buf, kLen1, NULL)); | |
| 1108 ASSERT_EQ(std::string(kMsg1, kLen1), std::string(buf->data(), kLen1)); | |
| 1109 | |
| 1100 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL)); | 1110 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL)); |
| 1101 ASSERT_EQ(ERR_CONNECTION_CLOSED, sock_->Read(NULL, 1, NULL)); | 1111 ASSERT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->Read(NULL, 1, NULL)); |
| 1102 // Verify that read *still* returns ERR_CONNECTION_CLOSED | 1112 // Verify that read *still* returns ERR_CONNECTION_CLOSED |
| 1103 ASSERT_EQ(ERR_CONNECTION_CLOSED, sock_->Read(NULL, 1, NULL)); | 1113 ASSERT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->Read(NULL, 1, NULL)); |
| 1104 } | 1114 } |
| 1105 | 1115 |
| 1106 // Calling Write() on a closed socket is an error | 1116 // Calling Write() on a closed socket is an error |
| 1107 TEST_F(SpdyProxyClientSocketTest, WriteOnClosedStream) { | 1117 TEST_F(SpdyProxyClientSocketTest, WriteOnClosedStream) { |
| 1108 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); | 1118 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); |
| 1109 MockWrite writes[] = { | 1119 MockWrite writes[] = { |
| 1110 CreateMockWrite(*conn, 0, false), | 1120 CreateMockWrite(*conn, 0, false), |
| 1111 }; | 1121 }; |
| 1112 | 1122 |
| 1113 scoped_ptr<spdy::SpdyFrame> resp(ConstructConnectReplyFrame()); | 1123 scoped_ptr<spdy::SpdyFrame> resp(ConstructConnectReplyFrame()); |
| 1114 scoped_ptr<spdy::SpdyFrame> msg1(ConstructBodyFrame(kMsg1, kLen1)); | 1124 scoped_ptr<spdy::SpdyFrame> msg1(ConstructBodyFrame(kMsg1, kLen1)); |
| 1115 MockRead reads[] = { | 1125 MockRead reads[] = { |
| 1116 CreateMockRead(*resp, 1, true), | 1126 CreateMockRead(*resp, 1, true), |
| 1117 MockRead(true, 0, 2), // EOF | 1127 MockRead(true, 0, 2), // EOF |
| 1118 }; | 1128 }; |
| 1119 | 1129 |
| 1120 Initialize(reads, arraysize(reads), writes, arraysize(writes)); | 1130 Initialize(reads, arraysize(reads), writes, arraysize(writes)); |
| 1121 | 1131 |
| 1122 AssertConnectSucceeds(); | 1132 AssertConnectSucceeds(); |
| 1123 | 1133 |
| 1124 Run(1); // Read EOF which will close the stream | 1134 Run(1); // Read EOF which will close the stream |
| 1125 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1)); | 1135 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1)); |
| 1126 EXPECT_EQ(ERR_CONNECTION_CLOSED, sock_->Write(buf, buf->size(), NULL)); | 1136 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->Write(buf, buf->size(), NULL)); |
| 1127 } | 1137 } |
| 1128 | 1138 |
| 1129 // Calling Write() on a disconnected socket is an error | 1139 // Calling Write() on a disconnected socket is an error |
| 1130 TEST_F(SpdyProxyClientSocketTest, WriteOnDisconnectedSocket) { | 1140 TEST_F(SpdyProxyClientSocketTest, WriteOnDisconnectedSocket) { |
| 1131 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); | 1141 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); |
| 1132 MockWrite writes[] = { | 1142 MockWrite writes[] = { |
| 1133 CreateMockWrite(*conn, 0, false), | 1143 CreateMockWrite(*conn, 0, false), |
| 1134 }; | 1144 }; |
| 1135 | 1145 |
| 1136 scoped_ptr<spdy::SpdyFrame> resp(ConstructConnectReplyFrame()); | 1146 scoped_ptr<spdy::SpdyFrame> resp(ConstructConnectReplyFrame()); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1327 &write_callback_)); | 1337 &write_callback_)); |
| 1328 | 1338 |
| 1329 Run(2); | 1339 Run(2); |
| 1330 | 1340 |
| 1331 EXPECT_FALSE(sock_.get()); | 1341 EXPECT_FALSE(sock_.get()); |
| 1332 EXPECT_TRUE(read_callback.have_result()); | 1342 EXPECT_TRUE(read_callback.have_result()); |
| 1333 EXPECT_FALSE(write_callback_.have_result()); | 1343 EXPECT_FALSE(write_callback_.have_result()); |
| 1334 } | 1344 } |
| 1335 | 1345 |
| 1336 } // namespace net | 1346 } // namespace net |
| OLD | NEW |