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

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

Issue 723343002: Update from https://crrev.com/304121 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 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
« no previous file with comments | « net/websockets/websocket_channel.cc ('k') | net/websockets/websocket_handshake_handler.h » ('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 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_channel.h" 5 #include "net/websockets/websocket_channel.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <iostream> 10 #include <iostream>
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 120
121 // The amount of quota a new connection gets by default. 121 // The amount of quota a new connection gets by default.
122 // TODO(ricea): If kDefaultSendQuotaHighWaterMark changes, then this value will 122 // TODO(ricea): If kDefaultSendQuotaHighWaterMark changes, then this value will
123 // need to be updated. 123 // need to be updated.
124 const size_t kDefaultInitialQuota = 1 << 17; 124 const size_t kDefaultInitialQuota = 1 << 17;
125 // The amount of bytes we need to send after the initial connection to trigger a 125 // The amount of bytes we need to send after the initial connection to trigger a
126 // quota refresh. TODO(ricea): Change this if kDefaultSendQuotaHighWaterMark or 126 // quota refresh. TODO(ricea): Change this if kDefaultSendQuotaHighWaterMark or
127 // kDefaultSendQuotaLowWaterMark change. 127 // kDefaultSendQuotaLowWaterMark change.
128 const size_t kDefaultQuotaRefreshTrigger = (1 << 16) + 1; 128 const size_t kDefaultQuotaRefreshTrigger = (1 << 16) + 1;
129 129
130 const int kVeryBigTimeoutMillis = 60 * 60 * 24 * 1000;
131
130 // TestTimeouts::tiny_timeout() is 100ms! I could run halfway around the world 132 // TestTimeouts::tiny_timeout() is 100ms! I could run halfway around the world
131 // in that time! I would like my tests to run a bit quicker. 133 // in that time! I would like my tests to run a bit quicker.
132 const int kVeryTinyTimeoutMillis = 1; 134 const int kVeryTinyTimeoutMillis = 1;
133 135
134 // Enough quota to pass any test. 136 // Enough quota to pass any test.
135 const int64 kPlentyOfQuota = INT_MAX; 137 const int64 kPlentyOfQuota = INT_MAX;
136 138
137 typedef WebSocketEventInterface::ChannelState ChannelState; 139 typedef WebSocketEventInterface::ChannelState ChannelState;
138 const ChannelState CHANNEL_ALIVE = WebSocketEventInterface::CHANNEL_ALIVE; 140 const ChannelState CHANNEL_ALIVE = WebSocketEventInterface::CHANNEL_ALIVE;
139 const ChannelState CHANNEL_DELETED = WebSocketEventInterface::CHANNEL_DELETED; 141 const ChannelState CHANNEL_DELETED = WebSocketEventInterface::CHANNEL_DELETED;
(...skipping 1998 matching lines...) Expand 10 before | Expand all | Expand 10 after
2138 EXPECT_CALL(*event_interface_, 2140 EXPECT_CALL(*event_interface_,
2139 OnDropChannel(false, kWebSocketErrorAbnormalClosure, _)) 2141 OnDropChannel(false, kWebSocketErrorAbnormalClosure, _))
2140 .WillOnce(InvokeClosureReturnDeleted(completion.closure())); 2142 .WillOnce(InvokeClosureReturnDeleted(completion.closure()));
2141 } 2143 }
2142 CreateChannelAndConnectSuccessfully(); 2144 CreateChannelAndConnectSuccessfully();
2143 // OneShotTimer is not very friendly to testing; there is no apparent way to 2145 // OneShotTimer is not very friendly to testing; there is no apparent way to
2144 // set an expectation on it. Instead the tests need to infer that the timeout 2146 // set an expectation on it. Instead the tests need to infer that the timeout
2145 // was fired by the behaviour of the WebSocketChannel object. 2147 // was fired by the behaviour of the WebSocketChannel object.
2146 channel_->SetClosingHandshakeTimeoutForTesting( 2148 channel_->SetClosingHandshakeTimeoutForTesting(
2147 TimeDelta::FromMilliseconds(kVeryTinyTimeoutMillis)); 2149 TimeDelta::FromMilliseconds(kVeryTinyTimeoutMillis));
2150 channel_->SetUnderlyingConnectionCloseTimeoutForTesting(
2151 TimeDelta::FromMilliseconds(kVeryBigTimeoutMillis));
2148 channel_->StartClosingHandshake(kWebSocketNormalClosure, ""); 2152 channel_->StartClosingHandshake(kWebSocketNormalClosure, "");
2149 checkpoint.Call(1); 2153 checkpoint.Call(1);
2150 completion.WaitForResult(); 2154 completion.WaitForResult();
2151 } 2155 }
2152 2156
2153 // The closing handshake times out and sends an OnDropChannel event if a Close 2157 // The closing handshake times out and sends an OnDropChannel event if a Close
2154 // message is received but the connection isn't closed by the remote host. 2158 // message is received but the connection isn't closed by the remote host.
2155 TEST_F(WebSocketChannelEventInterfaceTest, 2159 TEST_F(WebSocketChannelEventInterfaceTest,
2156 ServerInitiatedClosingHandshakeTimesOut) { 2160 ServerInitiatedClosingHandshakeTimesOut) {
2157 scoped_ptr<ReadableFakeWebSocketStream> stream( 2161 scoped_ptr<ReadableFakeWebSocketStream> stream(
(...skipping 10 matching lines...) Expand all
2168 { 2172 {
2169 InSequence s; 2173 InSequence s;
2170 EXPECT_CALL(checkpoint, Call(1)); 2174 EXPECT_CALL(checkpoint, Call(1));
2171 EXPECT_CALL(*event_interface_, OnClosingHandshake()); 2175 EXPECT_CALL(*event_interface_, OnClosingHandshake());
2172 EXPECT_CALL(*event_interface_, 2176 EXPECT_CALL(*event_interface_,
2173 OnDropChannel(false, kWebSocketErrorAbnormalClosure, _)) 2177 OnDropChannel(false, kWebSocketErrorAbnormalClosure, _))
2174 .WillOnce(InvokeClosureReturnDeleted(completion.closure())); 2178 .WillOnce(InvokeClosureReturnDeleted(completion.closure()));
2175 } 2179 }
2176 CreateChannelAndConnectSuccessfully(); 2180 CreateChannelAndConnectSuccessfully();
2177 channel_->SetClosingHandshakeTimeoutForTesting( 2181 channel_->SetClosingHandshakeTimeoutForTesting(
2182 TimeDelta::FromMilliseconds(kVeryBigTimeoutMillis));
2183 channel_->SetUnderlyingConnectionCloseTimeoutForTesting(
2178 TimeDelta::FromMilliseconds(kVeryTinyTimeoutMillis)); 2184 TimeDelta::FromMilliseconds(kVeryTinyTimeoutMillis));
2179 checkpoint.Call(1); 2185 checkpoint.Call(1);
2180 completion.WaitForResult(); 2186 completion.WaitForResult();
2181 } 2187 }
2182 2188
2183 // The renderer should provide us with some quota immediately, and then 2189 // The renderer should provide us with some quota immediately, and then
2184 // WebSocketChannel calls ReadFrames as soon as the stream is available. 2190 // WebSocketChannel calls ReadFrames as soon as the stream is available.
2185 TEST_F(WebSocketChannelStreamTest, FlowControlEarly) { 2191 TEST_F(WebSocketChannelStreamTest, FlowControlEarly) {
2186 Checkpoint checkpoint; 2192 Checkpoint checkpoint;
2187 EXPECT_CALL(*mock_stream_, GetSubProtocol()).Times(AnyNumber()); 2193 EXPECT_CALL(*mock_stream_, GetSubProtocol()).Times(AnyNumber());
(...skipping 1109 matching lines...) Expand 10 before | Expand all | Expand 10 after
3297 class WebSocketChannelStreamTimeoutTest : public WebSocketChannelStreamTest { 3303 class WebSocketChannelStreamTimeoutTest : public WebSocketChannelStreamTest {
3298 protected: 3304 protected:
3299 WebSocketChannelStreamTimeoutTest() {} 3305 WebSocketChannelStreamTimeoutTest() {}
3300 3306
3301 void CreateChannelAndConnectSuccessfully() override { 3307 void CreateChannelAndConnectSuccessfully() override {
3302 set_stream(mock_stream_.Pass()); 3308 set_stream(mock_stream_.Pass());
3303 CreateChannelAndConnect(); 3309 CreateChannelAndConnect();
3304 channel_->SendFlowControl(kPlentyOfQuota); 3310 channel_->SendFlowControl(kPlentyOfQuota);
3305 channel_->SetClosingHandshakeTimeoutForTesting( 3311 channel_->SetClosingHandshakeTimeoutForTesting(
3306 TimeDelta::FromMilliseconds(kVeryTinyTimeoutMillis)); 3312 TimeDelta::FromMilliseconds(kVeryTinyTimeoutMillis));
3313 channel_->SetUnderlyingConnectionCloseTimeoutForTesting(
3314 TimeDelta::FromMilliseconds(kVeryTinyTimeoutMillis));
3307 connect_data_.creator.connect_delegate->OnSuccess(stream_.Pass()); 3315 connect_data_.creator.connect_delegate->OnSuccess(stream_.Pass());
3308 } 3316 }
3309 }; 3317 };
3310 3318
3311 // In this case the server initiates the closing handshake with a Close 3319 // In this case the server initiates the closing handshake with a Close
3312 // message. WebSocketChannel responds with a matching Close message, and waits 3320 // message. WebSocketChannel responds with a matching Close message, and waits
3313 // for the server to close the TCP/IP connection. The server never closes the 3321 // for the server to close the TCP/IP connection. The server never closes the
3314 // connection, so the closing handshake times out and WebSocketChannel closes 3322 // connection, so the closing handshake times out and WebSocketChannel closes
3315 // the connection itself. 3323 // the connection itself.
3316 TEST_F(WebSocketChannelStreamTimeoutTest, ServerInitiatedCloseTimesOut) { 3324 TEST_F(WebSocketChannelStreamTimeoutTest, ServerInitiatedCloseTimesOut) {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
3409 channel_->StartClosingHandshake(kWebSocketNormalClosure, "OK"); 3417 channel_->StartClosingHandshake(kWebSocketNormalClosure, "OK");
3410 ASSERT_TRUE(read_frames); 3418 ASSERT_TRUE(read_frames);
3411 // Provide the "Close" message from the server. 3419 // Provide the "Close" message from the server.
3412 *read_frames = CreateFrameVector(frames); 3420 *read_frames = CreateFrameVector(frames);
3413 read_callback.Run(OK); 3421 read_callback.Run(OK);
3414 completion.WaitForResult(); 3422 completion.WaitForResult();
3415 } 3423 }
3416 3424
3417 } // namespace 3425 } // namespace
3418 } // namespace net 3426 } // namespace net
OLDNEW
« no previous file with comments | « net/websockets/websocket_channel.cc ('k') | net/websockets/websocket_handshake_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698