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

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

Issue 15829004: Update net/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: license twerk Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « net/spdy/spdy_proxy_client_socket.cc ('k') | net/spdy/spdy_session.cc » ('j') | 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_proxy_client_socket.h" 5 #include "net/spdy/spdy_proxy_client_socket.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "net/base/address_list.h" 10 #include "net/base/address_list.h"
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 transport_params_(new TransportSocketParams(proxy_host_port_, 158 transport_params_(new TransportSocketParams(proxy_host_port_,
159 LOWEST, 159 LOWEST,
160 false, 160 false,
161 false, 161 false,
162 OnHostResolutionCallback())) { 162 OnHostResolutionCallback())) {
163 session_deps_.net_log = net_log_.bound().net_log(); 163 session_deps_.net_log = net_log_.bound().net_log();
164 } 164 }
165 165
166 void SpdyProxyClientSocketTest::TearDown() { 166 void SpdyProxyClientSocketTest::TearDown() {
167 sock_.reset(NULL); 167 sock_.reset(NULL);
168 if (session_ != NULL) 168 if (session_.get() != NULL)
169 session_->spdy_session_pool()->CloseAllSessions(); 169 session_->spdy_session_pool()->CloseAllSessions();
170 170
171 // Empty the current queue. 171 // Empty the current queue.
172 base::MessageLoop::current()->RunUntilIdle(); 172 base::MessageLoop::current()->RunUntilIdle();
173 PlatformTest::TearDown(); 173 PlatformTest::TearDown();
174 } 174 }
175 175
176 void SpdyProxyClientSocketTest::Initialize(MockRead* reads, 176 void SpdyProxyClientSocketTest::Initialize(MockRead* reads,
177 size_t reads_count, 177 size_t reads_count,
178 MockWrite* writes, 178 MockWrite* writes,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 void SpdyProxyClientSocketTest::AssertConnectionEstablished() { 242 void SpdyProxyClientSocketTest::AssertConnectionEstablished() {
243 const HttpResponseInfo* response = sock_->GetConnectResponseInfo(); 243 const HttpResponseInfo* response = sock_->GetConnectResponseInfo();
244 ASSERT_TRUE(response != NULL); 244 ASSERT_TRUE(response != NULL);
245 ASSERT_EQ(200, response->headers->response_code()); 245 ASSERT_EQ(200, response->headers->response_code());
246 ASSERT_EQ("Connection Established", response->headers->GetStatusText()); 246 ASSERT_EQ("Connection Established", response->headers->GetStatusText());
247 } 247 }
248 248
249 void SpdyProxyClientSocketTest::AssertSyncReadEquals(const char* data, 249 void SpdyProxyClientSocketTest::AssertSyncReadEquals(const char* data,
250 int len) { 250 int len) {
251 scoped_refptr<IOBuffer> buf(new IOBuffer(len)); 251 scoped_refptr<IOBuffer> buf(new IOBuffer(len));
252 ASSERT_EQ(len, sock_->Read(buf, len, CompletionCallback())); 252 ASSERT_EQ(len, sock_->Read(buf.get(), len, CompletionCallback()));
253 ASSERT_EQ(std::string(data, len), std::string(buf->data(), len)); 253 ASSERT_EQ(std::string(data, len), std::string(buf->data(), len));
254 ASSERT_TRUE(sock_->IsConnected()); 254 ASSERT_TRUE(sock_->IsConnected());
255 } 255 }
256 256
257 void SpdyProxyClientSocketTest::AssertAsyncReadEquals(const char* data, 257 void SpdyProxyClientSocketTest::AssertAsyncReadEquals(const char* data,
258 int len) { 258 int len) {
259 data_->StopAfter(1); 259 data_->StopAfter(1);
260 // Issue the read, which will be completed asynchronously 260 // Issue the read, which will be completed asynchronously
261 scoped_refptr<IOBuffer> buf(new IOBuffer(len)); 261 scoped_refptr<IOBuffer> buf(new IOBuffer(len));
262 ASSERT_EQ(ERR_IO_PENDING, sock_->Read(buf, len, read_callback_.callback())); 262 ASSERT_EQ(ERR_IO_PENDING,
263 sock_->Read(buf.get(), len, read_callback_.callback()));
263 EXPECT_TRUE(sock_->IsConnected()); 264 EXPECT_TRUE(sock_->IsConnected());
264 data_->Run(); 265 data_->Run();
265 266
266 EXPECT_TRUE(sock_->IsConnected()); 267 EXPECT_TRUE(sock_->IsConnected());
267 268
268 // Now the read will return 269 // Now the read will return
269 EXPECT_EQ(len, read_callback_.WaitForResult()); 270 EXPECT_EQ(len, read_callback_.WaitForResult());
270 ASSERT_EQ(std::string(data, len), std::string(buf->data(), len)); 271 ASSERT_EQ(std::string(data, len), std::string(buf->data(), len));
271 } 272 }
272 273
273 void SpdyProxyClientSocketTest::AssertReadStarts(const char* data, 274 void SpdyProxyClientSocketTest::AssertReadStarts(const char* data,
274 int len) { 275 int len) {
275 data_->StopAfter(1); 276 data_->StopAfter(1);
276 // Issue the read, which will be completed asynchronously 277 // Issue the read, which will be completed asynchronously
277 read_buf_ = new IOBuffer(len); 278 read_buf_ = new IOBuffer(len);
278 ASSERT_EQ(ERR_IO_PENDING, 279 ASSERT_EQ(ERR_IO_PENDING,
279 sock_->Read(read_buf_, len, read_callback_.callback())); 280 sock_->Read(read_buf_.get(), len, read_callback_.callback()));
280 EXPECT_TRUE(sock_->IsConnected()); 281 EXPECT_TRUE(sock_->IsConnected());
281 } 282 }
282 283
283 void SpdyProxyClientSocketTest::AssertReadReturns(const char* data, 284 void SpdyProxyClientSocketTest::AssertReadReturns(const char* data,
284 int len) { 285 int len) {
285 EXPECT_TRUE(sock_->IsConnected()); 286 EXPECT_TRUE(sock_->IsConnected());
286 287
287 // Now the read will return 288 // Now the read will return
288 EXPECT_EQ(len, read_callback_.WaitForResult()); 289 EXPECT_EQ(len, read_callback_.WaitForResult());
289 ASSERT_EQ(std::string(data, len), std::string(read_buf_->data(), len)); 290 ASSERT_EQ(std::string(data, len), std::string(read_buf_->data(), len));
290 } 291 }
291 292
292 void SpdyProxyClientSocketTest::AssertAsyncWriteSucceeds(const char* data, 293 void SpdyProxyClientSocketTest::AssertAsyncWriteSucceeds(const char* data,
293 int len) { 294 int len) {
294 AssertWriteReturns(data, len, ERR_IO_PENDING); 295 AssertWriteReturns(data, len, ERR_IO_PENDING);
295 data_->RunFor(1); 296 data_->RunFor(1);
296 AssertWriteLength(len); 297 AssertWriteLength(len);
297 } 298 }
298 299
299 void SpdyProxyClientSocketTest::AssertWriteReturns(const char* data, 300 void SpdyProxyClientSocketTest::AssertWriteReturns(const char* data,
300 int len, 301 int len,
301 int rv) { 302 int rv) {
302 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(data, len)); 303 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(data, len));
303 EXPECT_EQ(rv, sock_->Write(buf, buf->size(), write_callback_.callback())); 304 EXPECT_EQ(rv,
305 sock_->Write(buf.get(), buf->size(), write_callback_.callback()));
304 } 306 }
305 307
306 void SpdyProxyClientSocketTest::AssertWriteLength(int len) { 308 void SpdyProxyClientSocketTest::AssertWriteLength(int len) {
307 EXPECT_EQ(len, write_callback_.WaitForResult()); 309 EXPECT_EQ(len, write_callback_.WaitForResult());
308 } 310 }
309 311
310 void SpdyProxyClientSocketTest::AssertAsyncWriteWithReadsSucceeds( 312 void SpdyProxyClientSocketTest::AssertAsyncWriteWithReadsSucceeds(
311 const char* data, int len, int num_reads) { 313 const char* data, int len, int num_reads) {
312 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(data, len)); 314 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(data, len));
313 315
314 EXPECT_EQ(ERR_IO_PENDING, sock_->Write(buf, buf->size(), 316 EXPECT_EQ(ERR_IO_PENDING,
315 write_callback_.callback())); 317 sock_->Write(buf.get(), buf->size(), write_callback_.callback()));
316 318
317 for (int i = 0; i < num_reads; i++) { 319 for (int i = 0; i < num_reads; i++) {
318 Run(1); 320 Run(1);
319 AssertSyncReadEquals(kMsg2, kLen2); 321 AssertSyncReadEquals(kMsg2, kLen2);
320 } 322 }
321 323
322 write_callback_.WaitForResult(); 324 write_callback_.WaitForResult();
323 } 325 }
324 326
325 // Constructs a standard SPDY SYN_STREAM frame for a CONNECT request. 327 // Constructs a standard SPDY SYN_STREAM frame for a CONNECT request.
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 MockRead(ASYNC, 0, 2), // EOF 556 MockRead(ASYNC, 0, 2), // EOF
555 }; 557 };
556 558
557 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 559 Initialize(reads, arraysize(reads), writes, arraysize(writes));
558 560
559 AssertConnectFails(ERR_HTTPS_PROXY_TUNNEL_RESPONSE); 561 AssertConnectFails(ERR_HTTPS_PROXY_TUNNEL_RESPONSE);
560 562
561 const HttpResponseInfo* response = sock_->GetConnectResponseInfo(); 563 const HttpResponseInfo* response = sock_->GetConnectResponseInfo();
562 ASSERT_TRUE(response != NULL); 564 ASSERT_TRUE(response != NULL);
563 565
564 const HttpResponseHeaders* headers = response->headers; 566 const HttpResponseHeaders* headers = response->headers.get();
565 ASSERT_EQ(302, headers->response_code()); 567 ASSERT_EQ(302, headers->response_code());
566 ASSERT_FALSE(headers->HasHeader("set-cookie")); 568 ASSERT_FALSE(headers->HasHeader("set-cookie"));
567 ASSERT_TRUE(headers->HasHeaderValue("content-length", "0")); 569 ASSERT_TRUE(headers->HasHeaderValue("content-length", "0"));
568 570
569 std::string location; 571 std::string location;
570 ASSERT_TRUE(headers->IsRedirect(&location)); 572 ASSERT_TRUE(headers->IsRedirect(&location));
571 ASSERT_EQ(location, kRedirectUrl); 573 ASSERT_EQ(location, kRedirectUrl);
572 } 574 }
573 575
574 TEST_P(SpdyProxyClientSocketTest, ConnectFails) { 576 TEST_P(SpdyProxyClientSocketTest, ConnectFails) {
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 }; 694 };
693 695
694 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 696 Initialize(reads, arraysize(reads), writes, arraysize(writes));
695 697
696 AssertConnectSucceeds(); 698 AssertConnectSucceeds();
697 699
698 std::string big_data(kMaxSpdyFrameChunkSize * 3, 'x'); 700 std::string big_data(kMaxSpdyFrameChunkSize * 3, 'x');
699 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(big_data.data(), 701 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(big_data.data(),
700 big_data.length())); 702 big_data.length()));
701 703
702 EXPECT_EQ(ERR_IO_PENDING, sock_->Write(buf, buf->size(), 704 EXPECT_EQ(ERR_IO_PENDING,
703 write_callback_.callback())); 705 sock_->Write(buf.get(), buf->size(), write_callback_.callback()));
704 data_->RunFor(3); 706 data_->RunFor(3);
705 707
706 EXPECT_EQ(buf->size(), write_callback_.WaitForResult()); 708 EXPECT_EQ(buf->size(), write_callback_.WaitForResult());
707 } 709 }
708 710
709 // ----------- Read 711 // ----------- Read
710 712
711 TEST_P(SpdyProxyClientSocketTest, ReadReadsDataInDataFrame) { 713 TEST_P(SpdyProxyClientSocketTest, ReadReadsDataInDataFrame) {
712 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame()); 714 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame());
713 MockWrite writes[] = { 715 MockWrite writes[] = {
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 AssertConnectSucceeds(); 896 AssertConnectSucceeds();
895 897
896 Run(1); // SpdySession consumes the next read and sends it to 898 Run(1); // SpdySession consumes the next read and sends it to
897 // sock_ to be buffered. 899 // sock_ to be buffered.
898 // The payload from the single large data frame will be read across 900 // The payload from the single large data frame will be read across
899 // two different reads. 901 // two different reads.
900 AssertSyncReadEquals(kMsg33, kLen33); 902 AssertSyncReadEquals(kMsg33, kLen33);
901 903
902 // Now attempt to do a read of more data than remains buffered 904 // Now attempt to do a read of more data than remains buffered
903 scoped_refptr<IOBuffer> buf(new IOBuffer(kLen33)); 905 scoped_refptr<IOBuffer> buf(new IOBuffer(kLen33));
904 ASSERT_EQ(kLen3, sock_->Read(buf, kLen33, read_callback_.callback())); 906 ASSERT_EQ(kLen3, sock_->Read(buf.get(), kLen33, read_callback_.callback()));
905 ASSERT_EQ(std::string(kMsg3, kLen3), std::string(buf->data(), kLen3)); 907 ASSERT_EQ(std::string(kMsg3, kLen3), std::string(buf->data(), kLen3));
906 ASSERT_TRUE(sock_->IsConnected()); 908 ASSERT_TRUE(sock_->IsConnected());
907 } 909 }
908 910
909 TEST_P(SpdyProxyClientSocketTest, ReadAuthResponseBody) { 911 TEST_P(SpdyProxyClientSocketTest, ReadAuthResponseBody) {
910 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame()); 912 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame());
911 MockWrite writes[] = { 913 MockWrite writes[] = {
912 CreateMockWrite(*conn, 0, SYNCHRONOUS), 914 CreateMockWrite(*conn, 0, SYNCHRONOUS),
913 }; 915 };
914 916
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 }; 1122 };
1121 1123
1122 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1124 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1123 1125
1124 AssertConnectSucceeds(); 1126 AssertConnectSucceeds();
1125 1127
1126 Run(2); 1128 Run(2);
1127 1129
1128 ASSERT_FALSE(sock_->IsConnected()); 1130 ASSERT_FALSE(sock_->IsConnected());
1129 scoped_refptr<IOBuffer> buf(new IOBuffer(kLen1)); 1131 scoped_refptr<IOBuffer> buf(new IOBuffer(kLen1));
1130 ASSERT_EQ(kLen1, sock_->Read(buf, kLen1, CompletionCallback())); 1132 ASSERT_EQ(kLen1, sock_->Read(buf.get(), kLen1, CompletionCallback()));
1131 ASSERT_EQ(std::string(kMsg1, kLen1), std::string(buf->data(), kLen1)); 1133 ASSERT_EQ(std::string(kMsg1, kLen1), std::string(buf->data(), kLen1));
1132 1134
1133 ASSERT_EQ(0, sock_->Read(NULL, 1, CompletionCallback())); 1135 ASSERT_EQ(0, sock_->Read(NULL, 1, CompletionCallback()));
1134 ASSERT_EQ(0, sock_->Read(NULL, 1, CompletionCallback())); 1136 ASSERT_EQ(0, sock_->Read(NULL, 1, CompletionCallback()));
1135 sock_->Disconnect(); 1137 sock_->Disconnect();
1136 ASSERT_EQ(ERR_SOCKET_NOT_CONNECTED, 1138 ASSERT_EQ(ERR_SOCKET_NOT_CONNECTED,
1137 sock_->Read(NULL, 1, CompletionCallback())); 1139 sock_->Read(NULL, 1, CompletionCallback()));
1138 } 1140 }
1139 1141
1140 // Calling Write() on a closed socket is an error 1142 // Calling Write() on a closed socket is an error
(...skipping 10 matching lines...) Expand all
1151 MockRead(ASYNC, 0, 2), // EOF 1153 MockRead(ASYNC, 0, 2), // EOF
1152 }; 1154 };
1153 1155
1154 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1156 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1155 1157
1156 AssertConnectSucceeds(); 1158 AssertConnectSucceeds();
1157 1159
1158 Run(1); // Read EOF which will close the stream 1160 Run(1); // Read EOF which will close the stream
1159 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1)); 1161 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1));
1160 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, 1162 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED,
1161 sock_->Write(buf, buf->size(), CompletionCallback())); 1163 sock_->Write(buf.get(), buf->size(), CompletionCallback()));
1162 } 1164 }
1163 1165
1164 // Calling Write() on a disconnected socket is an error 1166 // Calling Write() on a disconnected socket is an error
1165 TEST_P(SpdyProxyClientSocketTest, WriteOnDisconnectedSocket) { 1167 TEST_P(SpdyProxyClientSocketTest, WriteOnDisconnectedSocket) {
1166 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame()); 1168 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame());
1167 MockWrite writes[] = { 1169 MockWrite writes[] = {
1168 CreateMockWrite(*conn, 0, SYNCHRONOUS), 1170 CreateMockWrite(*conn, 0, SYNCHRONOUS),
1169 }; 1171 };
1170 1172
1171 scoped_ptr<SpdyFrame> resp(ConstructConnectReplyFrame()); 1173 scoped_ptr<SpdyFrame> resp(ConstructConnectReplyFrame());
1172 scoped_ptr<SpdyFrame> msg1(ConstructBodyFrame(kMsg1, kLen1)); 1174 scoped_ptr<SpdyFrame> msg1(ConstructBodyFrame(kMsg1, kLen1));
1173 MockRead reads[] = { 1175 MockRead reads[] = {
1174 CreateMockRead(*resp, 1, ASYNC), 1176 CreateMockRead(*resp, 1, ASYNC),
1175 MockRead(ASYNC, 0, 2), // EOF 1177 MockRead(ASYNC, 0, 2), // EOF
1176 }; 1178 };
1177 1179
1178 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1180 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1179 1181
1180 AssertConnectSucceeds(); 1182 AssertConnectSucceeds();
1181 1183
1182 sock_->Disconnect(); 1184 sock_->Disconnect();
1183 1185
1184 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1)); 1186 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1));
1185 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, 1187 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED,
1186 sock_->Write(buf, buf->size(), CompletionCallback())); 1188 sock_->Write(buf.get(), buf->size(), CompletionCallback()));
1187 } 1189 }
1188 1190
1189 // If the socket is closed with a pending Write(), the callback 1191 // If the socket is closed with a pending Write(), the callback
1190 // should be called with ERR_CONNECTION_CLOSED. 1192 // should be called with ERR_CONNECTION_CLOSED.
1191 TEST_P(SpdyProxyClientSocketTest, WritePendingOnClose) { 1193 TEST_P(SpdyProxyClientSocketTest, WritePendingOnClose) {
1192 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame()); 1194 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame());
1193 MockWrite writes[] = { 1195 MockWrite writes[] = {
1194 CreateMockWrite(*conn, 0, SYNCHRONOUS), 1196 CreateMockWrite(*conn, 0, SYNCHRONOUS),
1195 MockWrite(ASYNC, ERR_IO_PENDING, 2), 1197 MockWrite(ASYNC, ERR_IO_PENDING, 2),
1196 }; 1198 };
1197 1199
1198 scoped_ptr<SpdyFrame> resp(ConstructConnectReplyFrame()); 1200 scoped_ptr<SpdyFrame> resp(ConstructConnectReplyFrame());
1199 MockRead reads[] = { 1201 MockRead reads[] = {
1200 CreateMockRead(*resp, 1, ASYNC), 1202 CreateMockRead(*resp, 1, ASYNC),
1201 MockRead(ASYNC, 0, 3), // EOF 1203 MockRead(ASYNC, 0, 3), // EOF
1202 }; 1204 };
1203 1205
1204 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1206 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1205 1207
1206 AssertConnectSucceeds(); 1208 AssertConnectSucceeds();
1207 1209
1208 EXPECT_TRUE(sock_->IsConnected()); 1210 EXPECT_TRUE(sock_->IsConnected());
1209 1211
1210 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1)); 1212 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1));
1211 EXPECT_EQ(ERR_IO_PENDING, 1213 EXPECT_EQ(ERR_IO_PENDING,
1212 sock_->Write(buf, buf->size(), write_callback_.callback())); 1214 sock_->Write(buf.get(), buf->size(), write_callback_.callback()));
1213 1215
1214 Run(1); 1216 Run(1);
1215 1217
1216 EXPECT_EQ(ERR_CONNECTION_CLOSED, write_callback_.WaitForResult()); 1218 EXPECT_EQ(ERR_CONNECTION_CLOSED, write_callback_.WaitForResult());
1217 } 1219 }
1218 1220
1219 // If the socket is Disconnected with a pending Write(), the callback 1221 // If the socket is Disconnected with a pending Write(), the callback
1220 // should not be called. 1222 // should not be called.
1221 TEST_P(SpdyProxyClientSocketTest, DisconnectWithWritePending) { 1223 TEST_P(SpdyProxyClientSocketTest, DisconnectWithWritePending) {
1222 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame()); 1224 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame());
1223 MockWrite writes[] = { 1225 MockWrite writes[] = {
1224 CreateMockWrite(*conn, 0, SYNCHRONOUS), 1226 CreateMockWrite(*conn, 0, SYNCHRONOUS),
1225 MockWrite(SYNCHRONOUS, 0, 2), // EOF 1227 MockWrite(SYNCHRONOUS, 0, 2), // EOF
1226 }; 1228 };
1227 1229
1228 scoped_ptr<SpdyFrame> resp(ConstructConnectReplyFrame()); 1230 scoped_ptr<SpdyFrame> resp(ConstructConnectReplyFrame());
1229 MockRead reads[] = { 1231 MockRead reads[] = {
1230 CreateMockRead(*resp, 1, ASYNC), 1232 CreateMockRead(*resp, 1, ASYNC),
1231 MockRead(ASYNC, 0, 3), // EOF 1233 MockRead(ASYNC, 0, 3), // EOF
1232 }; 1234 };
1233 1235
1234 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1236 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1235 1237
1236 AssertConnectSucceeds(); 1238 AssertConnectSucceeds();
1237 1239
1238 EXPECT_TRUE(sock_->IsConnected()); 1240 EXPECT_TRUE(sock_->IsConnected());
1239 1241
1240 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1)); 1242 scoped_refptr<IOBufferWithSize> buf(CreateBuffer(kMsg1, kLen1));
1241 EXPECT_EQ(ERR_IO_PENDING, 1243 EXPECT_EQ(ERR_IO_PENDING,
1242 sock_->Write(buf, buf->size(), write_callback_.callback())); 1244 sock_->Write(buf.get(), buf->size(), write_callback_.callback()));
1243 1245
1244 sock_->Disconnect(); 1246 sock_->Disconnect();
1245 1247
1246 EXPECT_FALSE(sock_->IsConnected()); 1248 EXPECT_FALSE(sock_->IsConnected());
1247 EXPECT_FALSE(write_callback_.have_result()); 1249 EXPECT_FALSE(write_callback_.have_result());
1248 } 1250 }
1249 1251
1250 // If the socket is Disconnected with a pending Read(), the callback 1252 // If the socket is Disconnected with a pending Read(), the callback
1251 // should not be called. 1253 // should not be called.
1252 TEST_P(SpdyProxyClientSocketTest, DisconnectWithReadPending) { 1254 TEST_P(SpdyProxyClientSocketTest, DisconnectWithReadPending) {
1253 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame()); 1255 scoped_ptr<SpdyFrame> conn(ConstructConnectRequestFrame());
1254 MockWrite writes[] = { 1256 MockWrite writes[] = {
1255 CreateMockWrite(*conn, 0, SYNCHRONOUS), 1257 CreateMockWrite(*conn, 0, SYNCHRONOUS),
1256 }; 1258 };
1257 1259
1258 scoped_ptr<SpdyFrame> resp(ConstructConnectReplyFrame()); 1260 scoped_ptr<SpdyFrame> resp(ConstructConnectReplyFrame());
1259 MockRead reads[] = { 1261 MockRead reads[] = {
1260 CreateMockRead(*resp, 1, ASYNC), 1262 CreateMockRead(*resp, 1, ASYNC),
1261 MockRead(ASYNC, 0, 2), // EOF 1263 MockRead(ASYNC, 0, 2), // EOF
1262 }; 1264 };
1263 1265
1264 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1266 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1265 1267
1266 AssertConnectSucceeds(); 1268 AssertConnectSucceeds();
1267 1269
1268 EXPECT_TRUE(sock_->IsConnected()); 1270 EXPECT_TRUE(sock_->IsConnected());
1269 1271
1270 scoped_refptr<IOBuffer> buf(new IOBuffer(kLen1)); 1272 scoped_refptr<IOBuffer> buf(new IOBuffer(kLen1));
1271 ASSERT_EQ(ERR_IO_PENDING, 1273 ASSERT_EQ(ERR_IO_PENDING,
1272 sock_->Read(buf, kLen1, read_callback_.callback())); 1274 sock_->Read(buf.get(), kLen1, read_callback_.callback()));
1273 1275
1274 sock_->Disconnect(); 1276 sock_->Disconnect();
1275 1277
1276 EXPECT_FALSE(sock_->IsConnected()); 1278 EXPECT_FALSE(sock_->IsConnected());
1277 EXPECT_FALSE(read_callback_.have_result()); 1279 EXPECT_FALSE(read_callback_.have_result());
1278 } 1280 }
1279 1281
1280 // If the socket is Reset when both a read and write are pending, 1282 // If the socket is Reset when both a read and write are pending,
1281 // both should be called back. 1283 // both should be called back.
1282 TEST_P(SpdyProxyClientSocketTest, RstWithReadAndWritePending) { 1284 TEST_P(SpdyProxyClientSocketTest, RstWithReadAndWritePending) {
(...skipping 12 matching lines...) Expand all
1295 }; 1297 };
1296 1298
1297 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1299 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1298 1300
1299 AssertConnectSucceeds(); 1301 AssertConnectSucceeds();
1300 1302
1301 EXPECT_TRUE(sock_->IsConnected()); 1303 EXPECT_TRUE(sock_->IsConnected());
1302 1304
1303 scoped_refptr<IOBuffer> read_buf(new IOBuffer(kLen1)); 1305 scoped_refptr<IOBuffer> read_buf(new IOBuffer(kLen1));
1304 ASSERT_EQ(ERR_IO_PENDING, 1306 ASSERT_EQ(ERR_IO_PENDING,
1305 sock_->Read(read_buf, kLen1, read_callback_.callback())); 1307 sock_->Read(read_buf.get(), kLen1, read_callback_.callback()));
1306 1308
1307 scoped_refptr<IOBufferWithSize> write_buf(CreateBuffer(kMsg1, kLen1)); 1309 scoped_refptr<IOBufferWithSize> write_buf(CreateBuffer(kMsg1, kLen1));
1308 EXPECT_EQ(ERR_IO_PENDING, 1310 EXPECT_EQ(
1309 sock_->Write(write_buf, write_buf->size(), 1311 ERR_IO_PENDING,
1310 write_callback_.callback())); 1312 sock_->Write(
1313 write_buf.get(), write_buf->size(), write_callback_.callback()));
1311 1314
1312 Run(2); 1315 Run(2);
1313 1316
1314 EXPECT_TRUE(sock_.get()); 1317 EXPECT_TRUE(sock_.get());
1315 EXPECT_TRUE(read_callback_.have_result()); 1318 EXPECT_TRUE(read_callback_.have_result());
1316 EXPECT_TRUE(write_callback_.have_result()); 1319 EXPECT_TRUE(write_callback_.have_result());
1317 } 1320 }
1318 1321
1319 // Makes sure the proxy client socket's source gets the expected NetLog events 1322 // Makes sure the proxy client socket's source gets the expected NetLog events
1320 // and only the expected NetLog events (No SpdySession events). 1323 // and only the expected NetLog events (No SpdySession events).
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1419 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 1422 Initialize(reads, arraysize(reads), writes, arraysize(writes));
1420 1423
1421 AssertConnectSucceeds(); 1424 AssertConnectSucceeds();
1422 1425
1423 EXPECT_TRUE(sock_->IsConnected()); 1426 EXPECT_TRUE(sock_->IsConnected());
1424 1427
1425 DeleteSockCallback read_callback(&sock_); 1428 DeleteSockCallback read_callback(&sock_);
1426 1429
1427 scoped_refptr<IOBuffer> read_buf(new IOBuffer(kLen1)); 1430 scoped_refptr<IOBuffer> read_buf(new IOBuffer(kLen1));
1428 ASSERT_EQ(ERR_IO_PENDING, 1431 ASSERT_EQ(ERR_IO_PENDING,
1429 sock_->Read(read_buf, kLen1, read_callback.callback())); 1432 sock_->Read(read_buf.get(), kLen1, read_callback.callback()));
1430 1433
1431 scoped_refptr<IOBufferWithSize> write_buf(CreateBuffer(kMsg1, kLen1)); 1434 scoped_refptr<IOBufferWithSize> write_buf(CreateBuffer(kMsg1, kLen1));
1432 EXPECT_EQ(ERR_IO_PENDING, sock_->Write(write_buf, write_buf->size(), 1435 EXPECT_EQ(
1433 write_callback_.callback())); 1436 ERR_IO_PENDING,
1437 sock_->Write(
1438 write_buf.get(), write_buf->size(), write_callback_.callback()));
1434 1439
1435 Run(2); 1440 Run(2);
1436 1441
1437 EXPECT_FALSE(sock_.get()); 1442 EXPECT_FALSE(sock_.get());
1438 EXPECT_TRUE(read_callback.have_result()); 1443 EXPECT_TRUE(read_callback.have_result());
1439 EXPECT_FALSE(write_callback_.have_result()); 1444 EXPECT_FALSE(write_callback_.have_result());
1440 } 1445 }
1441 1446
1442 } // namespace net 1447 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_proxy_client_socket.cc ('k') | net/spdy/spdy_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698