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

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: Really final, I hope2 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
« no previous file with comments | « net/spdy/spdy_proxy_client_socket.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) 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
618 EXPECT_FALSE(sock_->IsConnected());
619 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->GetPeerAddress(&addr));
620
615 sock_->Disconnect(); 621 sock_->Disconnect();
622
616 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->GetPeerAddress(&addr)); 623 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->GetPeerAddress(&addr));
617 } 624 }
618 625
619 // ----------- Write 626 // ----------- Write
620 627
621 TEST_F(SpdyProxyClientSocketTest, WriteSendsDataInDataFrame) { 628 TEST_F(SpdyProxyClientSocketTest, WriteSendsDataInDataFrame) {
622 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); 629 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame());
623 scoped_ptr<spdy::SpdyFrame> msg1(ConstructBodyFrame(kMsg1, kLen1)); 630 scoped_ptr<spdy::SpdyFrame> msg1(ConstructBodyFrame(kMsg1, kLen1));
624 scoped_ptr<spdy::SpdyFrame> msg2(ConstructBodyFrame(kMsg2, kLen2)); 631 scoped_ptr<spdy::SpdyFrame> msg2(ConstructBodyFrame(kMsg2, kLen2));
625 MockWrite writes[] = { 632 MockWrite writes[] = {
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 CreateMockRead(*resp, 1, true), 1022 CreateMockRead(*resp, 1, true),
1016 MockRead(true, 0, 2), // EOF 1023 MockRead(true, 0, 2), // EOF
1017 }; 1024 };
1018 1025
1019 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1026 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1020 1027
1021 AssertConnectSucceeds(); 1028 AssertConnectSucceeds();
1022 1029
1023 Run(1); 1030 Run(1);
1024 1031
1032 ASSERT_FALSE(sock_->IsConnected());
1025 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL)); 1033 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL));
1026 ASSERT_EQ(ERR_CONNECTION_CLOSED, sock_->Read(NULL, 1, NULL)); 1034 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL));
1027 ASSERT_EQ(ERR_CONNECTION_CLOSED, sock_->Read(NULL, 1, NULL)); 1035 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL));
1028 ASSERT_FALSE(sock_->IsConnectedAndIdle()); 1036 ASSERT_FALSE(sock_->IsConnectedAndIdle());
1029 } 1037 }
1030 1038
1031 // Read pending when socket is closed should return 0 1039 // Read pending when socket is closed should return 0
1032 TEST_F(SpdyProxyClientSocketTest, PendingReadOnCloseReturnsZero) { 1040 TEST_F(SpdyProxyClientSocketTest, PendingReadOnCloseReturnsZero) {
1033 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); 1041 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame());
1034 MockWrite writes[] = { 1042 MockWrite writes[] = {
1035 CreateMockWrite(*conn, 0, false), 1043 CreateMockWrite(*conn, 0, false),
1036 }; 1044 };
1037 1045
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1089 CreateMockRead(*msg1, 2, true), 1097 CreateMockRead(*msg1, 2, true),
1090 MockRead(true, 0, 3), // EOF 1098 MockRead(true, 0, 3), // EOF
1091 }; 1099 };
1092 1100
1093 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1101 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1094 1102
1095 AssertConnectSucceeds(); 1103 AssertConnectSucceeds();
1096 1104
1097 Run(2); 1105 Run(2);
1098 1106
1099 AssertSyncReadEquals(kMsg1, kLen1); 1107 ASSERT_FALSE(sock_->IsConnected());
1108 scoped_refptr<IOBuffer> buf(new IOBuffer(kLen1));
1109 ASSERT_EQ(kLen1, sock_->Read(buf, kLen1, NULL));
1110 ASSERT_EQ(std::string(kMsg1, kLen1), std::string(buf->data(), kLen1));
1111
1100 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL)); 1112 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL));
1101 ASSERT_EQ(ERR_CONNECTION_CLOSED, sock_->Read(NULL, 1, NULL)); 1113 ASSERT_EQ(0, sock_->Read(NULL, 1, NULL));
1102 // Verify that read *still* returns ERR_CONNECTION_CLOSED 1114 sock_->Disconnect();
1103 ASSERT_EQ(ERR_CONNECTION_CLOSED, sock_->Read(NULL, 1, NULL)); 1115 ASSERT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->Read(NULL, 1, NULL));
1104 } 1116 }
1105 1117
1106 // Calling Write() on a closed socket is an error 1118 // Calling Write() on a closed socket is an error
1107 TEST_F(SpdyProxyClientSocketTest, WriteOnClosedStream) { 1119 TEST_F(SpdyProxyClientSocketTest, WriteOnClosedStream) {
1108 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); 1120 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame());
1109 MockWrite writes[] = { 1121 MockWrite writes[] = {
1110 CreateMockWrite(*conn, 0, false), 1122 CreateMockWrite(*conn, 0, false),
1111 }; 1123 };
1112 1124
1113 scoped_ptr<spdy::SpdyFrame> resp(ConstructConnectReplyFrame()); 1125 scoped_ptr<spdy::SpdyFrame> resp(ConstructConnectReplyFrame());
1114 scoped_ptr<spdy::SpdyFrame> msg1(ConstructBodyFrame(kMsg1, kLen1)); 1126 scoped_ptr<spdy::SpdyFrame> msg1(ConstructBodyFrame(kMsg1, kLen1));
1115 MockRead reads[] = { 1127 MockRead reads[] = {
1116 CreateMockRead(*resp, 1, true), 1128 CreateMockRead(*resp, 1, true),
1117 MockRead(true, 0, 2), // EOF 1129 MockRead(true, 0, 2), // EOF
1118 }; 1130 };
1119 1131
1120 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1132 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1121 1133
1122 AssertConnectSucceeds(); 1134 AssertConnectSucceeds();
1123 1135
1124 Run(1); // Read EOF which will close the stream 1136 Run(1); // Read EOF which will close the stream
1125 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1)); 1137 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1));
1126 EXPECT_EQ(ERR_CONNECTION_CLOSED, sock_->Write(buf, buf->size(), NULL)); 1138 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, sock_->Write(buf, buf->size(), NULL));
1127 } 1139 }
1128 1140
1129 // Calling Write() on a disconnected socket is an error 1141 // Calling Write() on a disconnected socket is an error
1130 TEST_F(SpdyProxyClientSocketTest, WriteOnDisconnectedSocket) { 1142 TEST_F(SpdyProxyClientSocketTest, WriteOnDisconnectedSocket) {
1131 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame()); 1143 scoped_ptr<spdy::SpdyFrame> conn(ConstructConnectRequestFrame());
1132 MockWrite writes[] = { 1144 MockWrite writes[] = {
1133 CreateMockWrite(*conn, 0, false), 1145 CreateMockWrite(*conn, 0, false),
1134 }; 1146 };
1135 1147
1136 scoped_ptr<spdy::SpdyFrame> resp(ConstructConnectReplyFrame()); 1148 scoped_ptr<spdy::SpdyFrame> resp(ConstructConnectReplyFrame());
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
1327 &write_callback_)); 1339 &write_callback_));
1328 1340
1329 Run(2); 1341 Run(2);
1330 1342
1331 EXPECT_FALSE(sock_.get()); 1343 EXPECT_FALSE(sock_.get());
1332 EXPECT_TRUE(read_callback.have_result()); 1344 EXPECT_TRUE(read_callback.have_result());
1333 EXPECT_FALSE(write_callback_.have_result()); 1345 EXPECT_FALSE(write_callback_.have_result());
1334 } 1346 }
1335 1347
1336 } // namespace net 1348 } // namespace net
OLDNEW
« no previous file with comments | « 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