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

Side by Side Diff: chrome/test/chromedriver/net/sync_websocket_impl_unittest.cc

Issue 1669453002: [chromedriver] Apply page load timeout to slow cross-process navigations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove DEPS modifications. Created 4 years, 9 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
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 <string> 5 #include <string>
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
11 #include "base/threading/platform_thread.h" 11 #include "base/threading/platform_thread.h"
12 #include "base/threading/thread.h" 12 #include "base/threading/thread.h"
13 #include "base/time/time.h" 13 #include "base/time/time.h"
14 #include "chrome/test/chromedriver/net/sync_websocket_impl.h" 14 #include "chrome/test/chromedriver/net/sync_websocket_impl.h"
15 #include "chrome/test/chromedriver/net/test_http_server.h" 15 #include "chrome/test/chromedriver/net/test_http_server.h"
16 #include "chrome/test/chromedriver/net/timeout.h"
16 #include "chrome/test/chromedriver/net/url_request_context_getter.h" 17 #include "chrome/test/chromedriver/net/url_request_context_getter.h"
17 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
18 #include "url/gurl.h" 19 #include "url/gurl.h"
19 20
20 namespace { 21 namespace {
21 22
22 class SyncWebSocketImplTest : public testing::Test { 23 class SyncWebSocketImplTest : public testing::Test {
23 protected: 24 protected:
24 SyncWebSocketImplTest() 25 SyncWebSocketImplTest()
25 : client_thread_("ClientThread"), 26 : client_thread_("ClientThread"),
26 long_timeout_(base::TimeDelta::FromMinutes(1)) {} 27 long_timeout_(base::TimeDelta::FromMinutes(1)) {}
27 ~SyncWebSocketImplTest() override {} 28 ~SyncWebSocketImplTest() override {}
28 29
29 void SetUp() override { 30 void SetUp() override {
30 base::Thread::Options options(base::MessageLoop::TYPE_IO, 0); 31 base::Thread::Options options(base::MessageLoop::TYPE_IO, 0);
31 ASSERT_TRUE(client_thread_.StartWithOptions(options)); 32 ASSERT_TRUE(client_thread_.StartWithOptions(options));
32 context_getter_ = new URLRequestContextGetter(client_thread_.task_runner()); 33 context_getter_ = new URLRequestContextGetter(client_thread_.task_runner());
33 ASSERT_TRUE(server_.Start()); 34 ASSERT_TRUE(server_.Start());
34 } 35 }
35 36
36 void TearDown() override { server_.Stop(); } 37 void TearDown() override { server_.Stop(); }
37 38
39 Timeout long_timeout() const { return Timeout(long_timeout_); }
40
38 base::Thread client_thread_; 41 base::Thread client_thread_;
39 TestHttpServer server_; 42 TestHttpServer server_;
40 scoped_refptr<URLRequestContextGetter> context_getter_; 43 scoped_refptr<URLRequestContextGetter> context_getter_;
41 const base::TimeDelta long_timeout_; 44 const base::TimeDelta long_timeout_;
42 }; 45 };
43 46
44 } // namespace 47 } // namespace
45 48
46 TEST_F(SyncWebSocketImplTest, CreateDestroy) { 49 TEST_F(SyncWebSocketImplTest, CreateDestroy) {
47 SyncWebSocketImpl sock(context_getter_.get()); 50 SyncWebSocketImpl sock(context_getter_.get());
48 } 51 }
49 52
50 TEST_F(SyncWebSocketImplTest, Connect) { 53 TEST_F(SyncWebSocketImplTest, Connect) {
51 SyncWebSocketImpl sock(context_getter_.get()); 54 SyncWebSocketImpl sock(context_getter_.get());
52 ASSERT_TRUE(sock.Connect(server_.web_socket_url())); 55 ASSERT_TRUE(sock.Connect(server_.web_socket_url()));
53 } 56 }
54 57
55 TEST_F(SyncWebSocketImplTest, ConnectFail) { 58 TEST_F(SyncWebSocketImplTest, ConnectFail) {
56 SyncWebSocketImpl sock(context_getter_.get()); 59 SyncWebSocketImpl sock(context_getter_.get());
57 ASSERT_FALSE(sock.Connect(GURL("ws://127.0.0.1:33333"))); 60 ASSERT_FALSE(sock.Connect(GURL("ws://127.0.0.1:33333")));
58 } 61 }
59 62
60 TEST_F(SyncWebSocketImplTest, SendReceive) { 63 TEST_F(SyncWebSocketImplTest, SendReceive) {
61 SyncWebSocketImpl sock(context_getter_.get()); 64 SyncWebSocketImpl sock(context_getter_.get());
62 ASSERT_TRUE(sock.Connect(server_.web_socket_url())); 65 ASSERT_TRUE(sock.Connect(server_.web_socket_url()));
63 ASSERT_TRUE(sock.Send("hi")); 66 ASSERT_TRUE(sock.Send("hi"));
64 std::string message; 67 std::string message;
65 ASSERT_EQ( 68 ASSERT_EQ(
66 SyncWebSocket::kOk, 69 SyncWebSocket::kOk,
67 sock.ReceiveNextMessage(&message, long_timeout_)); 70 sock.ReceiveNextMessage(&message, long_timeout()));
68 ASSERT_STREQ("hi", message.c_str()); 71 ASSERT_STREQ("hi", message.c_str());
69 } 72 }
70 73
71 TEST_F(SyncWebSocketImplTest, SendReceiveTimeout) { 74 TEST_F(SyncWebSocketImplTest, SendReceiveTimeout) {
72 SyncWebSocketImpl sock(context_getter_.get()); 75 SyncWebSocketImpl sock(context_getter_.get());
73 ASSERT_TRUE(sock.Connect(server_.web_socket_url())); 76 ASSERT_TRUE(sock.Connect(server_.web_socket_url()));
74 ASSERT_TRUE(sock.Send("hi")); 77 ASSERT_TRUE(sock.Send("hi"));
75 std::string message; 78 std::string message;
76 ASSERT_EQ( 79 ASSERT_EQ(
77 SyncWebSocket::kTimeout, 80 SyncWebSocket::kTimeout,
78 sock.ReceiveNextMessage( 81 sock.ReceiveNextMessage(
79 &message, base::TimeDelta())); 82 &message, Timeout(base::TimeDelta())));
samuong 2016/04/13 03:59:30 this conflicts with one of your older cls, so you'
Alexander Semashko 2016/04/13 15:51:35 Done.
80 } 83 }
81 84
82 TEST_F(SyncWebSocketImplTest, SendReceiveLarge) { 85 TEST_F(SyncWebSocketImplTest, SendReceiveLarge) {
83 SyncWebSocketImpl sock(context_getter_.get()); 86 SyncWebSocketImpl sock(context_getter_.get());
84 ASSERT_TRUE(sock.Connect(server_.web_socket_url())); 87 ASSERT_TRUE(sock.Connect(server_.web_socket_url()));
85 std::string wrote_message(10 << 20, 'a'); 88 std::string wrote_message(10 << 20, 'a');
86 ASSERT_TRUE(sock.Send(wrote_message)); 89 ASSERT_TRUE(sock.Send(wrote_message));
87 std::string message; 90 std::string message;
88 ASSERT_EQ( 91 ASSERT_EQ(
89 SyncWebSocket::kOk, 92 SyncWebSocket::kOk,
90 sock.ReceiveNextMessage(&message, long_timeout_)); 93 sock.ReceiveNextMessage(&message, long_timeout()));
91 ASSERT_EQ(wrote_message.length(), message.length()); 94 ASSERT_EQ(wrote_message.length(), message.length());
92 ASSERT_EQ(wrote_message, message); 95 ASSERT_EQ(wrote_message, message);
93 } 96 }
94 97
95 TEST_F(SyncWebSocketImplTest, SendReceiveMany) { 98 TEST_F(SyncWebSocketImplTest, SendReceiveMany) {
96 SyncWebSocketImpl sock(context_getter_.get()); 99 SyncWebSocketImpl sock(context_getter_.get());
97 ASSERT_TRUE(sock.Connect(server_.web_socket_url())); 100 ASSERT_TRUE(sock.Connect(server_.web_socket_url()));
98 ASSERT_TRUE(sock.Send("1")); 101 ASSERT_TRUE(sock.Send("1"));
99 ASSERT_TRUE(sock.Send("2")); 102 ASSERT_TRUE(sock.Send("2"));
100 std::string message; 103 std::string message;
101 ASSERT_EQ( 104 ASSERT_EQ(
102 SyncWebSocket::kOk, 105 SyncWebSocket::kOk,
103 sock.ReceiveNextMessage(&message, long_timeout_)); 106 sock.ReceiveNextMessage(&message, long_timeout()));
104 ASSERT_STREQ("1", message.c_str()); 107 ASSERT_STREQ("1", message.c_str());
105 ASSERT_TRUE(sock.Send("3")); 108 ASSERT_TRUE(sock.Send("3"));
106 ASSERT_EQ( 109 ASSERT_EQ(
107 SyncWebSocket::kOk, 110 SyncWebSocket::kOk,
108 sock.ReceiveNextMessage(&message, long_timeout_)); 111 sock.ReceiveNextMessage(&message, long_timeout()));
109 ASSERT_STREQ("2", message.c_str()); 112 ASSERT_STREQ("2", message.c_str());
110 ASSERT_EQ( 113 ASSERT_EQ(
111 SyncWebSocket::kOk, 114 SyncWebSocket::kOk,
112 sock.ReceiveNextMessage(&message, long_timeout_)); 115 sock.ReceiveNextMessage(&message, long_timeout()));
113 ASSERT_STREQ("3", message.c_str()); 116 ASSERT_STREQ("3", message.c_str());
114 } 117 }
115 118
116 TEST_F(SyncWebSocketImplTest, CloseOnReceive) { 119 TEST_F(SyncWebSocketImplTest, CloseOnReceive) {
117 server_.SetMessageAction(TestHttpServer::kCloseOnMessage); 120 server_.SetMessageAction(TestHttpServer::kCloseOnMessage);
118 SyncWebSocketImpl sock(context_getter_.get()); 121 SyncWebSocketImpl sock(context_getter_.get());
119 ASSERT_TRUE(sock.Connect(server_.web_socket_url())); 122 ASSERT_TRUE(sock.Connect(server_.web_socket_url()));
120 ASSERT_TRUE(sock.Send("1")); 123 ASSERT_TRUE(sock.Send("1"));
121 std::string message; 124 std::string message;
122 ASSERT_EQ( 125 ASSERT_EQ(
123 SyncWebSocket::kDisconnected, 126 SyncWebSocket::kDisconnected,
124 sock.ReceiveNextMessage(&message, long_timeout_)); 127 sock.ReceiveNextMessage(&message, long_timeout()));
125 ASSERT_STREQ("", message.c_str()); 128 ASSERT_STREQ("", message.c_str());
126 } 129 }
127 130
128 TEST_F(SyncWebSocketImplTest, CloseOnSend) { 131 TEST_F(SyncWebSocketImplTest, CloseOnSend) {
129 SyncWebSocketImpl sock(context_getter_.get()); 132 SyncWebSocketImpl sock(context_getter_.get());
130 ASSERT_TRUE(sock.Connect(server_.web_socket_url())); 133 ASSERT_TRUE(sock.Connect(server_.web_socket_url()));
131 server_.Stop(); 134 server_.Stop();
132 ASSERT_FALSE(sock.Send("1")); 135 ASSERT_FALSE(sock.Send("1"));
133 } 136 }
134 137
135 TEST_F(SyncWebSocketImplTest, Reconnect) { 138 TEST_F(SyncWebSocketImplTest, Reconnect) {
136 SyncWebSocketImpl sock(context_getter_.get()); 139 SyncWebSocketImpl sock(context_getter_.get());
137 ASSERT_TRUE(sock.Connect(server_.web_socket_url())); 140 ASSERT_TRUE(sock.Connect(server_.web_socket_url()));
138 ASSERT_TRUE(sock.Send("1")); 141 ASSERT_TRUE(sock.Send("1"));
139 // Wait for SyncWebSocket to receive the response from the server. 142 // Wait for SyncWebSocket to receive the response from the server.
140 base::TimeTicks deadline = 143 Timeout response_timeout(base::TimeDelta::FromSeconds(20));
141 base::TimeTicks::Now() + base::TimeDelta::FromSeconds(20); 144 while (!response_timeout.IsExpired()) {
142 while (base::TimeTicks::Now() < deadline) {
143 if (sock.IsConnected() && !sock.HasNextMessage()) 145 if (sock.IsConnected() && !sock.HasNextMessage())
144 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10)); 146 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10));
145 else 147 else
146 break; 148 break;
147 } 149 }
148 server_.Stop(); 150 server_.Stop();
149 ASSERT_FALSE(sock.Send("2")); 151 ASSERT_FALSE(sock.Send("2"));
150 ASSERT_FALSE(sock.IsConnected()); 152 ASSERT_FALSE(sock.IsConnected());
151 server_.Start(); 153 server_.Start();
152 ASSERT_TRUE(sock.HasNextMessage()); 154 ASSERT_TRUE(sock.HasNextMessage());
153 ASSERT_TRUE(sock.Connect(server_.web_socket_url())); 155 ASSERT_TRUE(sock.Connect(server_.web_socket_url()));
154 ASSERT_FALSE(sock.HasNextMessage()); 156 ASSERT_FALSE(sock.HasNextMessage());
155 ASSERT_TRUE(sock.Send("3")); 157 ASSERT_TRUE(sock.Send("3"));
156 std::string message; 158 std::string message;
157 ASSERT_EQ( 159 ASSERT_EQ(
158 SyncWebSocket::kOk, 160 SyncWebSocket::kOk,
159 sock.ReceiveNextMessage(&message, long_timeout_)); 161 sock.ReceiveNextMessage(&message, long_timeout()));
160 ASSERT_STREQ("3", message.c_str()); 162 ASSERT_STREQ("3", message.c_str());
161 ASSERT_FALSE(sock.HasNextMessage()); 163 ASSERT_FALSE(sock.HasNextMessage());
162 } 164 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698