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

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

Issue 1117863003: Convert the remaining three SpdyNetworkTransactionTests to SequencedSocketData (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 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
« no previous file with comments | « net/http/http_network_transaction_unittest.cc ('k') | net/socket/socket_test_util.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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 size_t writes_count); 187 size_t writes_count);
188 188
189 void AssertSyncReadEquals(const char* data, int len); 189 void AssertSyncReadEquals(const char* data, int len);
190 void AssertAsyncReadEquals(const char* data, int len); 190 void AssertAsyncReadEquals(const char* data, int len);
191 void AssertReadReturns(int len, int rv); 191 void AssertReadReturns(int len, int rv);
192 void AssertReadBufferEquals(const char* data, int len); 192 void AssertReadBufferEquals(const char* data, int len);
193 193
194 void AssertSyncWriteEquals(const char* data, int len); 194 void AssertSyncWriteEquals(const char* data, int len);
195 void AssertAsyncWriteEquals(const char* data, int len); 195 void AssertAsyncWriteEquals(const char* data, int len);
196 void AssertWriteReturns(const char* data, int len, int rv); 196 void AssertWriteReturns(const char* data, int len, int rv);
197 void CompleteRead();
197 198
198 // When a given test completes, data_.at_eof() is expected to 199 // When a given test completes, data_.at_eof() is expected to
199 // match the value specified here. Most test should consume all 200 // match the value specified here. Most test should consume all
200 // reads and writes, but some tests verify error handling behavior 201 // reads and writes, but some tests verify error handling behavior
201 // do not consume all data. 202 // do not consume all data.
202 void set_expect_eof(bool expect_eof) { expect_eof_ = expect_eof; } 203 void set_expect_eof(bool expect_eof) { expect_eof_ = expect_eof; }
203 204
204 TestCompletionCallback read_callback_; 205 TestCompletionCallback read_callback_;
205 scoped_refptr<IOBuffer> read_buf_; 206 scoped_refptr<IOBuffer> read_buf_;
206 TestCompletionCallback write_callback_; 207 TestCompletionCallback write_callback_;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 int len) { 307 int len) {
307 // Issue the read, which should be completed asynchronously. 308 // Issue the read, which should be completed asynchronously.
308 AssertWriteReturns(data, len, ERR_IO_PENDING); 309 AssertWriteReturns(data, len, ERR_IO_PENDING);
309 310
310 EXPECT_FALSE(read_callback_.have_result()); 311 EXPECT_FALSE(read_callback_.have_result());
311 EXPECT_TRUE(sock_->IsConnected()); 312 EXPECT_TRUE(sock_->IsConnected());
312 313
313 ASSERT_EQ(len, write_callback_.WaitForResult()); 314 ASSERT_EQ(len, write_callback_.WaitForResult());
314 } 315 }
315 316
317 void SequencedSocketDataTest::CompleteRead() {
318 data_->CompleteRead();
319 }
320
316 void SequencedSocketDataTest::AssertWriteReturns(const char* data, 321 void SequencedSocketDataTest::AssertWriteReturns(const char* data,
317 int len, 322 int len,
318 int rv) { 323 int rv) {
319 scoped_refptr<IOBuffer> buf(new IOBuffer(len)); 324 scoped_refptr<IOBuffer> buf(new IOBuffer(len));
320 memcpy(buf->data(), data, len); 325 memcpy(buf->data(), data, len);
321 326
322 if (rv == ERR_IO_PENDING) { 327 if (rv == ERR_IO_PENDING) {
323 ASSERT_EQ(rv, sock_->Write(buf.get(), len, write_callback_.callback())); 328 ASSERT_EQ(rv, sock_->Write(buf.get(), len, write_callback_.callback()));
324 ASSERT_FALSE(write_callback_.have_result()); 329 ASSERT_FALSE(write_callback_.have_result());
325 } else { 330 } else {
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 ASSERT_EQ(ERR_IO_PENDING, 601 ASSERT_EQ(ERR_IO_PENDING,
597 sock_->Read(read_buf.get(), 1, read_callback_.callback())); 602 sock_->Read(read_buf.get(), 1, read_callback_.callback()));
598 ASSERT_FALSE(read_callback_.have_result()); 603 ASSERT_FALSE(read_callback_.have_result());
599 604
600 // Even though the read is scheduled to complete at sequence number 0, 605 // Even though the read is scheduled to complete at sequence number 0,
601 // verify that the read callback in never called. 606 // verify that the read callback in never called.
602 base::MessageLoop::current()->RunUntilIdle(); 607 base::MessageLoop::current()->RunUntilIdle();
603 ASSERT_FALSE(read_callback_.have_result()); 608 ASSERT_FALSE(read_callback_.have_result());
604 } 609 }
605 610
611 TEST_F(SequencedSocketDataTest, CompleteRead) {
612 MockRead reads[] = {
613 MockRead(ASYNC, ERR_IO_PENDING, 0), MockRead(ASYNC, kMsg1, kLen1, 1),
614 };
615
616 Initialize(reads, arraysize(reads), nullptr, 0);
617
618 AssertReadReturns(kLen1, ERR_IO_PENDING);
619 ASSERT_FALSE(read_callback_.have_result());
620
621 // Even though the read is scheduled to complete at sequence number 0,
622 // verify that the read callback in not called, until CompleteRead() is.
623 base::MessageLoop::current()->RunUntilIdle();
624 ASSERT_FALSE(read_callback_.have_result());
625
626 CompleteRead();
627
628 ASSERT_TRUE(read_callback_.have_result());
629 ASSERT_EQ(kLen1, read_callback_.WaitForResult());
630 AssertReadBufferEquals(kMsg1, kLen1);
631 }
632
606 // ----------- Write 633 // ----------- Write
607 634
608 TEST_F(SequencedSocketDataTest, SingleSyncWriteTooEarly) { 635 TEST_F(SequencedSocketDataTest, SingleSyncWriteTooEarly) {
609 MockWrite writes[] = { 636 MockWrite writes[] = {
610 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 1), 637 MockWrite(SYNCHRONOUS, kMsg1, kLen1, 1),
611 }; 638 };
612 639
613 MockRead reads[] = {MockRead(SYNCHRONOUS, 0, 0)}; 640 MockRead reads[] = {MockRead(SYNCHRONOUS, 0, 0)};
614 641
615 Initialize(reads, arraysize(reads), writes, arraysize(writes)); 642 Initialize(reads, arraysize(reads), writes, arraysize(writes));
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
1066 1093
1067 ASSERT_EQ(ERR_IO_PENDING, 1094 ASSERT_EQ(ERR_IO_PENDING,
1068 sock_->Read(helper.read_buf().get(), kLen1, helper.callback())); 1095 sock_->Read(helper.read_buf().get(), kLen1, helper.callback()));
1069 1096
1070 base::MessageLoop::current()->RunUntilIdle(); 1097 base::MessageLoop::current()->RunUntilIdle();
1071 } 1098 }
1072 1099
1073 } // namespace 1100 } // namespace
1074 1101
1075 } // namespace net 1102 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction_unittest.cc ('k') | net/socket/socket_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698