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

Unified Diff: remoting/base/buffered_socket_writer_unittest.cc

Issue 954973004: Move BufferedSocketWriter from remoting/protocol to remoting/base (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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 | « remoting/base/buffered_socket_writer.cc ('k') | remoting/protocol/audio_writer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/base/buffered_socket_writer_unittest.cc
diff --git a/remoting/protocol/buffered_socket_writer_unittest.cc b/remoting/base/buffered_socket_writer_unittest.cc
similarity index 53%
rename from remoting/protocol/buffered_socket_writer_unittest.cc
rename to remoting/base/buffered_socket_writer_unittest.cc
index f257c8fc075c6640c85f5cbe00bc3a6f5696b5f5..6668d101ba18911f1a20091e694b50653cfdb9fa 100644
--- a/remoting/protocol/buffered_socket_writer_unittest.cc
+++ b/remoting/base/buffered_socket_writer_unittest.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2015 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 "remoting/protocol/buffered_socket_writer.h"
+#include "remoting/base/buffered_socket_writer.h"
#include <stdlib.h>
@@ -11,16 +11,55 @@
#include "base/run_loop.h"
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
-#include "remoting/protocol/fake_session.h"
+#include "net/socket/socket_test_util.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace remoting {
-namespace protocol {
namespace {
const int kTestBufferSize = 10 * 1024; // 10k;
const size_t kWriteChunkSize = 1024U;
+
+class SocketDataProvider: public net::SocketDataProvider {
+ public:
+ SocketDataProvider()
+ : write_limit_(-1), async_write_(false), next_write_error_(net::OK) {}
+
+ net::MockRead GetNextRead() override {
+ return net::MockRead(net::ASYNC, net::ERR_IO_PENDING);
+ }
+
+ net::MockWriteResult OnWrite(const std::string& data) override {
+ if (next_write_error_ != net::OK) {
+ int r = next_write_error_;
+ next_write_error_ = net::OK;
+ return net::MockWriteResult(async_write_ ? net::ASYNC : net::SYNCHRONOUS,
+ r);
+ }
+ int size = data.size();
+ if (write_limit_ > 0)
+ size = std::min(write_limit_, size);
+ written_data_.append(data, 0, size);
+ return net::MockWriteResult(async_write_ ? net::ASYNC : net::SYNCHRONOUS,
+ size);
+ }
+
+ void Reset() override {}
+
+ std::string written_data() { return written_data_; }
+
+ void set_write_limit(int limit) { write_limit_ = limit; }
+ void set_async_write(bool async_write) { async_write_ = async_write; }
+ void set_next_write_error(int error) { next_write_error_ = error; }
+
+ private:
+ std::string written_data_;
+ int write_limit_;
+ bool async_write_;
+ int next_write_error_;
+};
+
} // namespace
class BufferedSocketWriterTest : public testing::Test {
@@ -29,17 +68,9 @@ class BufferedSocketWriterTest : public testing::Test {
: write_error_(0) {
}
- void OnDone() {
- base::MessageLoop::current()->PostTask(FROM_HERE,
- base::MessageLoop::QuitClosure());
- }
-
- void DestroyWriterAndQuit() {
- written_data_ = socket_->written_data();
+ void DestroyWriter() {
writer_.reset();
socket_.reset();
- base::MessageLoop::current()->PostTask(FROM_HERE,
- base::MessageLoop::QuitClosure());
}
void Unexpected() {
@@ -48,7 +79,12 @@ class BufferedSocketWriterTest : public testing::Test {
protected:
void SetUp() override {
- socket_.reset(new FakeStreamSocket());
+ socket_.reset(new net::MockTCPClientSocket(net::AddressList(), &net_log_,
+ &socket_data_provider_));
+ socket_data_provider_.set_connect_data(
+ net::MockConnect(net::SYNCHRONOUS, net::OK));
+ EXPECT_EQ(net::OK, socket_->Connect(net::CompletionCallback()));
+
writer_.reset(new BufferedSocketWriter());
writer_->Init(socket_.get(), base::Bind(
&BufferedSocketWriterTest::OnWriteFailed, base::Unretained(this)));
@@ -65,18 +101,18 @@ class BufferedSocketWriterTest : public testing::Test {
}
void TestWrite() {
- writer_->Write(test_buffer_, base::Bind(&BufferedSocketWriterTest::OnDone,
- base::Unretained(this)));
- writer_->Write(test_buffer_2_, base::Bind(&BufferedSocketWriterTest::OnDone,
- base::Unretained(this)));
- message_loop_.Run();
+ writer_->Write(test_buffer_, base::Closure());
+ writer_->Write(test_buffer_2_, base::Closure());
+ base::RunLoop().RunUntilIdle();
ASSERT_EQ(static_cast<size_t>(test_buffer_->size() +
test_buffer_2_->size()),
- socket_->written_data().size());
- EXPECT_EQ(0, memcmp(test_buffer_->data(), socket_->written_data().data(),
+ socket_data_provider_.written_data().size());
+ EXPECT_EQ(0, memcmp(test_buffer_->data(),
+ socket_data_provider_.written_data().data(),
test_buffer_->size()));
EXPECT_EQ(0, memcmp(test_buffer_2_->data(),
- socket_->written_data().data() + test_buffer_->size(),
+ socket_data_provider_.written_data().data() +
+ test_buffer_->size(),
test_buffer_2_->size()));
}
@@ -84,25 +120,27 @@ class BufferedSocketWriterTest : public testing::Test {
writer_->Write(test_buffer_, base::Bind(
base::IgnoreResult(&BufferedSocketWriterBase::Write),
base::Unretained(writer_.get()), test_buffer_2_,
- base::Bind(&BufferedSocketWriterTest::OnDone,
- base::Unretained(this))));
- message_loop_.Run();
+ base::Closure()));
+ base::RunLoop().RunUntilIdle();
ASSERT_EQ(static_cast<size_t>(test_buffer_->size() +
test_buffer_2_->size()),
- socket_->written_data().size());
- EXPECT_EQ(0, memcmp(test_buffer_->data(), socket_->written_data().data(),
+ socket_data_provider_.written_data().size());
+ EXPECT_EQ(0, memcmp(test_buffer_->data(),
+ socket_data_provider_.written_data().data(),
test_buffer_->size()));
EXPECT_EQ(0, memcmp(test_buffer_2_->data(),
- socket_->written_data().data() + test_buffer_->size(),
+ socket_data_provider_.written_data().data() +
+ test_buffer_->size(),
test_buffer_2_->size()));
}
base::MessageLoop message_loop_;
- scoped_ptr<FakeStreamSocket> socket_;
+ net::NetLog net_log_;
+ SocketDataProvider socket_data_provider_;
+ scoped_ptr<net::StreamSocket> socket_;
scoped_ptr<BufferedSocketWriter> writer_;
scoped_refptr<net::IOBufferWithSize> test_buffer_;
scoped_refptr<net::IOBufferWithSize> test_buffer_2_;
- std::string written_data_;
int write_error_;
};
@@ -113,14 +151,14 @@ TEST_F(BufferedSocketWriterTest, WriteFull) {
// Test synchronous write in 1k chunks.
TEST_F(BufferedSocketWriterTest, WriteChunks) {
- socket_->set_write_limit(kWriteChunkSize);
+ socket_data_provider_.set_write_limit(kWriteChunkSize);
TestWrite();
}
// Test asynchronous write.
TEST_F(BufferedSocketWriterTest, WriteAsync) {
- socket_->set_async_write(true);
- socket_->set_write_limit(kWriteChunkSize);
+ socket_data_provider_.set_async_write(true);
+ socket_data_provider_.set_write_limit(kWriteChunkSize);
TestWrite();
}
@@ -131,59 +169,58 @@ TEST_F(BufferedSocketWriterTest, AppendInCallbackSync) {
// Make sure we can call Write() from the done callback.
TEST_F(BufferedSocketWriterTest, AppendInCallbackAsync) {
- socket_->set_async_write(true);
- socket_->set_write_limit(kWriteChunkSize);
+ socket_data_provider_.set_async_write(true);
+ socket_data_provider_.set_write_limit(kWriteChunkSize);
TestAppendInCallback();
}
// Test that the writer can be destroyed from callback.
TEST_F(BufferedSocketWriterTest, DestroyFromCallback) {
- socket_->set_async_write(true);
+ socket_data_provider_.set_async_write(true);
writer_->Write(test_buffer_, base::Bind(
- &BufferedSocketWriterTest::DestroyWriterAndQuit,
+ &BufferedSocketWriterTest::DestroyWriter,
base::Unretained(this)));
writer_->Write(test_buffer_2_, base::Bind(
&BufferedSocketWriterTest::Unexpected,
base::Unretained(this)));
- socket_->set_async_write(false);
- message_loop_.Run();
- ASSERT_GE(written_data_.size(),
+ socket_data_provider_.set_async_write(false);
+ base::RunLoop().RunUntilIdle();
+ ASSERT_GE(socket_data_provider_.written_data().size(),
static_cast<size_t>(test_buffer_->size()));
- EXPECT_EQ(0, memcmp(test_buffer_->data(), written_data_.data(),
+ EXPECT_EQ(0, memcmp(test_buffer_->data(),
+ socket_data_provider_.written_data().data(),
test_buffer_->size()));
}
// Verify that it stops writing after the first error.
TEST_F(BufferedSocketWriterTest, TestWriteErrorSync) {
- socket_->set_write_limit(kWriteChunkSize);
+ socket_data_provider_.set_write_limit(kWriteChunkSize);
writer_->Write(test_buffer_, base::Closure());
- socket_->set_async_write(true);
+ socket_data_provider_.set_async_write(true);
+ socket_data_provider_.set_next_write_error(net::ERR_FAILED);
writer_->Write(test_buffer_2_,
base::Bind(&BufferedSocketWriterTest::Unexpected,
base::Unretained(this)));
- socket_->set_next_write_error(net::ERR_FAILED);
- socket_->set_async_write(false);
+ socket_data_provider_.set_async_write(false);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(net::ERR_FAILED, write_error_);
EXPECT_EQ(static_cast<size_t>(test_buffer_->size()),
- socket_->written_data().size());
+ socket_data_provider_.written_data().size());
}
// Verify that it stops writing after the first error.
TEST_F(BufferedSocketWriterTest, TestWriteErrorAsync) {
- socket_->set_write_limit(kWriteChunkSize);
+ socket_data_provider_.set_write_limit(kWriteChunkSize);
writer_->Write(test_buffer_, base::Closure());
- socket_->set_async_write(true);
+ socket_data_provider_.set_async_write(true);
+ socket_data_provider_.set_next_write_error(net::ERR_FAILED);
writer_->Write(test_buffer_2_,
base::Bind(&BufferedSocketWriterTest::Unexpected,
base::Unretained(this)));
- socket_->set_next_write_error(net::ERR_FAILED);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(net::ERR_FAILED, write_error_);
EXPECT_EQ(static_cast<size_t>(test_buffer_->size()),
- socket_->written_data().size());
+ socket_data_provider_.written_data().size());
}
-} // namespace protocol
} // namespace remoting
-
« no previous file with comments | « remoting/base/buffered_socket_writer.cc ('k') | remoting/protocol/audio_writer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698