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

Side by Side Diff: net/socket_stream/socket_stream_unittest.cc

Issue 11365227: Reland 167337 - Move url_request_test_util into net namespace (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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) 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/socket_stream/socket_stream.h" 5 #include "net/socket_stream/socket_stream.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
12 #include "base/callback.h" 12 #include "base/callback.h"
13 #include "base/utf_string_conversions.h" 13 #include "base/utf_string_conversions.h"
14 #include "net/base/auth.h" 14 #include "net/base/auth.h"
15 #include "net/base/mock_host_resolver.h" 15 #include "net/base/mock_host_resolver.h"
16 #include "net/base/net_log.h" 16 #include "net/base/net_log.h"
17 #include "net/base/net_log_unittest.h" 17 #include "net/base/net_log_unittest.h"
18 #include "net/base/test_completion_callback.h" 18 #include "net/base/test_completion_callback.h"
19 #include "net/http/http_network_session.h" 19 #include "net/http/http_network_session.h"
20 #include "net/proxy/proxy_service.h" 20 #include "net/proxy/proxy_service.h"
21 #include "net/socket/socket_test_util.h" 21 #include "net/socket/socket_test_util.h"
22 #include "net/url_request/url_request_test_util.h" 22 #include "net/url_request/url_request_test_util.h"
23 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
24 #include "testing/platform_test.h" 24 #include "testing/platform_test.h"
25 25
26 namespace net {
27
26 namespace { 28 namespace {
27 29
28 struct SocketStreamEvent { 30 struct SocketStreamEvent {
29 enum EventType { 31 enum EventType {
30 EVENT_START_OPEN_CONNECTION, EVENT_CONNECTED, EVENT_SENT_DATA, 32 EVENT_START_OPEN_CONNECTION, EVENT_CONNECTED, EVENT_SENT_DATA,
31 EVENT_RECEIVED_DATA, EVENT_CLOSE, EVENT_AUTH_REQUIRED, EVENT_ERROR, 33 EVENT_RECEIVED_DATA, EVENT_CLOSE, EVENT_AUTH_REQUIRED, EVENT_ERROR,
32 }; 34 };
33 35
34 SocketStreamEvent(EventType type, 36 SocketStreamEvent(EventType type,
35 net::SocketStream* socket_stream, 37 SocketStream* socket_stream,
36 int num, 38 int num,
37 const std::string& str, 39 const std::string& str,
38 net::AuthChallengeInfo* auth_challenge_info, 40 AuthChallengeInfo* auth_challenge_info,
39 int error) 41 int error)
40 : event_type(type), socket(socket_stream), number(num), data(str), 42 : event_type(type), socket(socket_stream), number(num), data(str),
41 auth_info(auth_challenge_info), error_code(error) {} 43 auth_info(auth_challenge_info), error_code(error) {}
42 44
43 EventType event_type; 45 EventType event_type;
44 net::SocketStream* socket; 46 SocketStream* socket;
45 int number; 47 int number;
46 std::string data; 48 std::string data;
47 scoped_refptr<net::AuthChallengeInfo> auth_info; 49 scoped_refptr<AuthChallengeInfo> auth_info;
48 int error_code; 50 int error_code;
49 }; 51 };
50 52
51 class SocketStreamEventRecorder : public net::SocketStream::Delegate { 53 class SocketStreamEventRecorder : public SocketStream::Delegate {
52 public: 54 public:
53 explicit SocketStreamEventRecorder(const net::CompletionCallback& callback) 55 explicit SocketStreamEventRecorder(const CompletionCallback& callback)
54 : callback_(callback) {} 56 : callback_(callback) {}
55 virtual ~SocketStreamEventRecorder() {} 57 virtual ~SocketStreamEventRecorder() {}
56 58
57 void SetOnStartOpenConnection( 59 void SetOnStartOpenConnection(
58 const base::Callback<int(SocketStreamEvent*)>& callback) { 60 const base::Callback<int(SocketStreamEvent*)>& callback) {
59 on_start_open_connection_ = callback; 61 on_start_open_connection_ = callback;
60 } 62 }
61 void SetOnConnected( 63 void SetOnConnected(
62 const base::Callback<void(SocketStreamEvent*)>& callback) { 64 const base::Callback<void(SocketStreamEvent*)>& callback) {
63 on_connected_ = callback; 65 on_connected_ = callback;
(...skipping 11 matching lines...) Expand all
75 } 77 }
76 void SetOnAuthRequired( 78 void SetOnAuthRequired(
77 const base::Callback<void(SocketStreamEvent*)>& callback) { 79 const base::Callback<void(SocketStreamEvent*)>& callback) {
78 on_auth_required_ = callback; 80 on_auth_required_ = callback;
79 } 81 }
80 void SetOnError(const base::Callback<void(SocketStreamEvent*)>& callback) { 82 void SetOnError(const base::Callback<void(SocketStreamEvent*)>& callback) {
81 on_error_ = callback; 83 on_error_ = callback;
82 } 84 }
83 85
84 virtual int OnStartOpenConnection( 86 virtual int OnStartOpenConnection(
85 net::SocketStream* socket, 87 SocketStream* socket,
86 const net::CompletionCallback& callback) OVERRIDE { 88 const CompletionCallback& callback) OVERRIDE {
87 connection_callback_ = callback; 89 connection_callback_ = callback;
88 events_.push_back( 90 events_.push_back(
89 SocketStreamEvent(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 91 SocketStreamEvent(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
90 socket, 0, std::string(), NULL, net::OK)); 92 socket, 0, std::string(), NULL, OK));
91 if (!on_start_open_connection_.is_null()) 93 if (!on_start_open_connection_.is_null())
92 return on_start_open_connection_.Run(&events_.back()); 94 return on_start_open_connection_.Run(&events_.back());
93 return net::OK; 95 return OK;
94 } 96 }
95 virtual void OnConnected(net::SocketStream* socket, 97 virtual void OnConnected(SocketStream* socket,
96 int num_pending_send_allowed) OVERRIDE { 98 int num_pending_send_allowed) OVERRIDE {
97 events_.push_back( 99 events_.push_back(
98 SocketStreamEvent(SocketStreamEvent::EVENT_CONNECTED, 100 SocketStreamEvent(SocketStreamEvent::EVENT_CONNECTED,
99 socket, num_pending_send_allowed, std::string(), 101 socket, num_pending_send_allowed, std::string(),
100 NULL, net::OK)); 102 NULL, OK));
101 if (!on_connected_.is_null()) 103 if (!on_connected_.is_null())
102 on_connected_.Run(&events_.back()); 104 on_connected_.Run(&events_.back());
103 } 105 }
104 virtual void OnSentData(net::SocketStream* socket, 106 virtual void OnSentData(SocketStream* socket,
105 int amount_sent) OVERRIDE { 107 int amount_sent) OVERRIDE {
106 events_.push_back( 108 events_.push_back(
107 SocketStreamEvent(SocketStreamEvent::EVENT_SENT_DATA, socket, 109 SocketStreamEvent(SocketStreamEvent::EVENT_SENT_DATA, socket,
108 amount_sent, std::string(), NULL, net::OK)); 110 amount_sent, std::string(), NULL, OK));
109 if (!on_sent_data_.is_null()) 111 if (!on_sent_data_.is_null())
110 on_sent_data_.Run(&events_.back()); 112 on_sent_data_.Run(&events_.back());
111 } 113 }
112 virtual void OnReceivedData(net::SocketStream* socket, 114 virtual void OnReceivedData(SocketStream* socket,
113 const char* data, int len) OVERRIDE { 115 const char* data, int len) OVERRIDE {
114 events_.push_back( 116 events_.push_back(
115 SocketStreamEvent(SocketStreamEvent::EVENT_RECEIVED_DATA, socket, len, 117 SocketStreamEvent(SocketStreamEvent::EVENT_RECEIVED_DATA, socket, len,
116 std::string(data, len), NULL, net::OK)); 118 std::string(data, len), NULL, OK));
117 if (!on_received_data_.is_null()) 119 if (!on_received_data_.is_null())
118 on_received_data_.Run(&events_.back()); 120 on_received_data_.Run(&events_.back());
119 } 121 }
120 virtual void OnClose(net::SocketStream* socket) OVERRIDE { 122 virtual void OnClose(SocketStream* socket) OVERRIDE {
121 events_.push_back( 123 events_.push_back(
122 SocketStreamEvent(SocketStreamEvent::EVENT_CLOSE, socket, 0, 124 SocketStreamEvent(SocketStreamEvent::EVENT_CLOSE, socket, 0,
123 std::string(), NULL, net::OK)); 125 std::string(), NULL, OK));
124 if (!on_close_.is_null()) 126 if (!on_close_.is_null())
125 on_close_.Run(&events_.back()); 127 on_close_.Run(&events_.back());
126 if (!callback_.is_null()) 128 if (!callback_.is_null())
127 callback_.Run(net::OK); 129 callback_.Run(OK);
128 } 130 }
129 virtual void OnAuthRequired(net::SocketStream* socket, 131 virtual void OnAuthRequired(SocketStream* socket,
130 net::AuthChallengeInfo* auth_info) OVERRIDE { 132 AuthChallengeInfo* auth_info) OVERRIDE {
131 events_.push_back( 133 events_.push_back(
132 SocketStreamEvent(SocketStreamEvent::EVENT_AUTH_REQUIRED, socket, 0, 134 SocketStreamEvent(SocketStreamEvent::EVENT_AUTH_REQUIRED, socket, 0,
133 std::string(), auth_info, net::OK)); 135 std::string(), auth_info, OK));
134 if (!on_auth_required_.is_null()) 136 if (!on_auth_required_.is_null())
135 on_auth_required_.Run(&events_.back()); 137 on_auth_required_.Run(&events_.back());
136 } 138 }
137 virtual void OnError(const net::SocketStream* socket, int error) OVERRIDE { 139 virtual void OnError(const SocketStream* socket, int error) OVERRIDE {
138 events_.push_back( 140 events_.push_back(
139 SocketStreamEvent(SocketStreamEvent::EVENT_ERROR, NULL, 0, 141 SocketStreamEvent(SocketStreamEvent::EVENT_ERROR, NULL, 0,
140 std::string(), NULL, error)); 142 std::string(), NULL, error));
141 if (!on_error_.is_null()) 143 if (!on_error_.is_null())
142 on_error_.Run(&events_.back()); 144 on_error_.Run(&events_.back());
143 if (!callback_.is_null()) 145 if (!callback_.is_null())
144 callback_.Run(error); 146 callback_.Run(error);
145 } 147 }
146 148
147 void DoClose(SocketStreamEvent* event) { 149 void DoClose(SocketStreamEvent* event) {
148 event->socket->Close(); 150 event->socket->Close();
149 } 151 }
150 void DoRestartWithAuth(SocketStreamEvent* event) { 152 void DoRestartWithAuth(SocketStreamEvent* event) {
151 VLOG(1) << "RestartWithAuth username=" << credentials_.username() 153 VLOG(1) << "RestartWithAuth username=" << credentials_.username()
152 << " password=" << credentials_.password(); 154 << " password=" << credentials_.password();
153 event->socket->RestartWithAuth(credentials_); 155 event->socket->RestartWithAuth(credentials_);
154 } 156 }
155 void SetAuthInfo(const net::AuthCredentials& credentials) { 157 void SetAuthInfo(const AuthCredentials& credentials) {
156 credentials_ = credentials; 158 credentials_ = credentials;
157 } 159 }
158 void CompleteConnection(int result) { 160 void CompleteConnection(int result) {
159 connection_callback_.Run(result); 161 connection_callback_.Run(result);
160 } 162 }
161 163
162 const std::vector<SocketStreamEvent>& GetSeenEvents() const { 164 const std::vector<SocketStreamEvent>& GetSeenEvents() const {
163 return events_; 165 return events_;
164 } 166 }
165 167
166 private: 168 private:
167 std::vector<SocketStreamEvent> events_; 169 std::vector<SocketStreamEvent> events_;
168 base::Callback<int(SocketStreamEvent*)> on_start_open_connection_; 170 base::Callback<int(SocketStreamEvent*)> on_start_open_connection_;
169 base::Callback<void(SocketStreamEvent*)> on_connected_; 171 base::Callback<void(SocketStreamEvent*)> on_connected_;
170 base::Callback<void(SocketStreamEvent*)> on_sent_data_; 172 base::Callback<void(SocketStreamEvent*)> on_sent_data_;
171 base::Callback<void(SocketStreamEvent*)> on_received_data_; 173 base::Callback<void(SocketStreamEvent*)> on_received_data_;
172 base::Callback<void(SocketStreamEvent*)> on_close_; 174 base::Callback<void(SocketStreamEvent*)> on_close_;
173 base::Callback<void(SocketStreamEvent*)> on_auth_required_; 175 base::Callback<void(SocketStreamEvent*)> on_auth_required_;
174 base::Callback<void(SocketStreamEvent*)> on_error_; 176 base::Callback<void(SocketStreamEvent*)> on_error_;
175 const net::CompletionCallback callback_; 177 const CompletionCallback callback_;
176 net::CompletionCallback connection_callback_; 178 CompletionCallback connection_callback_;
177 net::AuthCredentials credentials_; 179 AuthCredentials credentials_;
178 180
179 DISALLOW_COPY_AND_ASSIGN(SocketStreamEventRecorder); 181 DISALLOW_COPY_AND_ASSIGN(SocketStreamEventRecorder);
180 }; 182 };
181 183
182 class TestURLRequestContextWithProxy : public TestURLRequestContext { 184 class TestURLRequestContextWithProxy : public TestURLRequestContext {
183 public: 185 public:
184 explicit TestURLRequestContextWithProxy(const std::string& proxy) 186 explicit TestURLRequestContextWithProxy(const std::string& proxy)
185 : TestURLRequestContext(true) { 187 : TestURLRequestContext(true) {
186 context_storage_.set_proxy_service(net::ProxyService::CreateFixed(proxy)); 188 context_storage_.set_proxy_service(ProxyService::CreateFixed(proxy));
187 Init(); 189 Init();
188 } 190 }
189 virtual ~TestURLRequestContextWithProxy() {} 191 virtual ~TestURLRequestContextWithProxy() {}
190 }; 192 };
191 193
192 class TestSocketStreamNetworkDelegate : public TestNetworkDelegate { 194 class TestSocketStreamNetworkDelegate : public TestNetworkDelegate {
193 public: 195 public:
194 TestSocketStreamNetworkDelegate() 196 TestSocketStreamNetworkDelegate()
195 : before_connect_result_(net::OK) {} 197 : before_connect_result_(OK) {}
196 virtual ~TestSocketStreamNetworkDelegate() {} 198 virtual ~TestSocketStreamNetworkDelegate() {}
197 199
198 virtual int OnBeforeSocketStreamConnect( 200 virtual int OnBeforeSocketStreamConnect(
199 net::SocketStream* stream, 201 SocketStream* stream,
200 const net::CompletionCallback& callback) OVERRIDE { 202 const CompletionCallback& callback) OVERRIDE {
201 return before_connect_result_; 203 return before_connect_result_;
202 } 204 }
203 205
204 void SetBeforeConnectResult(int result) { 206 void SetBeforeConnectResult(int result) {
205 before_connect_result_ = result; 207 before_connect_result_ = result;
206 } 208 }
207 209
208 private: 210 private:
209 int before_connect_result_; 211 int before_connect_result_;
210 }; 212 };
211 213
212 } // namespace 214 } // namespace
213 215
214 namespace net {
215
216 class SocketStreamTest : public PlatformTest { 216 class SocketStreamTest : public PlatformTest {
217 public: 217 public:
218 virtual ~SocketStreamTest() {} 218 virtual ~SocketStreamTest() {}
219 virtual void SetUp() { 219 virtual void SetUp() {
220 mock_socket_factory_.reset(); 220 mock_socket_factory_.reset();
221 handshake_request_ = kWebSocketHandshakeRequest; 221 handshake_request_ = kWebSocketHandshakeRequest;
222 handshake_response_ = kWebSocketHandshakeResponse; 222 handshake_response_ = kWebSocketHandshakeResponse;
223 } 223 }
224 virtual void TearDown() { 224 virtual void TearDown() {
225 mock_socket_factory_.reset(); 225 mock_socket_factory_.reset();
(...skipping 26 matching lines...) Expand all
252 frame.insert(frame.end(), messages_[i].begin(), messages_[i].end()); 252 frame.insert(frame.end(), messages_[i].begin(), messages_[i].end());
253 frame.push_back('\xff'); 253 frame.push_back('\xff');
254 EXPECT_TRUE(event->socket->SendData(&frame[0], frame.size())); 254 EXPECT_TRUE(event->socket->SendData(&frame[0], frame.size()));
255 } 255 }
256 // Actual StreamSocket close must happen after all frames queued by 256 // Actual StreamSocket close must happen after all frames queued by
257 // SendData above are sent out. 257 // SendData above are sent out.
258 event->socket->Close(); 258 event->socket->Close();
259 } 259 }
260 260
261 virtual int DoSwitchToSpdyTest(SocketStreamEvent* event) { 261 virtual int DoSwitchToSpdyTest(SocketStreamEvent* event) {
262 return net::ERR_PROTOCOL_SWITCHED; 262 return ERR_PROTOCOL_SWITCHED;
263 } 263 }
264 264
265 virtual int DoIOPending(SocketStreamEvent* event) { 265 virtual int DoIOPending(SocketStreamEvent* event) {
266 io_test_callback_.callback().Run(net::OK); 266 io_test_callback_.callback().Run(OK);
267 return net::ERR_IO_PENDING; 267 return ERR_IO_PENDING;
268 } 268 }
269 269
270 static const char kWebSocketHandshakeRequest[]; 270 static const char kWebSocketHandshakeRequest[];
271 static const char kWebSocketHandshakeResponse[]; 271 static const char kWebSocketHandshakeResponse[];
272 272
273 protected: 273 protected:
274 TestCompletionCallback io_test_callback_; 274 TestCompletionCallback io_test_callback_;
275 275
276 private: 276 private:
277 std::string handshake_request_; 277 std::string handshake_request_;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 ASSERT_EQ(8U, events.size()); 352 ASSERT_EQ(8U, events.size());
353 353
354 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 354 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
355 events[0].event_type); 355 events[0].event_type);
356 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); 356 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type);
357 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[2].event_type); 357 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[2].event_type);
358 EXPECT_EQ(SocketStreamEvent::EVENT_RECEIVED_DATA, events[3].event_type); 358 EXPECT_EQ(SocketStreamEvent::EVENT_RECEIVED_DATA, events[3].event_type);
359 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[4].event_type); 359 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[4].event_type);
360 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[5].event_type); 360 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[5].event_type);
361 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[6].event_type); 361 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[6].event_type);
362 EXPECT_EQ(net::ERR_CONNECTION_CLOSED, events[6].error_code); 362 EXPECT_EQ(ERR_CONNECTION_CLOSED, events[6].error_code);
363 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[7].event_type); 363 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[7].event_type);
364 } 364 }
365 365
366 TEST_F(SocketStreamTest, BasicAuthProxy) { 366 TEST_F(SocketStreamTest, BasicAuthProxy) {
367 MockClientSocketFactory mock_socket_factory; 367 MockClientSocketFactory mock_socket_factory;
368 MockWrite data_writes1[] = { 368 MockWrite data_writes1[] = {
369 MockWrite("CONNECT example.com:80 HTTP/1.1\r\n" 369 MockWrite("CONNECT example.com:80 HTTP/1.1\r\n"
370 "Host: example.com\r\n" 370 "Host: example.com\r\n"
371 "Proxy-Connection: keep-alive\r\n\r\n"), 371 "Proxy-Connection: keep-alive\r\n\r\n"),
372 }; 372 };
(...skipping 24 matching lines...) Expand all
397 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 397 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
398 data_writes2, arraysize(data_writes2)); 398 data_writes2, arraysize(data_writes2));
399 mock_socket_factory.AddSocketDataProvider(&data2); 399 mock_socket_factory.AddSocketDataProvider(&data2);
400 400
401 TestCompletionCallback test_callback; 401 TestCompletionCallback test_callback;
402 402
403 scoped_ptr<SocketStreamEventRecorder> delegate( 403 scoped_ptr<SocketStreamEventRecorder> delegate(
404 new SocketStreamEventRecorder(test_callback.callback())); 404 new SocketStreamEventRecorder(test_callback.callback()));
405 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, 405 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose,
406 base::Unretained(delegate.get()))); 406 base::Unretained(delegate.get())));
407 delegate->SetAuthInfo(net::AuthCredentials(ASCIIToUTF16("foo"), 407 delegate->SetAuthInfo(AuthCredentials(ASCIIToUTF16("foo"),
408 ASCIIToUTF16("bar"))); 408 ASCIIToUTF16("bar")));
409 delegate->SetOnAuthRequired(base::Bind( 409 delegate->SetOnAuthRequired(base::Bind(
410 &SocketStreamEventRecorder::DoRestartWithAuth, 410 &SocketStreamEventRecorder::DoRestartWithAuth,
411 base::Unretained(delegate.get()))); 411 base::Unretained(delegate.get())));
412 412
413 scoped_refptr<SocketStream> socket_stream( 413 scoped_refptr<SocketStream> socket_stream(
414 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 414 new SocketStream(GURL("ws://example.com/demo"), delegate.get()));
415 415
416 TestURLRequestContextWithProxy context("myproxy:70"); 416 TestURLRequestContextWithProxy context("myproxy:70");
417 417
418 socket_stream->set_context(&context); 418 socket_stream->set_context(&context);
419 socket_stream->SetClientSocketFactory(&mock_socket_factory); 419 socket_stream->SetClientSocketFactory(&mock_socket_factory);
420 420
421 socket_stream->Connect(); 421 socket_stream->Connect();
422 422
423 test_callback.WaitForResult(); 423 test_callback.WaitForResult();
424 424
425 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 425 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
426 ASSERT_EQ(5U, events.size()); 426 ASSERT_EQ(5U, events.size());
427 427
428 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 428 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
429 events[0].event_type); 429 events[0].event_type);
430 EXPECT_EQ(SocketStreamEvent::EVENT_AUTH_REQUIRED, events[1].event_type); 430 EXPECT_EQ(SocketStreamEvent::EVENT_AUTH_REQUIRED, events[1].event_type);
431 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[2].event_type); 431 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[2].event_type);
432 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[3].event_type); 432 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[3].event_type);
433 EXPECT_EQ(net::ERR_ABORTED, events[3].error_code); 433 EXPECT_EQ(ERR_ABORTED, events[3].error_code);
434 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[4].event_type); 434 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[4].event_type);
435 435
436 // TODO(eroman): Add back NetLogTest here... 436 // TODO(eroman): Add back NetLogTest here...
437 } 437 }
438 438
439 TEST_F(SocketStreamTest, BasicAuthProxyWithAuthCache) { 439 TEST_F(SocketStreamTest, BasicAuthProxyWithAuthCache) {
440 MockClientSocketFactory mock_socket_factory; 440 MockClientSocketFactory mock_socket_factory;
441 MockWrite data_writes[] = { 441 MockWrite data_writes[] = {
442 // WebSocket(SocketStream) always uses CONNECT when it is configured to use 442 // WebSocket(SocketStream) always uses CONNECT when it is configured to use
443 // proxy so the port may not be 443. 443 // proxy so the port may not be 443.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 481
482 socket_stream->Connect(); 482 socket_stream->Connect();
483 483
484 test_callback.WaitForResult(); 484 test_callback.WaitForResult();
485 485
486 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 486 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
487 ASSERT_EQ(4U, events.size()); 487 ASSERT_EQ(4U, events.size());
488 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 488 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
489 events[0].event_type); 489 events[0].event_type);
490 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); 490 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type);
491 EXPECT_EQ(net::ERR_ABORTED, events[2].error_code); 491 EXPECT_EQ(ERR_ABORTED, events[2].error_code);
492 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type); 492 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type);
493 } 493 }
494 494
495 TEST_F(SocketStreamTest, WSSBasicAuthProxyWithAuthCache) { 495 TEST_F(SocketStreamTest, WSSBasicAuthProxyWithAuthCache) {
496 MockClientSocketFactory mock_socket_factory; 496 MockClientSocketFactory mock_socket_factory;
497 MockWrite data_writes1[] = { 497 MockWrite data_writes1[] = {
498 MockWrite("CONNECT example.com:443 HTTP/1.1\r\n" 498 MockWrite("CONNECT example.com:443 HTTP/1.1\r\n"
499 "Host: example.com\r\n" 499 "Host: example.com\r\n"
500 "Proxy-Connection: keep-alive\r\n" 500 "Proxy-Connection: keep-alive\r\n"
501 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 501 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 538
539 socket_stream->Connect(); 539 socket_stream->Connect();
540 540
541 test_callback.WaitForResult(); 541 test_callback.WaitForResult();
542 542
543 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 543 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
544 ASSERT_EQ(4U, events.size()); 544 ASSERT_EQ(4U, events.size());
545 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 545 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
546 events[0].event_type); 546 events[0].event_type);
547 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); 547 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type);
548 EXPECT_EQ(net::ERR_ABORTED, events[2].error_code); 548 EXPECT_EQ(ERR_ABORTED, events[2].error_code);
549 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type); 549 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type);
550 } 550 }
551 551
552 TEST_F(SocketStreamTest, IOPending) { 552 TEST_F(SocketStreamTest, IOPending) {
553 TestCompletionCallback test_callback; 553 TestCompletionCallback test_callback;
554 554
555 scoped_ptr<SocketStreamEventRecorder> delegate( 555 scoped_ptr<SocketStreamEventRecorder> delegate(
556 new SocketStreamEventRecorder(test_callback.callback())); 556 new SocketStreamEventRecorder(test_callback.callback()));
557 delegate->SetOnConnected(base::Bind( 557 delegate->SetOnConnected(base::Bind(
558 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this))); 558 &SocketStreamTest::DoSendWebSocketHandshake, base::Unretained(this)));
(...skipping 28 matching lines...) Expand all
587 data_writes, arraysize(data_writes)); 587 data_writes, arraysize(data_writes));
588 588
589 MockClientSocketFactory* mock_socket_factory = 589 MockClientSocketFactory* mock_socket_factory =
590 GetMockClientSocketFactory(); 590 GetMockClientSocketFactory();
591 mock_socket_factory->AddSocketDataProvider(&data_provider); 591 mock_socket_factory->AddSocketDataProvider(&data_provider);
592 592
593 socket_stream->SetClientSocketFactory(mock_socket_factory); 593 socket_stream->SetClientSocketFactory(mock_socket_factory);
594 594
595 socket_stream->Connect(); 595 socket_stream->Connect();
596 io_test_callback_.WaitForResult(); 596 io_test_callback_.WaitForResult();
597 EXPECT_EQ(net::SocketStream::STATE_RESOLVE_PROTOCOL_COMPLETE, 597 EXPECT_EQ(SocketStream::STATE_RESOLVE_PROTOCOL_COMPLETE,
598 socket_stream->next_state_); 598 socket_stream->next_state_);
599 delegate->CompleteConnection(net::OK); 599 delegate->CompleteConnection(OK);
600 600
601 EXPECT_EQ(net::OK, test_callback.WaitForResult()); 601 EXPECT_EQ(OK, test_callback.WaitForResult());
602 602
603 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 603 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
604 ASSERT_EQ(8U, events.size()); 604 ASSERT_EQ(8U, events.size());
605 605
606 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 606 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
607 events[0].event_type); 607 events[0].event_type);
608 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); 608 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type);
609 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[2].event_type); 609 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[2].event_type);
610 EXPECT_EQ(SocketStreamEvent::EVENT_RECEIVED_DATA, events[3].event_type); 610 EXPECT_EQ(SocketStreamEvent::EVENT_RECEIVED_DATA, events[3].event_type);
611 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[4].event_type); 611 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[4].event_type);
612 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[5].event_type); 612 EXPECT_EQ(SocketStreamEvent::EVENT_SENT_DATA, events[5].event_type);
613 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[6].event_type); 613 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[6].event_type);
614 EXPECT_EQ(net::ERR_CONNECTION_CLOSED, events[6].error_code); 614 EXPECT_EQ(ERR_CONNECTION_CLOSED, events[6].error_code);
615 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[7].event_type); 615 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[7].event_type);
616 } 616 }
617 617
618 TEST_F(SocketStreamTest, SwitchToSpdy) { 618 TEST_F(SocketStreamTest, SwitchToSpdy) {
619 TestCompletionCallback test_callback; 619 TestCompletionCallback test_callback;
620 620
621 scoped_ptr<SocketStreamEventRecorder> delegate( 621 scoped_ptr<SocketStreamEventRecorder> delegate(
622 new SocketStreamEventRecorder(test_callback.callback())); 622 new SocketStreamEventRecorder(test_callback.callback()));
623 delegate->SetOnStartOpenConnection(base::Bind( 623 delegate->SetOnStartOpenConnection(base::Bind(
624 &SocketStreamTest::DoSwitchToSpdyTest, base::Unretained(this))); 624 &SocketStreamTest::DoSwitchToSpdyTest, base::Unretained(this)));
625 625
626 TestURLRequestContext context; 626 TestURLRequestContext context;
627 627
628 scoped_refptr<SocketStream> socket_stream( 628 scoped_refptr<SocketStream> socket_stream(
629 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 629 new SocketStream(GURL("ws://example.com/demo"), delegate.get()));
630 630
631 socket_stream->set_context(&context); 631 socket_stream->set_context(&context);
632 632
633 socket_stream->Connect(); 633 socket_stream->Connect();
634 634
635 EXPECT_EQ(net::ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult()); 635 EXPECT_EQ(ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult());
636 636
637 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 637 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
638 ASSERT_EQ(2U, events.size()); 638 ASSERT_EQ(2U, events.size());
639 639
640 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 640 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
641 events[0].event_type); 641 events[0].event_type);
642 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[1].event_type); 642 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[1].event_type);
643 EXPECT_EQ(net::ERR_PROTOCOL_SWITCHED, events[1].error_code); 643 EXPECT_EQ(ERR_PROTOCOL_SWITCHED, events[1].error_code);
644 } 644 }
645 645
646 TEST_F(SocketStreamTest, SwitchAfterPending) { 646 TEST_F(SocketStreamTest, SwitchAfterPending) {
647 TestCompletionCallback test_callback; 647 TestCompletionCallback test_callback;
648 648
649 scoped_ptr<SocketStreamEventRecorder> delegate( 649 scoped_ptr<SocketStreamEventRecorder> delegate(
650 new SocketStreamEventRecorder(test_callback.callback())); 650 new SocketStreamEventRecorder(test_callback.callback()));
651 delegate->SetOnStartOpenConnection(base::Bind( 651 delegate->SetOnStartOpenConnection(base::Bind(
652 &SocketStreamTest::DoIOPending, base::Unretained(this))); 652 &SocketStreamTest::DoIOPending, base::Unretained(this)));
653 653
654 TestURLRequestContext context; 654 TestURLRequestContext context;
655 655
656 scoped_refptr<SocketStream> socket_stream( 656 scoped_refptr<SocketStream> socket_stream(
657 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 657 new SocketStream(GURL("ws://example.com/demo"), delegate.get()));
658 658
659 socket_stream->set_context(&context); 659 socket_stream->set_context(&context);
660 660
661 socket_stream->Connect(); 661 socket_stream->Connect();
662 io_test_callback_.WaitForResult(); 662 io_test_callback_.WaitForResult();
663 EXPECT_EQ(net::SocketStream::STATE_RESOLVE_PROTOCOL_COMPLETE, 663 EXPECT_EQ(SocketStream::STATE_RESOLVE_PROTOCOL_COMPLETE,
664 socket_stream->next_state_); 664 socket_stream->next_state_);
665 delegate->CompleteConnection(net::ERR_PROTOCOL_SWITCHED); 665 delegate->CompleteConnection(ERR_PROTOCOL_SWITCHED);
666 666
667 EXPECT_EQ(net::ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult()); 667 EXPECT_EQ(ERR_PROTOCOL_SWITCHED, test_callback.WaitForResult());
668 668
669 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 669 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
670 ASSERT_EQ(2U, events.size()); 670 ASSERT_EQ(2U, events.size());
671 671
672 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 672 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
673 events[0].event_type); 673 events[0].event_type);
674 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[1].event_type); 674 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[1].event_type);
675 EXPECT_EQ(net::ERR_PROTOCOL_SWITCHED, events[1].error_code); 675 EXPECT_EQ(ERR_PROTOCOL_SWITCHED, events[1].error_code);
676 } 676 }
677 677
678 // Test a connection though a secure proxy. 678 // Test a connection though a secure proxy.
679 TEST_F(SocketStreamTest, SecureProxyConnectError) { 679 TEST_F(SocketStreamTest, SecureProxyConnectError) {
680 MockClientSocketFactory mock_socket_factory; 680 MockClientSocketFactory mock_socket_factory;
681 MockWrite data_writes[] = { 681 MockWrite data_writes[] = {
682 MockWrite("CONNECT example.com:80 HTTP/1.1\r\n" 682 MockWrite("CONNECT example.com:80 HTTP/1.1\r\n"
683 "Host: example.com\r\n" 683 "Host: example.com\r\n"
684 "Proxy-Connection: keep-alive\r\n\r\n") 684 "Proxy-Connection: keep-alive\r\n\r\n")
685 }; 685 };
(...skipping 29 matching lines...) Expand all
715 socket_stream->Connect(); 715 socket_stream->Connect();
716 716
717 test_callback.WaitForResult(); 717 test_callback.WaitForResult();
718 718
719 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 719 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
720 ASSERT_EQ(3U, events.size()); 720 ASSERT_EQ(3U, events.size());
721 721
722 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 722 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
723 events[0].event_type); 723 events[0].event_type);
724 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[1].event_type); 724 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[1].event_type);
725 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, events[1].error_code); 725 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, events[1].error_code);
726 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[2].event_type); 726 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[2].event_type);
727 } 727 }
728 728
729 // Test a connection though a secure proxy. 729 // Test a connection though a secure proxy.
730 TEST_F(SocketStreamTest, SecureProxyConnect) { 730 TEST_F(SocketStreamTest, SecureProxyConnect) {
731 MockClientSocketFactory mock_socket_factory; 731 MockClientSocketFactory mock_socket_factory;
732 MockWrite data_writes[] = { 732 MockWrite data_writes[] = {
733 MockWrite("CONNECT example.com:80 HTTP/1.1\r\n" 733 MockWrite("CONNECT example.com:80 HTTP/1.1\r\n"
734 "Host: example.com\r\n" 734 "Host: example.com\r\n"
735 "Proxy-Connection: keep-alive\r\n\r\n") 735 "Proxy-Connection: keep-alive\r\n\r\n")
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 767
768 test_callback.WaitForResult(); 768 test_callback.WaitForResult();
769 769
770 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 770 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
771 ASSERT_EQ(4U, events.size()); 771 ASSERT_EQ(4U, events.size());
772 772
773 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, 773 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION,
774 events[0].event_type); 774 events[0].event_type);
775 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); 775 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type);
776 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[2].event_type); 776 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[2].event_type);
777 EXPECT_EQ(net::ERR_ABORTED, events[2].error_code); 777 EXPECT_EQ(ERR_ABORTED, events[2].error_code);
778 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type); 778 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type);
779 } 779 }
780 780
781 TEST_F(SocketStreamTest, BeforeConnectFailed) { 781 TEST_F(SocketStreamTest, BeforeConnectFailed) {
782 TestCompletionCallback test_callback; 782 TestCompletionCallback test_callback;
783 783
784 scoped_ptr<SocketStreamEventRecorder> delegate( 784 scoped_ptr<SocketStreamEventRecorder> delegate(
785 new SocketStreamEventRecorder(test_callback.callback())); 785 new SocketStreamEventRecorder(test_callback.callback()));
786 786
787 TestURLRequestContext context; 787 TestURLRequestContext context;
788 TestSocketStreamNetworkDelegate network_delegate; 788 TestSocketStreamNetworkDelegate network_delegate;
789 network_delegate.SetBeforeConnectResult(ERR_ACCESS_DENIED); 789 network_delegate.SetBeforeConnectResult(ERR_ACCESS_DENIED);
790 context.set_network_delegate(&network_delegate); 790 context.set_network_delegate(&network_delegate);
791 791
792 scoped_refptr<SocketStream> socket_stream( 792 scoped_refptr<SocketStream> socket_stream(
793 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); 793 new SocketStream(GURL("ws://example.com/demo"), delegate.get()));
794 794
795 socket_stream->set_context(&context); 795 socket_stream->set_context(&context);
796 796
797 socket_stream->Connect(); 797 socket_stream->Connect();
798 798
799 test_callback.WaitForResult(); 799 test_callback.WaitForResult();
800 800
801 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents(); 801 const std::vector<SocketStreamEvent>& events = delegate->GetSeenEvents();
802 ASSERT_EQ(2U, events.size()); 802 ASSERT_EQ(2U, events.size());
803 803
804 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[0].event_type); 804 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[0].event_type);
805 EXPECT_EQ(net::ERR_ACCESS_DENIED, events[0].error_code); 805 EXPECT_EQ(ERR_ACCESS_DENIED, events[0].error_code);
806 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[1].event_type); 806 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[1].event_type);
807 } 807 }
808 808
809 } // namespace net 809 } // namespace net
OLDNEW
« no previous file with comments | « jingle/notifier/listener/xmpp_push_client_unittest.cc ('k') | net/url_request/url_request_job_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698