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

Unified Diff: net/socket/deterministic_socket_data_unittest.cc

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/socket/client_socket_pool_manager_impl.cc ('k') | net/socket/mock_client_socket_pool_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/socket/deterministic_socket_data_unittest.cc
diff --git a/net/socket/deterministic_socket_data_unittest.cc b/net/socket/deterministic_socket_data_unittest.cc
deleted file mode 100644
index bdeba2bef55d6e5cf282a08008546541842503b9..0000000000000000000000000000000000000000
--- a/net/socket/deterministic_socket_data_unittest.cc
+++ /dev/null
@@ -1,622 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/socket/socket_test_util.h"
-
-#include <string.h>
-
-#include "base/memory/ref_counted.h"
-#include "testing/platform_test.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-//-----------------------------------------------------------------------------
-
-namespace {
-
-static const char kMsg1[] = "\0hello!\xff";
-static const int kLen1 = arraysize(kMsg1);
-static const char kMsg2[] = "\0a2345678\0";
-static const int kLen2 = arraysize(kMsg2);
-static const char kMsg3[] = "bye!";
-static const int kLen3 = arraysize(kMsg3);
-
-} // anonymous namespace
-
-namespace net {
-
-class DeterministicSocketDataTest : public PlatformTest {
- public:
- DeterministicSocketDataTest();
-
- void TearDown() override;
-
- void ReentrantReadCallback(int len, int rv);
- void ReentrantWriteCallback(const char* data, int len, int rv);
-
- protected:
- void Initialize(MockRead* reads, size_t reads_count, MockWrite* writes,
- size_t writes_count);
-
- void AssertSyncReadEquals(const char* data, int len);
- void AssertAsyncReadEquals(const char* data, int len);
- void AssertReadReturns(const char* data, int len, int rv);
- void AssertReadBufferEquals(const char* data, int len);
-
- void AssertSyncWriteEquals(const char* data, int len);
- void AssertAsyncWriteEquals(const char* data, int len);
- void AssertWriteReturns(const char* data, int len, int rv);
-
- TestCompletionCallback read_callback_;
- TestCompletionCallback write_callback_;
- StreamSocket* sock_;
- scoped_ptr<DeterministicSocketData> data_;
-
- private:
- scoped_refptr<IOBuffer> read_buf_;
- MockConnect connect_data_;
-
- HostPortPair endpoint_;
- scoped_refptr<TransportSocketParams> tcp_params_;
- ClientSocketPoolHistograms histograms_;
- DeterministicMockClientSocketFactory socket_factory_;
- MockTransportClientSocketPool socket_pool_;
- ClientSocketHandle connection_;
-
- DISALLOW_COPY_AND_ASSIGN(DeterministicSocketDataTest);
-};
-
-DeterministicSocketDataTest::DeterministicSocketDataTest()
- : sock_(NULL),
- read_buf_(NULL),
- connect_data_(SYNCHRONOUS, OK),
- endpoint_("www.google.com", 443),
- tcp_params_(new TransportSocketParams(
- endpoint_,
- false,
- false,
- OnHostResolutionCallback(),
- TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)),
- histograms_(std::string()),
- socket_pool_(10, 10, &histograms_, &socket_factory_) {}
-
-void DeterministicSocketDataTest::TearDown() {
- // Empty the current queue.
- base::MessageLoop::current()->RunUntilIdle();
- PlatformTest::TearDown();
-}
-
-void DeterministicSocketDataTest::Initialize(MockRead* reads,
- size_t reads_count,
- MockWrite* writes,
- size_t writes_count) {
- data_.reset(new DeterministicSocketData(reads, reads_count,
- writes, writes_count));
- data_->set_connect_data(connect_data_);
- socket_factory_.AddSocketDataProvider(data_.get());
-
- // Perform the TCP connect
- EXPECT_EQ(OK,
- connection_.Init(endpoint_.ToString(),
- tcp_params_,
- LOWEST,
- CompletionCallback(),
- reinterpret_cast<TransportClientSocketPool*>(&socket_pool_),
- BoundNetLog()));
- sock_ = connection_.socket();
-}
-
-void DeterministicSocketDataTest::AssertSyncReadEquals(const char* data,
- int len) {
- // Issue the read, which will complete immediately
- AssertReadReturns(data, len, len);
- AssertReadBufferEquals(data, len);
-}
-
-void DeterministicSocketDataTest::AssertAsyncReadEquals(const char* data,
- int len) {
- // Issue the read, which will be completed asynchronously
- AssertReadReturns(data, len, ERR_IO_PENDING);
-
- EXPECT_FALSE(read_callback_.have_result());
- EXPECT_TRUE(sock_->IsConnected());
- data_->RunFor(1); // Runs 1 step, to cause the callbacks to be invoked
-
- // Now the read should complete
- ASSERT_EQ(len, read_callback_.WaitForResult());
- AssertReadBufferEquals(data, len);
-}
-
-void DeterministicSocketDataTest::AssertReadReturns(const char* data,
- int len, int rv) {
- read_buf_ = new IOBuffer(len);
- ASSERT_EQ(rv, sock_->Read(read_buf_.get(), len, read_callback_.callback()));
-}
-
-void DeterministicSocketDataTest::AssertReadBufferEquals(const char* data,
- int len) {
- ASSERT_EQ(std::string(data, len), std::string(read_buf_->data(), len));
-}
-
-void DeterministicSocketDataTest::AssertSyncWriteEquals(const char* data,
- int len) {
- scoped_refptr<IOBuffer> buf(new IOBuffer(len));
- memcpy(buf->data(), data, len);
-
- // Issue the write, which will complete immediately
- ASSERT_EQ(len, sock_->Write(buf.get(), len, write_callback_.callback()));
-}
-
-void DeterministicSocketDataTest::AssertAsyncWriteEquals(const char* data,
- int len) {
- // Issue the read, which will be completed asynchronously
- AssertWriteReturns(data, len, ERR_IO_PENDING);
-
- EXPECT_FALSE(read_callback_.have_result());
- EXPECT_TRUE(sock_->IsConnected());
- data_->RunFor(1); // Runs 1 step, to cause the callbacks to be invoked
-
- ASSERT_EQ(len, write_callback_.WaitForResult());
-}
-
-void DeterministicSocketDataTest::AssertWriteReturns(const char* data,
- int len, int rv) {
- scoped_refptr<IOBuffer> buf(new IOBuffer(len));
- memcpy(buf->data(), data, len);
-
- // Issue the read, which will complete asynchronously
- ASSERT_EQ(rv, sock_->Write(buf.get(), len, write_callback_.callback()));
-}
-
-void DeterministicSocketDataTest::ReentrantReadCallback(int len, int rv) {
- scoped_refptr<IOBuffer> read_buf(new IOBuffer(len));
- EXPECT_EQ(len,
- sock_->Read(
- read_buf.get(),
- len,
- base::Bind(&DeterministicSocketDataTest::ReentrantReadCallback,
- base::Unretained(this),
- len)));
-}
-
-void DeterministicSocketDataTest::ReentrantWriteCallback(
- const char* data, int len, int rv) {
- scoped_refptr<IOBuffer> write_buf(new IOBuffer(len));
- memcpy(write_buf->data(), data, len);
- EXPECT_EQ(len,
- sock_->Write(
- write_buf.get(),
- len,
- base::Bind(&DeterministicSocketDataTest::ReentrantWriteCallback,
- base::Unretained(this),
- data,
- len)));
-}
-
-// ----------- Read
-
-TEST_F(DeterministicSocketDataTest, SingleSyncReadWhileStopped) {
- MockRead reads[] = {
- MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
- MockRead(SYNCHRONOUS, 0, 1), // EOF
- };
-
- Initialize(reads, arraysize(reads), NULL, 0);
-
- data_->SetStopped(true);
- AssertReadReturns(kMsg1, kLen1, ERR_UNEXPECTED);
-}
-
-TEST_F(DeterministicSocketDataTest, SingleSyncReadTooEarly) {
- MockRead reads[] = {
- MockRead(SYNCHRONOUS, kMsg1, kLen1, 1), // Sync Read
- MockRead(SYNCHRONOUS, 0, 2), // EOF
- };
-
- MockWrite writes[] = {
- MockWrite(SYNCHRONOUS, 0, 0)
- };
-
- Initialize(reads, arraysize(reads), writes, arraysize(writes));
-
- data_->StopAfter(2);
- ASSERT_FALSE(data_->stopped());
- AssertReadReturns(kMsg1, kLen1, ERR_UNEXPECTED);
-}
-
-TEST_F(DeterministicSocketDataTest, SingleSyncRead) {
- MockRead reads[] = {
- MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
- MockRead(SYNCHRONOUS, 0, 1), // EOF
- };
-
- Initialize(reads, arraysize(reads), NULL, 0);
- // Make sure we don't stop before we've read all the data
- data_->StopAfter(1);
- AssertSyncReadEquals(kMsg1, kLen1);
-}
-
-TEST_F(DeterministicSocketDataTest, MultipleSyncReads) {
- MockRead reads[] = {
- MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
- MockRead(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Read
- MockRead(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Read
- MockRead(SYNCHRONOUS, kMsg3, kLen3, 3), // Sync Read
- MockRead(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Read
- MockRead(SYNCHRONOUS, kMsg3, kLen3, 5), // Sync Read
- MockRead(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Read
- MockRead(SYNCHRONOUS, 0, 7), // EOF
- };
-
- Initialize(reads, arraysize(reads), NULL, 0);
-
- // Make sure we don't stop before we've read all the data
- data_->StopAfter(10);
- AssertSyncReadEquals(kMsg1, kLen1);
- AssertSyncReadEquals(kMsg2, kLen2);
- AssertSyncReadEquals(kMsg3, kLen3);
- AssertSyncReadEquals(kMsg3, kLen3);
- AssertSyncReadEquals(kMsg2, kLen2);
- AssertSyncReadEquals(kMsg3, kLen3);
- AssertSyncReadEquals(kMsg1, kLen1);
-}
-
-TEST_F(DeterministicSocketDataTest, SingleAsyncRead) {
- MockRead reads[] = {
- MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read
- MockRead(SYNCHRONOUS, 0, 1), // EOF
- };
-
- Initialize(reads, arraysize(reads), NULL, 0);
-
- AssertAsyncReadEquals(kMsg1, kLen1);
-}
-
-TEST_F(DeterministicSocketDataTest, MultipleAsyncReads) {
- MockRead reads[] = {
- MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read
- MockRead(ASYNC, kMsg2, kLen2, 1), // Async Read
- MockRead(ASYNC, kMsg3, kLen3, 2), // Async Read
- MockRead(ASYNC, kMsg3, kLen3, 3), // Async Read
- MockRead(ASYNC, kMsg2, kLen2, 4), // Async Read
- MockRead(ASYNC, kMsg3, kLen3, 5), // Async Read
- MockRead(ASYNC, kMsg1, kLen1, 6), // Async Read
- MockRead(SYNCHRONOUS, 0, 7), // EOF
- };
-
- Initialize(reads, arraysize(reads), NULL, 0);
-
- AssertAsyncReadEquals(kMsg1, kLen1);
- AssertAsyncReadEquals(kMsg2, kLen2);
- AssertAsyncReadEquals(kMsg3, kLen3);
- AssertAsyncReadEquals(kMsg3, kLen3);
- AssertAsyncReadEquals(kMsg2, kLen2);
- AssertAsyncReadEquals(kMsg3, kLen3);
- AssertAsyncReadEquals(kMsg1, kLen1);
-}
-
-TEST_F(DeterministicSocketDataTest, MixedReads) {
- MockRead reads[] = {
- MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
- MockRead(ASYNC, kMsg2, kLen2, 1), // Async Read
- MockRead(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Read
- MockRead(ASYNC, kMsg3, kLen3, 3), // Async Read
- MockRead(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Read
- MockRead(ASYNC, kMsg3, kLen3, 5), // Async Read
- MockRead(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Read
- MockRead(SYNCHRONOUS, 0, 7), // EOF
- };
-
- Initialize(reads, arraysize(reads), NULL, 0);
-
- data_->StopAfter(1);
- AssertSyncReadEquals(kMsg1, kLen1);
- AssertAsyncReadEquals(kMsg2, kLen2);
- data_->StopAfter(1);
- AssertSyncReadEquals(kMsg3, kLen3);
- AssertAsyncReadEquals(kMsg3, kLen3);
- data_->StopAfter(1);
- AssertSyncReadEquals(kMsg2, kLen2);
- AssertAsyncReadEquals(kMsg3, kLen3);
- data_->StopAfter(1);
- AssertSyncReadEquals(kMsg1, kLen1);
-}
-
-TEST_F(DeterministicSocketDataTest, SyncReadFromCompletionCallback) {
- MockRead reads[] = {
- MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read
- MockRead(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Read
- };
-
- Initialize(reads, arraysize(reads), NULL, 0);
-
- data_->StopAfter(2);
-
- scoped_refptr<IOBuffer> read_buf(new IOBuffer(kLen1));
- ASSERT_EQ(ERR_IO_PENDING,
- sock_->Read(
- read_buf.get(),
- kLen1,
- base::Bind(&DeterministicSocketDataTest::ReentrantReadCallback,
- base::Unretained(this),
- kLen2)));
- data_->Run();
-}
-
-// ----------- Write
-
-TEST_F(DeterministicSocketDataTest, SingleSyncWriteWhileStopped) {
- MockWrite writes[] = {
- MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
- };
-
- Initialize(NULL, 0, writes, arraysize(writes));
-
- data_->SetStopped(true);
- AssertWriteReturns(kMsg1, kLen1, ERR_UNEXPECTED);
-}
-
-TEST_F(DeterministicSocketDataTest, SingleSyncWriteTooEarly) {
- MockWrite writes[] = {
- MockWrite(SYNCHRONOUS, kMsg1, kLen1, 1), // Sync Write
- };
-
- MockRead reads[] = {
- MockRead(SYNCHRONOUS, 0, 0)
- };
-
- Initialize(reads, arraysize(reads), writes, arraysize(writes));
-
- data_->StopAfter(2);
- ASSERT_FALSE(data_->stopped());
- AssertWriteReturns(kMsg1, kLen1, ERR_UNEXPECTED);
-}
-
-TEST_F(DeterministicSocketDataTest, SingleSyncWrite) {
- MockWrite writes[] = {
- MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Write
- };
-
- Initialize(NULL, 0, writes, arraysize(writes));
-
- // Make sure we don't stop before we've read all the data
- data_->StopAfter(1);
- AssertSyncWriteEquals(kMsg1, kLen1);
-}
-
-TEST_F(DeterministicSocketDataTest, MultipleSyncWrites) {
- MockWrite writes[] = {
- MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Write
- MockWrite(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Write
- MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write
- MockWrite(SYNCHRONOUS, kMsg3, kLen3, 3), // Sync Write
- MockWrite(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Write
- MockWrite(SYNCHRONOUS, kMsg3, kLen3, 5), // Sync Write
- MockWrite(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Write
- };
-
- Initialize(NULL, 0, writes, arraysize(writes));
-
- // Make sure we don't stop before we've read all the data
- data_->StopAfter(10);
- AssertSyncWriteEquals(kMsg1, kLen1);
- AssertSyncWriteEquals(kMsg2, kLen2);
- AssertSyncWriteEquals(kMsg3, kLen3);
- AssertSyncWriteEquals(kMsg3, kLen3);
- AssertSyncWriteEquals(kMsg2, kLen2);
- AssertSyncWriteEquals(kMsg3, kLen3);
- AssertSyncWriteEquals(kMsg1, kLen1);
-}
-
-TEST_F(DeterministicSocketDataTest, SingleAsyncWrite) {
- MockWrite writes[] = {
- MockWrite(ASYNC, kMsg1, kLen1, 0), // Async Write
- };
-
- Initialize(NULL, 0, writes, arraysize(writes));
-
- AssertAsyncWriteEquals(kMsg1, kLen1);
-}
-
-TEST_F(DeterministicSocketDataTest, MultipleAsyncWrites) {
- MockWrite writes[] = {
- MockWrite(ASYNC, kMsg1, kLen1, 0), // Async Write
- MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write
- MockWrite(ASYNC, kMsg3, kLen3, 2), // Async Write
- MockWrite(ASYNC, kMsg3, kLen3, 3), // Async Write
- MockWrite(ASYNC, kMsg2, kLen2, 4), // Async Write
- MockWrite(ASYNC, kMsg3, kLen3, 5), // Async Write
- MockWrite(ASYNC, kMsg1, kLen1, 6), // Async Write
- };
-
- Initialize(NULL, 0, writes, arraysize(writes));
-
- AssertAsyncWriteEquals(kMsg1, kLen1);
- AssertAsyncWriteEquals(kMsg2, kLen2);
- AssertAsyncWriteEquals(kMsg3, kLen3);
- AssertAsyncWriteEquals(kMsg3, kLen3);
- AssertAsyncWriteEquals(kMsg2, kLen2);
- AssertAsyncWriteEquals(kMsg3, kLen3);
- AssertAsyncWriteEquals(kMsg1, kLen1);
-}
-
-TEST_F(DeterministicSocketDataTest, MixedWrites) {
- MockWrite writes[] = {
- MockWrite(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Write
- MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write
- MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write
- MockWrite(ASYNC, kMsg3, kLen3, 3), // Async Write
- MockWrite(SYNCHRONOUS, kMsg2, kLen2, 4), // Sync Write
- MockWrite(ASYNC, kMsg3, kLen3, 5), // Async Write
- MockWrite(SYNCHRONOUS, kMsg1, kLen1, 6), // Sync Write
- };
-
- Initialize(NULL, 0, writes, arraysize(writes));
-
- data_->StopAfter(1);
- AssertSyncWriteEquals(kMsg1, kLen1);
- AssertAsyncWriteEquals(kMsg2, kLen2);
- data_->StopAfter(1);
- AssertSyncWriteEquals(kMsg3, kLen3);
- AssertAsyncWriteEquals(kMsg3, kLen3);
- data_->StopAfter(1);
- AssertSyncWriteEquals(kMsg2, kLen2);
- AssertAsyncWriteEquals(kMsg3, kLen3);
- data_->StopAfter(1);
- AssertSyncWriteEquals(kMsg1, kLen1);
-}
-
-TEST_F(DeterministicSocketDataTest, SyncWriteFromCompletionCallback) {
- MockWrite writes[] = {
- MockWrite(ASYNC, kMsg1, kLen1, 0), // Async Write
- MockWrite(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Write
- };
-
- Initialize(NULL, 0, writes, arraysize(writes));
-
- data_->StopAfter(2);
-
- scoped_refptr<IOBuffer> write_buf(new IOBuffer(kLen1));
- memcpy(write_buf->data(), kMsg1, kLen1);
- ASSERT_EQ(ERR_IO_PENDING,
- sock_->Write(
- write_buf.get(),
- kLen1,
- base::Bind(&DeterministicSocketDataTest::ReentrantWriteCallback,
- base::Unretained(this),
- kMsg2,
- kLen2)));
- data_->Run();
-}
-
-// ----------- Mixed Reads and Writes
-
-TEST_F(DeterministicSocketDataTest, MixedSyncOperations) {
- MockRead reads[] = {
- MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
- MockRead(SYNCHRONOUS, kMsg2, kLen2, 3), // Sync Read
- MockRead(SYNCHRONOUS, 0, 4), // EOF
- };
-
- MockWrite writes[] = {
- MockWrite(SYNCHRONOUS, kMsg2, kLen2, 1), // Sync Write
- MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write
- };
-
- Initialize(reads, arraysize(reads), writes, arraysize(writes));
-
- // Make sure we don't stop before we've read/written everything
- data_->StopAfter(10);
- AssertSyncReadEquals(kMsg1, kLen1);
- AssertSyncWriteEquals(kMsg2, kLen2);
- AssertSyncWriteEquals(kMsg3, kLen3);
- AssertSyncReadEquals(kMsg2, kLen2);
-}
-
-TEST_F(DeterministicSocketDataTest, MixedAsyncOperations) {
- MockRead reads[] = {
- MockRead(ASYNC, kMsg1, kLen1, 0), // Sync Read
- MockRead(ASYNC, kMsg2, kLen2, 3), // Sync Read
- MockRead(ASYNC, 0, 4), // EOF
- };
-
- MockWrite writes[] = {
- MockWrite(ASYNC, kMsg2, kLen2, 1), // Sync Write
- MockWrite(ASYNC, kMsg3, kLen3, 2), // Sync Write
- };
-
- Initialize(reads, arraysize(reads), writes, arraysize(writes));
-
- AssertAsyncReadEquals(kMsg1, kLen1);
- AssertAsyncWriteEquals(kMsg2, kLen2);
- AssertAsyncWriteEquals(kMsg3, kLen3);
- AssertAsyncReadEquals(kMsg2, kLen2);
-}
-
-TEST_F(DeterministicSocketDataTest, InterleavedAsyncOperations) {
- // Order of completion is read, write, write, read
- MockRead reads[] = {
- MockRead(ASYNC, kMsg1, kLen1, 0), // Async Read
- MockRead(ASYNC, kMsg2, kLen2, 3), // Async Read
- MockRead(ASYNC, 0, 4), // EOF
- };
-
- MockWrite writes[] = {
- MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write
- MockWrite(ASYNC, kMsg3, kLen3, 2), // Async Write
- };
-
- Initialize(reads, arraysize(reads), writes, arraysize(writes));
-
- // Issue the write, which will block until the read completes
- AssertWriteReturns(kMsg2, kLen2, ERR_IO_PENDING);
-
- // Issue the read which will return first
- AssertReadReturns(kMsg1, kLen1, ERR_IO_PENDING);
-
- data_->RunFor(1);
- ASSERT_TRUE(read_callback_.have_result());
- ASSERT_EQ(kLen1, read_callback_.WaitForResult());
- AssertReadBufferEquals(kMsg1, kLen1);
-
- data_->RunFor(1);
- ASSERT_TRUE(write_callback_.have_result());
- ASSERT_EQ(kLen2, write_callback_.WaitForResult());
-
- data_->StopAfter(1);
- // Issue the read, which will block until the write completes
- AssertReadReturns(kMsg2, kLen2, ERR_IO_PENDING);
-
- // Issue the writes which will return first
- AssertWriteReturns(kMsg3, kLen3, ERR_IO_PENDING);
-
- data_->RunFor(1);
- ASSERT_TRUE(write_callback_.have_result());
- ASSERT_EQ(kLen3, write_callback_.WaitForResult());
-
- data_->RunFor(1);
- ASSERT_TRUE(read_callback_.have_result());
- ASSERT_EQ(kLen2, read_callback_.WaitForResult());
- AssertReadBufferEquals(kMsg2, kLen2);
-}
-
-TEST_F(DeterministicSocketDataTest, InterleavedMixedOperations) {
- // Order of completion is read, write, write, read
- MockRead reads[] = {
- MockRead(SYNCHRONOUS, kMsg1, kLen1, 0), // Sync Read
- MockRead(ASYNC, kMsg2, kLen2, 3), // Async Read
- MockRead(SYNCHRONOUS, 0, 4), // EOF
- };
-
- MockWrite writes[] = {
- MockWrite(ASYNC, kMsg2, kLen2, 1), // Async Write
- MockWrite(SYNCHRONOUS, kMsg3, kLen3, 2), // Sync Write
- };
-
- Initialize(reads, arraysize(reads), writes, arraysize(writes));
-
- // Issue the write, which will block until the read completes
- AssertWriteReturns(kMsg2, kLen2, ERR_IO_PENDING);
-
- // Issue the writes which will complete immediately
- data_->StopAfter(1);
- AssertSyncReadEquals(kMsg1, kLen1);
-
- data_->RunFor(1);
- ASSERT_TRUE(write_callback_.have_result());
- ASSERT_EQ(kLen2, write_callback_.WaitForResult());
-
- // Issue the read, which will block until the write completes
- AssertReadReturns(kMsg2, kLen2, ERR_IO_PENDING);
-
- // Issue the writes which will complete immediately
- data_->StopAfter(1);
- AssertSyncWriteEquals(kMsg3, kLen3);
-
- data_->RunFor(1);
- ASSERT_TRUE(read_callback_.have_result());
- ASSERT_EQ(kLen2, read_callback_.WaitForResult());
- AssertReadBufferEquals(kMsg2, kLen2);
-}
-
-} // namespace net
« no previous file with comments | « net/socket/client_socket_pool_manager_impl.cc ('k') | net/socket/mock_client_socket_pool_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698