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

Side by Side Diff: net/websockets/websocket_throttle_test.cc

Issue 295383007: Get rid of websocket_over_spdy_enabled global. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with fixed linebreaks Created 6 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/websockets/websocket_job_test.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/websockets/websocket_throttle.h" 5 #include "net/websockets/websocket_throttle.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "net/base/address_list.h" 10 #include "net/base/address_list.h"
11 #include "net/base/test_completion_callback.h" 11 #include "net/base/test_completion_callback.h"
12 #include "net/socket_stream/socket_stream.h" 12 #include "net/socket_stream/socket_stream.h"
13 #include "net/url_request/url_request_test_util.h" 13 #include "net/url_request/url_request_test_util.h"
14 #include "net/websockets/websocket_job.h" 14 #include "net/websockets/websocket_job.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "testing/platform_test.h" 16 #include "testing/platform_test.h"
17 #include "url/gurl.h" 17 #include "url/gurl.h"
18 18
19 class DummySocketStreamDelegate : public net::SocketStream::Delegate { 19 namespace net {
20
21 namespace {
22
23 class DummySocketStreamDelegate : public SocketStream::Delegate {
20 public: 24 public:
21 DummySocketStreamDelegate() {} 25 DummySocketStreamDelegate() {}
22 virtual ~DummySocketStreamDelegate() {} 26 virtual ~DummySocketStreamDelegate() {}
23 virtual void OnConnected( 27 virtual void OnConnected(
24 net::SocketStream* socket, int max_pending_send_allowed) OVERRIDE {} 28 SocketStream* socket, int max_pending_send_allowed) OVERRIDE {}
25 virtual void OnSentData(net::SocketStream* socket, 29 virtual void OnSentData(SocketStream* socket,
26 int amount_sent) OVERRIDE {} 30 int amount_sent) OVERRIDE {}
27 virtual void OnReceivedData(net::SocketStream* socket, 31 virtual void OnReceivedData(SocketStream* socket,
28 const char* data, int len) OVERRIDE {} 32 const char* data, int len) OVERRIDE {}
29 virtual void OnClose(net::SocketStream* socket) OVERRIDE {} 33 virtual void OnClose(SocketStream* socket) OVERRIDE {}
30 }; 34 };
31 35
32 namespace net { 36 class WebSocketThrottleTestContext : public TestURLRequestContext {
37 public:
38 explicit WebSocketThrottleTestContext(bool enable_websocket_over_spdy)
39 : TestURLRequestContext(true) {
40 HttpNetworkSession::Params params;
41 params.enable_websocket_over_spdy = enable_websocket_over_spdy;
42 Init();
43 }
44 };
45
46 } // namespace
33 47
34 class WebSocketThrottleTest : public PlatformTest { 48 class WebSocketThrottleTest : public PlatformTest {
35 protected: 49 protected:
36 static IPEndPoint MakeAddr(int a1, int a2, int a3, int a4) { 50 static IPEndPoint MakeAddr(int a1, int a2, int a3, int a4) {
37 IPAddressNumber ip; 51 IPAddressNumber ip;
38 ip.push_back(a1); 52 ip.push_back(a1);
39 ip.push_back(a2); 53 ip.push_back(a2);
40 ip.push_back(a3); 54 ip.push_back(a3);
41 ip.push_back(a4); 55 ip.push_back(a4);
42 return IPEndPoint(ip, 0); 56 return IPEndPoint(ip, 0);
(...skipping 10 matching lines...) Expand all
53 // next_state_ is not STATE_NONE. 67 // next_state_ is not STATE_NONE.
54 // If next_state_ is STATE_NONE, SocketStream::Close() or 68 // If next_state_ is STATE_NONE, SocketStream::Close() or
55 // SocketStream::DetachDelegate() won't call SocketStream::Finish(), 69 // SocketStream::DetachDelegate() won't call SocketStream::Finish(),
56 // so Release() won't be called. Thus, we don't need socket->AddRef() 70 // so Release() won't be called. Thus, we don't need socket->AddRef()
57 // here. 71 // here.
58 DCHECK_EQ(socket->next_state_, SocketStream::STATE_NONE); 72 DCHECK_EQ(socket->next_state_, SocketStream::STATE_NONE);
59 } 73 }
60 }; 74 };
61 75
62 TEST_F(WebSocketThrottleTest, Throttle) { 76 TEST_F(WebSocketThrottleTest, Throttle) {
63 TestURLRequestContext context;
64 DummySocketStreamDelegate delegate;
65 // TODO(toyoshim): We need to consider both spdy-enabled and spdy-disabled 77 // TODO(toyoshim): We need to consider both spdy-enabled and spdy-disabled
66 // configuration. 78 // configuration.
67 WebSocketJob::set_websocket_over_spdy_enabled(true); 79 WebSocketThrottleTestContext context(true);
80 DummySocketStreamDelegate delegate;
68 81
69 // For host1: 1.2.3.4, 1.2.3.5, 1.2.3.6 82 // For host1: 1.2.3.4, 1.2.3.5, 1.2.3.6
70 AddressList addr; 83 AddressList addr;
71 addr.push_back(MakeAddr(1, 2, 3, 4)); 84 addr.push_back(MakeAddr(1, 2, 3, 4));
72 addr.push_back(MakeAddr(1, 2, 3, 5)); 85 addr.push_back(MakeAddr(1, 2, 3, 5));
73 addr.push_back(MakeAddr(1, 2, 3, 6)); 86 addr.push_back(MakeAddr(1, 2, 3, 6));
74 scoped_refptr<WebSocketJob> w1(new WebSocketJob(&delegate)); 87 scoped_refptr<WebSocketJob> w1(new WebSocketJob(&delegate));
75 scoped_refptr<SocketStream> s1( 88 scoped_refptr<SocketStream> s1(
76 new SocketStream(GURL("ws://host1/"), w1.get(), &context, NULL)); 89 new SocketStream(GURL("ws://host1/"), w1.get(), &context, NULL));
77 w1->InitSocketStream(s1.get()); 90 w1->InitSocketStream(s1.get());
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 w3->OnClose(s3.get()); 279 w3->OnClose(s3.get());
267 base::MessageLoopForIO::current()->RunUntilIdle(); 280 base::MessageLoopForIO::current()->RunUntilIdle();
268 s3->DetachDelegate(); 281 s3->DetachDelegate();
269 w4->OnClose(s4.get()); 282 w4->OnClose(s4.get());
270 s4->DetachDelegate(); 283 s4->DetachDelegate();
271 DVLOG(1) << "Done"; 284 DVLOG(1) << "Done";
272 base::MessageLoopForIO::current()->RunUntilIdle(); 285 base::MessageLoopForIO::current()->RunUntilIdle();
273 } 286 }
274 287
275 TEST_F(WebSocketThrottleTest, NoThrottleForDuplicateAddress) { 288 TEST_F(WebSocketThrottleTest, NoThrottleForDuplicateAddress) {
276 TestURLRequestContext context; 289 WebSocketThrottleTestContext context(true);
277 DummySocketStreamDelegate delegate; 290 DummySocketStreamDelegate delegate;
278 WebSocketJob::set_websocket_over_spdy_enabled(true);
279 291
280 // For localhost: 127.0.0.1, 127.0.0.1 292 // For localhost: 127.0.0.1, 127.0.0.1
281 AddressList addr; 293 AddressList addr;
282 addr.push_back(MakeAddr(127, 0, 0, 1)); 294 addr.push_back(MakeAddr(127, 0, 0, 1));
283 addr.push_back(MakeAddr(127, 0, 0, 1)); 295 addr.push_back(MakeAddr(127, 0, 0, 1));
284 scoped_refptr<WebSocketJob> w1(new WebSocketJob(&delegate)); 296 scoped_refptr<WebSocketJob> w1(new WebSocketJob(&delegate));
285 scoped_refptr<SocketStream> s1( 297 scoped_refptr<SocketStream> s1(
286 new SocketStream(GURL("ws://localhost/"), w1.get(), &context, NULL)); 298 new SocketStream(GURL("ws://localhost/"), w1.get(), &context, NULL));
287 w1->InitSocketStream(s1.get()); 299 w1->InitSocketStream(s1.get());
288 WebSocketThrottleTest::MockSocketStreamConnect(s1.get(), addr); 300 WebSocketThrottleTest::MockSocketStreamConnect(s1.get(), addr);
289 301
290 DVLOG(1) << "socket1"; 302 DVLOG(1) << "socket1";
291 TestCompletionCallback callback_s1; 303 TestCompletionCallback callback_s1;
292 // Trying to open connection to localhost will start without wait. 304 // Trying to open connection to localhost will start without wait.
293 EXPECT_EQ(OK, w1->OnStartOpenConnection(s1.get(), callback_s1.callback())); 305 EXPECT_EQ(OK, w1->OnStartOpenConnection(s1.get(), callback_s1.callback()));
294 306
295 DVLOG(1) << "socket1 close"; 307 DVLOG(1) << "socket1 close";
296 w1->OnClose(s1.get()); 308 w1->OnClose(s1.get());
297 s1->DetachDelegate(); 309 s1->DetachDelegate();
298 DVLOG(1) << "Done"; 310 DVLOG(1) << "Done";
299 base::MessageLoopForIO::current()->RunUntilIdle(); 311 base::MessageLoopForIO::current()->RunUntilIdle();
300 } 312 }
301 313
302 // A connection should not be blocked by another connection to the same IP 314 // A connection should not be blocked by another connection to the same IP
303 // with a different port. 315 // with a different port.
304 TEST_F(WebSocketThrottleTest, NoThrottleForDistinctPort) { 316 TEST_F(WebSocketThrottleTest, NoThrottleForDistinctPort) {
305 TestURLRequestContext context; 317 WebSocketThrottleTestContext context(false);
306 DummySocketStreamDelegate delegate; 318 DummySocketStreamDelegate delegate;
307 IPAddressNumber localhost; 319 IPAddressNumber localhost;
308 ParseIPLiteralToNumber("127.0.0.1", &localhost); 320 ParseIPLiteralToNumber("127.0.0.1", &localhost);
309 WebSocketJob::set_websocket_over_spdy_enabled(false);
310 321
311 // socket1: 127.0.0.1:80 322 // socket1: 127.0.0.1:80
312 scoped_refptr<WebSocketJob> w1(new WebSocketJob(&delegate)); 323 scoped_refptr<WebSocketJob> w1(new WebSocketJob(&delegate));
313 scoped_refptr<SocketStream> s1( 324 scoped_refptr<SocketStream> s1(
314 new SocketStream(GURL("ws://localhost:80/"), w1.get(), &context, NULL)); 325 new SocketStream(GURL("ws://localhost:80/"), w1.get(), &context, NULL));
315 w1->InitSocketStream(s1.get()); 326 w1->InitSocketStream(s1.get());
316 MockSocketStreamConnect(s1.get(), 327 MockSocketStreamConnect(s1.get(),
317 AddressList::CreateFromIPAddress(localhost, 80)); 328 AddressList::CreateFromIPAddress(localhost, 80));
318 329
319 DVLOG(1) << "connecting socket1"; 330 DVLOG(1) << "connecting socket1";
(...skipping 18 matching lines...) Expand all
338 w1->OnClose(s1.get()); 349 w1->OnClose(s1.get());
339 s1->DetachDelegate(); 350 s1->DetachDelegate();
340 351
341 DVLOG(1) << "closing socket2"; 352 DVLOG(1) << "closing socket2";
342 w2->OnClose(s2.get()); 353 w2->OnClose(s2.get());
343 s2->DetachDelegate(); 354 s2->DetachDelegate();
344 DVLOG(1) << "Done"; 355 DVLOG(1) << "Done";
345 base::MessageLoopForIO::current()->RunUntilIdle(); 356 base::MessageLoopForIO::current()->RunUntilIdle();
346 } 357 }
347 358
348 } 359 } // namespace net
OLDNEW
« no previous file with comments | « net/websockets/websocket_job_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698