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

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

Issue 8771012: Fix crash bug in SpdyProxyClientSocket.GetPeerAddress where (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Final Created 9 years 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 | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
OLDNEW
« net/spdy/spdy_proxy_client_socket.cc ('K') | « net/spdy/spdy_proxy_client_socket.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698