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

Side by Side Diff: net/socket/deterministic_socket_data_unittest.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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
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/socket_test_util.h" 5 #include "net/socket/socket_test_util.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "testing/platform_test.h" 10 #include "testing/platform_test.h"
(...skipping 17 matching lines...) Expand all
28 class DeterministicSocketDataTest : public PlatformTest { 28 class DeterministicSocketDataTest : public PlatformTest {
29 public: 29 public:
30 DeterministicSocketDataTest(); 30 DeterministicSocketDataTest();
31 31
32 virtual void TearDown(); 32 virtual void TearDown();
33 33
34 void ReentrantReadCallback(int len, int rv); 34 void ReentrantReadCallback(int len, int rv);
35 void ReentrantWriteCallback(const char* data, int len, int rv); 35 void ReentrantWriteCallback(const char* data, int len, int rv);
36 36
37 protected: 37 protected:
38 void Initialize(MockRead* reads, size_t reads_count, MockWrite* writes, 38 void Initialize(MockRead* reads,
39 size_t reads_count,
40 MockWrite* writes,
39 size_t writes_count); 41 size_t writes_count);
40 42
41 void AssertSyncReadEquals(const char* data, int len); 43 void AssertSyncReadEquals(const char* data, int len);
42 void AssertAsyncReadEquals(const char* data, int len); 44 void AssertAsyncReadEquals(const char* data, int len);
43 void AssertReadReturns(const char* data, int len, int rv); 45 void AssertReadReturns(const char* data, int len, int rv);
44 void AssertReadBufferEquals(const char* data, int len); 46 void AssertReadBufferEquals(const char* data, int len);
45 47
46 void AssertSyncWriteEquals(const char* data, int len); 48 void AssertSyncWriteEquals(const char* data, int len);
47 void AssertAsyncWriteEquals(const char* data, int len); 49 void AssertAsyncWriteEquals(const char* data, int len);
48 void AssertWriteReturns(const char* data, int len, int rv); 50 void AssertWriteReturns(const char* data, int len, int rv);
(...skipping 20 matching lines...) Expand all
69 DeterministicSocketDataTest::DeterministicSocketDataTest() 71 DeterministicSocketDataTest::DeterministicSocketDataTest()
70 : sock_(NULL), 72 : sock_(NULL),
71 read_buf_(NULL), 73 read_buf_(NULL),
72 connect_data_(SYNCHRONOUS, OK), 74 connect_data_(SYNCHRONOUS, OK),
73 endpoint_("www.google.com", 443), 75 endpoint_("www.google.com", 443),
74 tcp_params_(new TransportSocketParams(endpoint_, 76 tcp_params_(new TransportSocketParams(endpoint_,
75 false, 77 false,
76 false, 78 false,
77 OnHostResolutionCallback())), 79 OnHostResolutionCallback())),
78 histograms_(std::string()), 80 histograms_(std::string()),
79 socket_pool_(10, 10, &histograms_, &socket_factory_) {} 81 socket_pool_(10, 10, &histograms_, &socket_factory_) {
82 }
80 83
81 void DeterministicSocketDataTest::TearDown() { 84 void DeterministicSocketDataTest::TearDown() {
82 // Empty the current queue. 85 // Empty the current queue.
83 base::MessageLoop::current()->RunUntilIdle(); 86 base::MessageLoop::current()->RunUntilIdle();
84 PlatformTest::TearDown(); 87 PlatformTest::TearDown();
85 } 88 }
86 89
87 void DeterministicSocketDataTest::Initialize(MockRead* reads, 90 void DeterministicSocketDataTest::Initialize(MockRead* reads,
88 size_t reads_count, 91 size_t reads_count,
89 MockWrite* writes, 92 MockWrite* writes,
90 size_t writes_count) { 93 size_t writes_count) {
91 data_.reset(new DeterministicSocketData(reads, reads_count, 94 data_.reset(
92 writes, writes_count)); 95 new DeterministicSocketData(reads, reads_count, writes, writes_count));
93 data_->set_connect_data(connect_data_); 96 data_->set_connect_data(connect_data_);
94 socket_factory_.AddSocketDataProvider(data_.get()); 97 socket_factory_.AddSocketDataProvider(data_.get());
95 98
96 // Perform the TCP connect 99 // Perform the TCP connect
97 EXPECT_EQ(OK, 100 EXPECT_EQ(OK,
98 connection_.Init(endpoint_.ToString(), 101 connection_.Init(
102 endpoint_.ToString(),
99 tcp_params_, 103 tcp_params_,
100 LOWEST, 104 LOWEST,
101 CompletionCallback(), 105 CompletionCallback(),
102 reinterpret_cast<TransportClientSocketPool*>(&socket_pool_), 106 reinterpret_cast<TransportClientSocketPool*>(&socket_pool_),
103 BoundNetLog())); 107 BoundNetLog()));
104 sock_ = connection_.socket(); 108 sock_ = connection_.socket();
105 } 109 }
106 110
107 void DeterministicSocketDataTest::AssertSyncReadEquals(const char* data, 111 void DeterministicSocketDataTest::AssertSyncReadEquals(const char* data,
108 int len) { 112 int len) {
(...skipping 10 matching lines...) Expand all
119 EXPECT_FALSE(read_callback_.have_result()); 123 EXPECT_FALSE(read_callback_.have_result());
120 EXPECT_TRUE(sock_->IsConnected()); 124 EXPECT_TRUE(sock_->IsConnected());
121 data_->RunFor(1); // Runs 1 step, to cause the callbacks to be invoked 125 data_->RunFor(1); // Runs 1 step, to cause the callbacks to be invoked
122 126
123 // Now the read should complete 127 // Now the read should complete
124 ASSERT_EQ(len, read_callback_.WaitForResult()); 128 ASSERT_EQ(len, read_callback_.WaitForResult());
125 AssertReadBufferEquals(data, len); 129 AssertReadBufferEquals(data, len);
126 } 130 }
127 131
128 void DeterministicSocketDataTest::AssertReadReturns(const char* data, 132 void DeterministicSocketDataTest::AssertReadReturns(const char* data,
129 int len, int rv) { 133 int len,
134 int rv) {
130 read_buf_ = new IOBuffer(len); 135 read_buf_ = new IOBuffer(len);
131 ASSERT_EQ(rv, sock_->Read(read_buf_.get(), len, read_callback_.callback())); 136 ASSERT_EQ(rv, sock_->Read(read_buf_.get(), len, read_callback_.callback()));
132 } 137 }
133 138
134 void DeterministicSocketDataTest::AssertReadBufferEquals(const char* data, 139 void DeterministicSocketDataTest::AssertReadBufferEquals(const char* data,
135 int len) { 140 int len) {
136 ASSERT_EQ(std::string(data, len), std::string(read_buf_->data(), len)); 141 ASSERT_EQ(std::string(data, len), std::string(read_buf_->data(), len));
137 } 142 }
138 143
139 void DeterministicSocketDataTest::AssertSyncWriteEquals(const char* data, 144 void DeterministicSocketDataTest::AssertSyncWriteEquals(const char* data,
140 int len) { 145 int len) {
141 scoped_refptr<IOBuffer> buf(new IOBuffer(len)); 146 scoped_refptr<IOBuffer> buf(new IOBuffer(len));
142 memcpy(buf->data(), data, len); 147 memcpy(buf->data(), data, len);
143 148
144 // Issue the write, which will complete immediately 149 // Issue the write, which will complete immediately
145 ASSERT_EQ(len, sock_->Write(buf.get(), len, write_callback_.callback())); 150 ASSERT_EQ(len, sock_->Write(buf.get(), len, write_callback_.callback()));
146 } 151 }
147 152
148 void DeterministicSocketDataTest::AssertAsyncWriteEquals(const char* data, 153 void DeterministicSocketDataTest::AssertAsyncWriteEquals(const char* data,
149 int len) { 154 int len) {
150 // Issue the read, which will be completed asynchronously 155 // Issue the read, which will be completed asynchronously
151 AssertWriteReturns(data, len, ERR_IO_PENDING); 156 AssertWriteReturns(data, len, ERR_IO_PENDING);
152 157
153 EXPECT_FALSE(read_callback_.have_result()); 158 EXPECT_FALSE(read_callback_.have_result());
154 EXPECT_TRUE(sock_->IsConnected()); 159 EXPECT_TRUE(sock_->IsConnected());
155 data_->RunFor(1); // Runs 1 step, to cause the callbacks to be invoked 160 data_->RunFor(1); // Runs 1 step, to cause the callbacks to be invoked
156 161
157 ASSERT_EQ(len, write_callback_.WaitForResult()); 162 ASSERT_EQ(len, write_callback_.WaitForResult());
158 } 163 }
159 164
160 void DeterministicSocketDataTest::AssertWriteReturns(const char* data, 165 void DeterministicSocketDataTest::AssertWriteReturns(const char* data,
161 int len, int rv) { 166 int len,
167 int rv) {
162 scoped_refptr<IOBuffer> buf(new IOBuffer(len)); 168 scoped_refptr<IOBuffer> buf(new IOBuffer(len));
163 memcpy(buf->data(), data, len); 169 memcpy(buf->data(), data, len);
164 170
165 // Issue the read, which will complete asynchronously 171 // Issue the read, which will complete asynchronously
166 ASSERT_EQ(rv, sock_->Write(buf.get(), len, write_callback_.callback())); 172 ASSERT_EQ(rv, sock_->Write(buf.get(), len, write_callback_.callback()));
167 } 173 }
168 174
169 void DeterministicSocketDataTest::ReentrantReadCallback(int len, int rv) { 175 void DeterministicSocketDataTest::ReentrantReadCallback(int len, int rv) {
170 scoped_refptr<IOBuffer> read_buf(new IOBuffer(len)); 176 scoped_refptr<IOBuffer> read_buf(new IOBuffer(len));
171 EXPECT_EQ(len, 177 EXPECT_EQ(len,
172 sock_->Read( 178 sock_->Read(
173 read_buf.get(), 179 read_buf.get(),
174 len, 180 len,
175 base::Bind(&DeterministicSocketDataTest::ReentrantReadCallback, 181 base::Bind(&DeterministicSocketDataTest::ReentrantReadCallback,
176 base::Unretained(this), 182 base::Unretained(this),
177 len))); 183 len)));
178 } 184 }
179 185
180 void DeterministicSocketDataTest::ReentrantWriteCallback( 186 void DeterministicSocketDataTest::ReentrantWriteCallback(const char* data,
181 const char* data, int len, int rv) { 187 int len,
188 int rv) {
182 scoped_refptr<IOBuffer> write_buf(new IOBuffer(len)); 189 scoped_refptr<IOBuffer> write_buf(new IOBuffer(len));
183 memcpy(write_buf->data(), data, len); 190 memcpy(write_buf->data(), data, len);
184 EXPECT_EQ(len, 191 EXPECT_EQ(len,
185 sock_->Write( 192 sock_->Write(
186 write_buf.get(), 193 write_buf.get(),
187 len, 194 len,
188 base::Bind(&DeterministicSocketDataTest::ReentrantWriteCallback, 195 base::Bind(&DeterministicSocketDataTest::ReentrantWriteCallback,
189 base::Unretained(this), 196 base::Unretained(this),
190 data, 197 data,
191 len))); 198 len)));
192 } 199 }
193 200
194 // ----------- Read 201 // ----------- Read
195 202
196 TEST_F(DeterministicSocketDataTest, SingleSyncReadWhileStopped) { 203 TEST_F(DeterministicSocketDataTest, SingleSyncReadWhileStopped) {
197 MockRead reads[] = { 204 MockRead reads[] = {
198 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read 205 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
199 MockRead(SYNCHRONOUS, 0, 1), // EOF 206 MockRead(SYNCHRONOUS, 0, 1), // EOF
200 }; 207 };
201 208
202 Initialize(reads, arraysize(reads), NULL, 0); 209 Initialize(reads, arraysize(reads), NULL, 0);
203 210
204 data_->SetStopped(true); 211 data_->SetStopped(true);
205 AssertReadReturns(kMsg1, kLen1, ERR_UNEXPECTED); 212 AssertReadReturns(kMsg1, kLen1, ERR_UNEXPECTED);
206 } 213 }
207 214
208 TEST_F(DeterministicSocketDataTest, SingleSyncReadTooEarly) { 215 TEST_F(DeterministicSocketDataTest, SingleSyncReadTooEarly) {
209 MockRead reads[] = { 216 MockRead reads[] = {
210 MockRead(SYNCHRONOUS, kMsg1, kLen1, 1), // Sync Read 217 MockRead(SYNCHRONOUS, kMsg1, kLen1, 1), // Sync Read
211 MockRead(SYNCHRONOUS, 0, 2), // EOF 218 MockRead(SYNCHRONOUS, 0, 2), // EOF
212 }; 219 };
213 220
214 MockWrite writes[] = { 221 MockWrite writes[] = {MockWrite(SYNCHRONOUS, 0, 0)};
215 MockWrite(SYNCHRONOUS, 0, 0)
216 };
217 222
218 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 223 Initialize(reads, arraysize(reads), writes, arraysize(writes));
219 224
220 data_->StopAfter(2); 225 data_->StopAfter(2);
221 ASSERT_FALSE(data_->stopped()); 226 ASSERT_FALSE(data_->stopped());
222 AssertReadReturns(kMsg1, kLen1, ERR_UNEXPECTED); 227 AssertReadReturns(kMsg1, kLen1, ERR_UNEXPECTED);
223 } 228 }
224 229
225 TEST_F(DeterministicSocketDataTest, SingleSyncRead) { 230 TEST_F(DeterministicSocketDataTest, SingleSyncRead) {
226 MockRead reads[] = { 231 MockRead reads[] = {
227 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read 232 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
228 MockRead(SYNCHRONOUS, 0, 1), // EOF 233 MockRead(SYNCHRONOUS, 0, 1), // EOF
229 }; 234 };
230 235
231 Initialize(reads, arraysize(reads), NULL, 0); 236 Initialize(reads, arraysize(reads), NULL, 0);
232 // Make sure we don't stop before we've read all the data 237 // Make sure we don't stop before we've read all the data
233 data_->StopAfter(1); 238 data_->StopAfter(1);
234 AssertSyncReadEquals(kMsg1, kLen1); 239 AssertSyncReadEquals(kMsg1, kLen1);
235 } 240 }
236 241
237 TEST_F(DeterministicSocketDataTest, MultipleSyncReads) { 242 TEST_F(DeterministicSocketDataTest, MultipleSyncReads) {
238 MockRead reads[] = { 243 MockRead reads[] = {
239 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read 244 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
240 MockRead(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Read 245 MockRead(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Read
241 MockRead(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Read 246 MockRead(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Read
242 MockRead(SYNCHRONOUS, kMsg3, kLen3, 3), // Sync Read 247 MockRead(SYNCHRONOUS, kMsg3, kLen3, 3), // Sync Read
243 MockRead(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Read 248 MockRead(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Read
244 MockRead(SYNCHRONOUS, kMsg3, kLen3, 5), // Sync Read 249 MockRead(SYNCHRONOUS, kMsg3, kLen3, 5), // Sync Read
245 MockRead(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Read 250 MockRead(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Read
246 MockRead(SYNCHRONOUS, 0, 7), // EOF 251 MockRead(SYNCHRONOUS, 0, 7), // EOF
247 }; 252 };
248 253
249 Initialize(reads, arraysize(reads), NULL, 0); 254 Initialize(reads, arraysize(reads), NULL, 0);
250 255
251 // Make sure we don't stop before we've read all the data 256 // Make sure we don't stop before we've read all the data
252 data_->StopAfter(10); 257 data_->StopAfter(10);
253 AssertSyncReadEquals(kMsg1, kLen1); 258 AssertSyncReadEquals(kMsg1, kLen1);
254 AssertSyncReadEquals(kMsg2, kLen2); 259 AssertSyncReadEquals(kMsg2, kLen2);
255 AssertSyncReadEquals(kMsg3, kLen3); 260 AssertSyncReadEquals(kMsg3, kLen3);
256 AssertSyncReadEquals(kMsg3, kLen3); 261 AssertSyncReadEquals(kMsg3, kLen3);
257 AssertSyncReadEquals(kMsg2, kLen2); 262 AssertSyncReadEquals(kMsg2, kLen2);
258 AssertSyncReadEquals(kMsg3, kLen3); 263 AssertSyncReadEquals(kMsg3, kLen3);
259 AssertSyncReadEquals(kMsg1, kLen1); 264 AssertSyncReadEquals(kMsg1, kLen1);
260 } 265 }
261 266
262 TEST_F(DeterministicSocketDataTest, SingleAsyncRead) { 267 TEST_F(DeterministicSocketDataTest, SingleAsyncRead) {
263 MockRead reads[] = { 268 MockRead reads[] = {
264 MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read 269 MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read
265 MockRead(SYNCHRONOUS, 0, 1), // EOF 270 MockRead(SYNCHRONOUS, 0, 1), // EOF
266 }; 271 };
267 272
268 Initialize(reads, arraysize(reads), NULL, 0); 273 Initialize(reads, arraysize(reads), NULL, 0);
269 274
270 AssertAsyncReadEquals(kMsg1, kLen1); 275 AssertAsyncReadEquals(kMsg1, kLen1);
271 } 276 }
272 277
273 TEST_F(DeterministicSocketDataTest, MultipleAsyncReads) { 278 TEST_F(DeterministicSocketDataTest, MultipleAsyncReads) {
274 MockRead reads[] = { 279 MockRead reads[] = {
275 MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read 280 MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read
276 MockRead(ASYNC, kMsg2, kLen2, 1), // Async Read 281 MockRead(ASYNC, kMsg2, kLen2, 1), // Async Read
277 MockRead(ASYNC, kMsg3, kLen3, 2), // Async Read 282 MockRead(ASYNC, kMsg3, kLen3, 2), // Async Read
278 MockRead(ASYNC, kMsg3, kLen3, 3), // Async Read 283 MockRead(ASYNC, kMsg3, kLen3, 3), // Async Read
279 MockRead(ASYNC, kMsg2, kLen2, 4), // Async Read 284 MockRead(ASYNC, kMsg2, kLen2, 4), // Async Read
280 MockRead(ASYNC, kMsg3, kLen3, 5), // Async Read 285 MockRead(ASYNC, kMsg3, kLen3, 5), // Async Read
281 MockRead(ASYNC, kMsg1, kLen1, 6), // Async Read 286 MockRead(ASYNC, kMsg1, kLen1, 6), // Async Read
282 MockRead(SYNCHRONOUS, 0, 7), // EOF 287 MockRead(SYNCHRONOUS, 0, 7), // EOF
283 }; 288 };
284 289
285 Initialize(reads, arraysize(reads), NULL, 0); 290 Initialize(reads, arraysize(reads), NULL, 0);
286 291
287 AssertAsyncReadEquals(kMsg1, kLen1); 292 AssertAsyncReadEquals(kMsg1, kLen1);
288 AssertAsyncReadEquals(kMsg2, kLen2); 293 AssertAsyncReadEquals(kMsg2, kLen2);
289 AssertAsyncReadEquals(kMsg3, kLen3); 294 AssertAsyncReadEquals(kMsg3, kLen3);
290 AssertAsyncReadEquals(kMsg3, kLen3); 295 AssertAsyncReadEquals(kMsg3, kLen3);
291 AssertAsyncReadEquals(kMsg2, kLen2); 296 AssertAsyncReadEquals(kMsg2, kLen2);
292 AssertAsyncReadEquals(kMsg3, kLen3); 297 AssertAsyncReadEquals(kMsg3, kLen3);
293 AssertAsyncReadEquals(kMsg1, kLen1); 298 AssertAsyncReadEquals(kMsg1, kLen1);
294 } 299 }
295 300
296 TEST_F(DeterministicSocketDataTest, MixedReads) { 301 TEST_F(DeterministicSocketDataTest, MixedReads) {
297 MockRead reads[] = { 302 MockRead reads[] = {
298 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read 303 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
299 MockRead(ASYNC, kMsg2, kLen2, 1), // Async Read 304 MockRead(ASYNC, kMsg2, kLen2, 1), // Async Read
300 MockRead(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Read 305 MockRead(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Read
301 MockRead(ASYNC, kMsg3, kLen3, 3), // Async Read 306 MockRead(ASYNC, kMsg3, kLen3, 3), // Async Read
302 MockRead(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Read 307 MockRead(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Read
303 MockRead(ASYNC, kMsg3, kLen3, 5), // Async Read 308 MockRead(ASYNC, kMsg3, kLen3, 5), // Async Read
304 MockRead(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Read 309 MockRead(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Read
305 MockRead(SYNCHRONOUS, 0, 7), // EOF 310 MockRead(SYNCHRONOUS, 0, 7), // EOF
306 }; 311 };
307 312
308 Initialize(reads, arraysize(reads), NULL, 0); 313 Initialize(reads, arraysize(reads), NULL, 0);
309 314
310 data_->StopAfter(1); 315 data_->StopAfter(1);
311 AssertSyncReadEquals(kMsg1, kLen1); 316 AssertSyncReadEquals(kMsg1, kLen1);
312 AssertAsyncReadEquals(kMsg2, kLen2); 317 AssertAsyncReadEquals(kMsg2, kLen2);
313 data_->StopAfter(1); 318 data_->StopAfter(1);
314 AssertSyncReadEquals(kMsg3, kLen3); 319 AssertSyncReadEquals(kMsg3, kLen3);
315 AssertAsyncReadEquals(kMsg3, kLen3); 320 AssertAsyncReadEquals(kMsg3, kLen3);
316 data_->StopAfter(1); 321 data_->StopAfter(1);
317 AssertSyncReadEquals(kMsg2, kLen2); 322 AssertSyncReadEquals(kMsg2, kLen2);
318 AssertAsyncReadEquals(kMsg3, kLen3); 323 AssertAsyncReadEquals(kMsg3, kLen3);
319 data_->StopAfter(1); 324 data_->StopAfter(1);
320 AssertSyncReadEquals(kMsg1, kLen1); 325 AssertSyncReadEquals(kMsg1, kLen1);
321 } 326 }
322 327
323 TEST_F(DeterministicSocketDataTest, SyncReadFromCompletionCallback) { 328 TEST_F(DeterministicSocketDataTest, SyncReadFromCompletionCallback) {
324 MockRead reads[] = { 329 MockRead reads[] = {
325 MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read 330 MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read
326 MockRead(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Read 331 MockRead(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Read
327 }; 332 };
328 333
329 Initialize(reads, arraysize(reads), NULL, 0); 334 Initialize(reads, arraysize(reads), NULL, 0);
330 335
331 data_->StopAfter(2); 336 data_->StopAfter(2);
332 337
333 scoped_refptr<IOBuffer> read_buf(new IOBuffer(kLen1)); 338 scoped_refptr<IOBuffer> read_buf(new IOBuffer(kLen1));
334 ASSERT_EQ(ERR_IO_PENDING, 339 ASSERT_EQ(ERR_IO_PENDING,
335 sock_->Read( 340 sock_->Read(
336 read_buf.get(), 341 read_buf.get(),
337 kLen1, 342 kLen1,
338 base::Bind(&DeterministicSocketDataTest::ReentrantReadCallback, 343 base::Bind(&DeterministicSocketDataTest::ReentrantReadCallback,
339 base::Unretained(this), 344 base::Unretained(this),
340 kLen2))); 345 kLen2)));
341 data_->Run(); 346 data_->Run();
342 } 347 }
343 348
344 // ----------- Write 349 // ----------- Write
345 350
346 TEST_F(DeterministicSocketDataTest, SingleSyncWriteWhileStopped) { 351 TEST_F(DeterministicSocketDataTest, SingleSyncWriteWhileStopped) {
347 MockWrite writes[] = { 352 MockWrite writes[] = {
348 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read 353 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
349 }; 354 };
350 355
351 Initialize(NULL, 0, writes, arraysize(writes)); 356 Initialize(NULL, 0, writes, arraysize(writes));
352 357
353 data_->SetStopped(true); 358 data_->SetStopped(true);
354 AssertWriteReturns(kMsg1, kLen1, ERR_UNEXPECTED); 359 AssertWriteReturns(kMsg1, kLen1, ERR_UNEXPECTED);
355 } 360 }
356 361
357 TEST_F(DeterministicSocketDataTest, SingleSyncWriteTooEarly) { 362 TEST_F(DeterministicSocketDataTest, SingleSyncWriteTooEarly) {
358 MockWrite writes[] = { 363 MockWrite writes[] = {
359 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 1), // Sync Write 364 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 1), // Sync Write
360 }; 365 };
361 366
362 MockRead reads[] = { 367 MockRead reads[] = {MockRead(SYNCHRONOUS, 0, 0)};
363 MockRead(SYNCHRONOUS, 0, 0)
364 };
365 368
366 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 369 Initialize(reads, arraysize(reads), writes, arraysize(writes));
367 370
368 data_->StopAfter(2); 371 data_->StopAfter(2);
369 ASSERT_FALSE(data_->stopped()); 372 ASSERT_FALSE(data_->stopped());
370 AssertWriteReturns(kMsg1, kLen1, ERR_UNEXPECTED); 373 AssertWriteReturns(kMsg1, kLen1, ERR_UNEXPECTED);
371 } 374 }
372 375
373 TEST_F(DeterministicSocketDataTest, SingleSyncWrite) { 376 TEST_F(DeterministicSocketDataTest, SingleSyncWrite) {
374 MockWrite writes[] = { 377 MockWrite writes[] = {
375 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Write 378 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Write
376 }; 379 };
377 380
378 Initialize(NULL, 0, writes, arraysize(writes)); 381 Initialize(NULL, 0, writes, arraysize(writes));
379 382
380 // Make sure we don't stop before we've read all the data 383 // Make sure we don't stop before we've read all the data
381 data_->StopAfter(1); 384 data_->StopAfter(1);
382 AssertSyncWriteEquals(kMsg1, kLen1); 385 AssertSyncWriteEquals(kMsg1, kLen1);
383 } 386 }
384 387
385 TEST_F(DeterministicSocketDataTest, MultipleSyncWrites) { 388 TEST_F(DeterministicSocketDataTest, MultipleSyncWrites) {
386 MockWrite writes[] = { 389 MockWrite writes[] = {
387 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Write 390 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Write
388 MockWrite(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Write 391 MockWrite(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Write
389 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write 392 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write
390 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 3), // Sync Write 393 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 3), // Sync Write
391 MockWrite(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Write 394 MockWrite(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Write
392 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 5), // Sync Write 395 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 5), // Sync Write
393 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Write 396 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Write
394 }; 397 };
395 398
396 Initialize(NULL, 0, writes, arraysize(writes)); 399 Initialize(NULL, 0, writes, arraysize(writes));
397 400
398 // Make sure we don't stop before we've read all the data 401 // Make sure we don't stop before we've read all the data
399 data_->StopAfter(10); 402 data_->StopAfter(10);
400 AssertSyncWriteEquals(kMsg1, kLen1); 403 AssertSyncWriteEquals(kMsg1, kLen1);
401 AssertSyncWriteEquals(kMsg2, kLen2); 404 AssertSyncWriteEquals(kMsg2, kLen2);
402 AssertSyncWriteEquals(kMsg3, kLen3); 405 AssertSyncWriteEquals(kMsg3, kLen3);
403 AssertSyncWriteEquals(kMsg3, kLen3); 406 AssertSyncWriteEquals(kMsg3, kLen3);
404 AssertSyncWriteEquals(kMsg2, kLen2); 407 AssertSyncWriteEquals(kMsg2, kLen2);
405 AssertSyncWriteEquals(kMsg3, kLen3); 408 AssertSyncWriteEquals(kMsg3, kLen3);
406 AssertSyncWriteEquals(kMsg1, kLen1); 409 AssertSyncWriteEquals(kMsg1, kLen1);
407 } 410 }
408 411
409 TEST_F(DeterministicSocketDataTest, SingleAsyncWrite) { 412 TEST_F(DeterministicSocketDataTest, SingleAsyncWrite) {
410 MockWrite writes[] = { 413 MockWrite writes[] = {
411 MockWrite(ASYNC, kMsg1, kLen1, 0), // Async Write 414 MockWrite(ASYNC, kMsg1, kLen1, 0), // Async Write
412 }; 415 };
413 416
414 Initialize(NULL, 0, writes, arraysize(writes)); 417 Initialize(NULL, 0, writes, arraysize(writes));
415 418
416 AssertAsyncWriteEquals(kMsg1, kLen1); 419 AssertAsyncWriteEquals(kMsg1, kLen1);
417 } 420 }
418 421
419 TEST_F(DeterministicSocketDataTest, MultipleAsyncWrites) { 422 TEST_F(DeterministicSocketDataTest, MultipleAsyncWrites) {
420 MockWrite writes[] = { 423 MockWrite writes[] = {
421 MockWrite(ASYNC, kMsg1, kLen1, 0), // Async Write 424 MockWrite(ASYNC, kMsg1, kLen1, 0), // Async Write
422 MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write 425 MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write
423 MockWrite(ASYNC, kMsg3, kLen3, 2), // Async Write 426 MockWrite(ASYNC, kMsg3, kLen3, 2), // Async Write
424 MockWrite(ASYNC, kMsg3, kLen3, 3), // Async Write 427 MockWrite(ASYNC, kMsg3, kLen3, 3), // Async Write
425 MockWrite(ASYNC, kMsg2, kLen2, 4), // Async Write 428 MockWrite(ASYNC, kMsg2, kLen2, 4), // Async Write
426 MockWrite(ASYNC, kMsg3, kLen3, 5), // Async Write 429 MockWrite(ASYNC, kMsg3, kLen3, 5), // Async Write
427 MockWrite(ASYNC, kMsg1, kLen1, 6), // Async Write 430 MockWrite(ASYNC, kMsg1, kLen1, 6), // Async Write
428 }; 431 };
429 432
430 Initialize(NULL, 0, writes, arraysize(writes)); 433 Initialize(NULL, 0, writes, arraysize(writes));
431 434
432 AssertAsyncWriteEquals(kMsg1, kLen1); 435 AssertAsyncWriteEquals(kMsg1, kLen1);
433 AssertAsyncWriteEquals(kMsg2, kLen2); 436 AssertAsyncWriteEquals(kMsg2, kLen2);
434 AssertAsyncWriteEquals(kMsg3, kLen3); 437 AssertAsyncWriteEquals(kMsg3, kLen3);
435 AssertAsyncWriteEquals(kMsg3, kLen3); 438 AssertAsyncWriteEquals(kMsg3, kLen3);
436 AssertAsyncWriteEquals(kMsg2, kLen2); 439 AssertAsyncWriteEquals(kMsg2, kLen2);
437 AssertAsyncWriteEquals(kMsg3, kLen3); 440 AssertAsyncWriteEquals(kMsg3, kLen3);
438 AssertAsyncWriteEquals(kMsg1, kLen1); 441 AssertAsyncWriteEquals(kMsg1, kLen1);
439 } 442 }
440 443
441 TEST_F(DeterministicSocketDataTest, MixedWrites) { 444 TEST_F(DeterministicSocketDataTest, MixedWrites) {
442 MockWrite writes[] = { 445 MockWrite writes[] = {
443 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Write 446 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Write
444 MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write 447 MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write
445 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write 448 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write
446 MockWrite(ASYNC, kMsg3, kLen3, 3), // Async Write 449 MockWrite(ASYNC, kMsg3, kLen3, 3), // Async Write
447 MockWrite(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Write 450 MockWrite(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Write
448 MockWrite(ASYNC, kMsg3, kLen3, 5), // Async Write 451 MockWrite(ASYNC, kMsg3, kLen3, 5), // Async Write
449 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Write 452 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Write
450 }; 453 };
451 454
452 Initialize(NULL, 0, writes, arraysize(writes)); 455 Initialize(NULL, 0, writes, arraysize(writes));
453 456
454 data_->StopAfter(1); 457 data_->StopAfter(1);
455 AssertSyncWriteEquals(kMsg1, kLen1); 458 AssertSyncWriteEquals(kMsg1, kLen1);
456 AssertAsyncWriteEquals(kMsg2, kLen2); 459 AssertAsyncWriteEquals(kMsg2, kLen2);
457 data_->StopAfter(1); 460 data_->StopAfter(1);
458 AssertSyncWriteEquals(kMsg3, kLen3); 461 AssertSyncWriteEquals(kMsg3, kLen3);
459 AssertAsyncWriteEquals(kMsg3, kLen3); 462 AssertAsyncWriteEquals(kMsg3, kLen3);
460 data_->StopAfter(1); 463 data_->StopAfter(1);
461 AssertSyncWriteEquals(kMsg2, kLen2); 464 AssertSyncWriteEquals(kMsg2, kLen2);
462 AssertAsyncWriteEquals(kMsg3, kLen3); 465 AssertAsyncWriteEquals(kMsg3, kLen3);
463 data_->StopAfter(1); 466 data_->StopAfter(1);
464 AssertSyncWriteEquals(kMsg1, kLen1); 467 AssertSyncWriteEquals(kMsg1, kLen1);
465 } 468 }
466 469
467 TEST_F(DeterministicSocketDataTest, SyncWriteFromCompletionCallback) { 470 TEST_F(DeterministicSocketDataTest, SyncWriteFromCompletionCallback) {
468 MockWrite writes[] = { 471 MockWrite writes[] = {
469 MockWrite(ASYNC, kMsg1, kLen1, 0), // Async Write 472 MockWrite(ASYNC, kMsg1, kLen1, 0), // Async Write
470 MockWrite(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Write 473 MockWrite(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Write
471 }; 474 };
472 475
473 Initialize(NULL, 0, writes, arraysize(writes)); 476 Initialize(NULL, 0, writes, arraysize(writes));
474 477
475 data_->StopAfter(2); 478 data_->StopAfter(2);
476 479
477 scoped_refptr<IOBuffer> write_buf(new IOBuffer(kLen1)); 480 scoped_refptr<IOBuffer> write_buf(new IOBuffer(kLen1));
478 memcpy(write_buf->data(), kMsg1, kLen1); 481 memcpy(write_buf->data(), kMsg1, kLen1);
479 ASSERT_EQ(ERR_IO_PENDING, 482 ASSERT_EQ(ERR_IO_PENDING,
480 sock_->Write( 483 sock_->Write(
481 write_buf.get(), 484 write_buf.get(),
482 kLen1, 485 kLen1,
483 base::Bind(&DeterministicSocketDataTest::ReentrantWriteCallback, 486 base::Bind(&DeterministicSocketDataTest::ReentrantWriteCallback,
484 base::Unretained(this), 487 base::Unretained(this),
485 kMsg2, 488 kMsg2,
486 kLen2))); 489 kLen2)));
487 data_->Run(); 490 data_->Run();
488 } 491 }
489 492
490 // ----------- Mixed Reads and Writes 493 // ----------- Mixed Reads and Writes
491 494
492 TEST_F(DeterministicSocketDataTest, MixedSyncOperations) { 495 TEST_F(DeterministicSocketDataTest, MixedSyncOperations) {
493 MockRead reads[] = { 496 MockRead reads[] = {
494 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read 497 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
495 MockRead(SYNCHRONOUS, kMsg2, kLen2, 3), // Sync Read 498 MockRead(SYNCHRONOUS, kMsg2, kLen2, 3), // Sync Read
496 MockRead(SYNCHRONOUS, 0, 4), // EOF 499 MockRead(SYNCHRONOUS, 0, 4), // EOF
497 }; 500 };
498 501
499 MockWrite writes[] = { 502 MockWrite writes[] = {
500 MockWrite(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Write 503 MockWrite(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Write
501 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write 504 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write
502 }; 505 };
503 506
504 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 507 Initialize(reads, arraysize(reads), writes, arraysize(writes));
505 508
506 // Make sure we don't stop before we've read/written everything 509 // Make sure we don't stop before we've read/written everything
507 data_->StopAfter(10); 510 data_->StopAfter(10);
508 AssertSyncReadEquals(kMsg1, kLen1); 511 AssertSyncReadEquals(kMsg1, kLen1);
509 AssertSyncWriteEquals(kMsg2, kLen2); 512 AssertSyncWriteEquals(kMsg2, kLen2);
510 AssertSyncWriteEquals(kMsg3, kLen3); 513 AssertSyncWriteEquals(kMsg3, kLen3);
511 AssertSyncReadEquals(kMsg2, kLen2); 514 AssertSyncReadEquals(kMsg2, kLen2);
512 } 515 }
513 516
514 TEST_F(DeterministicSocketDataTest, MixedAsyncOperations) { 517 TEST_F(DeterministicSocketDataTest, MixedAsyncOperations) {
515 MockRead reads[] = { 518 MockRead reads[] = {
516 MockRead(ASYNC, kMsg1, kLen1, 0), // Sync Read 519 MockRead(ASYNC, kMsg1, kLen1, 0), // Sync Read
517 MockRead(ASYNC, kMsg2, kLen2, 3), // Sync Read 520 MockRead(ASYNC, kMsg2, kLen2, 3), // Sync Read
518 MockRead(ASYNC, 0, 4), // EOF 521 MockRead(ASYNC, 0, 4), // EOF
519 }; 522 };
520 523
521 MockWrite writes[] = { 524 MockWrite writes[] = {
522 MockWrite(ASYNC, kMsg2, kLen2, 1), // Sync Write 525 MockWrite(ASYNC, kMsg2, kLen2, 1), // Sync Write
523 MockWrite(ASYNC, kMsg3, kLen3, 2), // Sync Write 526 MockWrite(ASYNC, kMsg3, kLen3, 2), // Sync Write
524 }; 527 };
525 528
526 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 529 Initialize(reads, arraysize(reads), writes, arraysize(writes));
527 530
528 AssertAsyncReadEquals(kMsg1, kLen1); 531 AssertAsyncReadEquals(kMsg1, kLen1);
529 AssertAsyncWriteEquals(kMsg2, kLen2); 532 AssertAsyncWriteEquals(kMsg2, kLen2);
530 AssertAsyncWriteEquals(kMsg3, kLen3); 533 AssertAsyncWriteEquals(kMsg3, kLen3);
531 AssertAsyncReadEquals(kMsg2, kLen2); 534 AssertAsyncReadEquals(kMsg2, kLen2);
532 } 535 }
533 536
534 TEST_F(DeterministicSocketDataTest, InterleavedAsyncOperations) { 537 TEST_F(DeterministicSocketDataTest, InterleavedAsyncOperations) {
535 // Order of completion is read, write, write, read 538 // Order of completion is read, write, write, read
536 MockRead reads[] = { 539 MockRead reads[] = {
537 MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read 540 MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read
538 MockRead(ASYNC, kMsg2, kLen2, 3), // Async Read 541 MockRead(ASYNC, kMsg2, kLen2, 3), // Async Read
539 MockRead(ASYNC, 0, 4), // EOF 542 MockRead(ASYNC, 0, 4), // EOF
540 }; 543 };
541 544
542 MockWrite writes[] = { 545 MockWrite writes[] = {
543 MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write 546 MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write
544 MockWrite(ASYNC, kMsg3, kLen3, 2), // Async Write 547 MockWrite(ASYNC, kMsg3, kLen3, 2), // Async Write
545 }; 548 };
546 549
547 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 550 Initialize(reads, arraysize(reads), writes, arraysize(writes));
548 551
549 // Issue the write, which will block until the read completes 552 // Issue the write, which will block until the read completes
550 AssertWriteReturns(kMsg2, kLen2, ERR_IO_PENDING); 553 AssertWriteReturns(kMsg2, kLen2, ERR_IO_PENDING);
551 554
552 // Issue the read which will return first 555 // Issue the read which will return first
553 AssertReadReturns(kMsg1, kLen1, ERR_IO_PENDING); 556 AssertReadReturns(kMsg1, kLen1, ERR_IO_PENDING);
554 557
(...skipping 19 matching lines...) Expand all
574 577
575 data_->RunFor(1); 578 data_->RunFor(1);
576 ASSERT_TRUE(read_callback_.have_result()); 579 ASSERT_TRUE(read_callback_.have_result());
577 ASSERT_EQ(kLen2, read_callback_.WaitForResult()); 580 ASSERT_EQ(kLen2, read_callback_.WaitForResult());
578 AssertReadBufferEquals(kMsg2, kLen2); 581 AssertReadBufferEquals(kMsg2, kLen2);
579 } 582 }
580 583
581 TEST_F(DeterministicSocketDataTest, InterleavedMixedOperations) { 584 TEST_F(DeterministicSocketDataTest, InterleavedMixedOperations) {
582 // Order of completion is read, write, write, read 585 // Order of completion is read, write, write, read
583 MockRead reads[] = { 586 MockRead reads[] = {
584 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read 587 MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
585 MockRead(ASYNC, kMsg2, kLen2, 3), // Async Read 588 MockRead(ASYNC, kMsg2, kLen2, 3), // Async Read
586 MockRead(SYNCHRONOUS, 0, 4), // EOF 589 MockRead(SYNCHRONOUS, 0, 4), // EOF
587 }; 590 };
588 591
589 MockWrite writes[] = { 592 MockWrite writes[] = {
590 MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write 593 MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write
591 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write 594 MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write
592 }; 595 };
593 596
594 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 597 Initialize(reads, arraysize(reads), writes, arraysize(writes));
595 598
596 // Issue the write, which will block until the read completes 599 // Issue the write, which will block until the read completes
597 AssertWriteReturns(kMsg2, kLen2, ERR_IO_PENDING); 600 AssertWriteReturns(kMsg2, kLen2, ERR_IO_PENDING);
598 601
599 // Issue the writes which will complete immediately 602 // Issue the writes which will complete immediately
600 data_->StopAfter(1); 603 data_->StopAfter(1);
601 AssertSyncReadEquals(kMsg1, kLen1); 604 AssertSyncReadEquals(kMsg1, kLen1);
602 605
603 data_->RunFor(1); 606 data_->RunFor(1);
604 ASSERT_TRUE(write_callback_.have_result()); 607 ASSERT_TRUE(write_callback_.have_result());
605 ASSERT_EQ(kLen2, write_callback_.WaitForResult()); 608 ASSERT_EQ(kLen2, write_callback_.WaitForResult());
606 609
607 // Issue the read, which will block until the write completes 610 // Issue the read, which will block until the write completes
608 AssertReadReturns(kMsg2, kLen2, ERR_IO_PENDING); 611 AssertReadReturns(kMsg2, kLen2, ERR_IO_PENDING);
609 612
610 // Issue the writes which will complete immediately 613 // Issue the writes which will complete immediately
611 data_->StopAfter(1); 614 data_->StopAfter(1);
612 AssertSyncWriteEquals(kMsg3, kLen3); 615 AssertSyncWriteEquals(kMsg3, kLen3);
613 616
614 data_->RunFor(1); 617 data_->RunFor(1);
615 ASSERT_TRUE(read_callback_.have_result()); 618 ASSERT_TRUE(read_callback_.have_result());
616 ASSERT_EQ(kLen2, read_callback_.WaitForResult()); 619 ASSERT_EQ(kLen2, read_callback_.WaitForResult());
617 AssertReadBufferEquals(kMsg2, kLen2); 620 AssertReadBufferEquals(kMsg2, kLen2);
618 } 621 }
619 622
620 } // namespace net 623 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698