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

Unified Diff: components/cast_channel/cast_transport_unittest.cc

Issue 2926313002: Revert of [cast_channel] Move cast_channel related files from //extensions to //components (Closed)
Patch Set: Created 3 years, 6 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 | « components/cast_channel/cast_transport.cc ('k') | components/cast_channel/keep_alive_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/cast_channel/cast_transport_unittest.cc
diff --git a/components/cast_channel/cast_transport_unittest.cc b/components/cast_channel/cast_transport_unittest.cc
deleted file mode 100644
index 0f8e9894a244e9dc9153268233507530b02bde05..0000000000000000000000000000000000000000
--- a/components/cast_channel/cast_transport_unittest.cc
+++ /dev/null
@@ -1,682 +0,0 @@
-// Copyright 2014 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 "components/cast_channel/cast_transport.h"
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <queue>
-
-#include "base/macros.h"
-#include "base/memory/ptr_util.h"
-#include "base/message_loop/message_loop.h"
-#include "base/run_loop.h"
-#include "base/test/simple_test_clock.h"
-#include "components/cast_channel/cast_framer.h"
-#include "components/cast_channel/cast_socket.h"
-#include "components/cast_channel/cast_test_util.h"
-#include "components/cast_channel/logger.h"
-#include "components/cast_channel/proto/cast_channel.pb.h"
-#include "net/base/completion_callback.h"
-#include "net/base/net_errors.h"
-#include "net/log/test_net_log.h"
-#include "net/socket/socket.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using testing::_;
-using testing::DoAll;
-using testing::InSequence;
-using testing::Invoke;
-using testing::NotNull;
-using testing::Return;
-using testing::WithArg;
-
-namespace cast_channel {
-namespace {
-
-const int kChannelId = 0;
-
-// Mockable placeholder for write completion events.
-class CompleteHandler {
- public:
- CompleteHandler() {}
- MOCK_METHOD1(Complete, void(int result));
-
- private:
- DISALLOW_COPY_AND_ASSIGN(CompleteHandler);
-};
-
-// Creates a CastMessage proto with the bare minimum required fields set.
-CastMessage CreateCastMessage() {
- CastMessage output;
- output.set_protocol_version(CastMessage::CASTV2_1_0);
- output.set_namespace_("x");
- output.set_source_id("source");
- output.set_destination_id("destination");
- output.set_payload_type(CastMessage::STRING);
- output.set_payload_utf8("payload");
- return output;
-}
-
-// FIFO queue of completion callbacks. Outstanding write operations are
-// Push()ed into the queue. Callback completion is simulated by invoking
-// Pop() in the same order as Push().
-class CompletionQueue {
- public:
- CompletionQueue() {}
- ~CompletionQueue() { CHECK_EQ(0u, cb_queue_.size()); }
-
- // Enqueues a pending completion callback.
- void Push(const net::CompletionCallback& cb) { cb_queue_.push(cb); }
- // Runs the next callback and removes it from the queue.
- void Pop(int rv) {
- CHECK_GT(cb_queue_.size(), 0u);
- cb_queue_.front().Run(rv);
- cb_queue_.pop();
- }
-
- private:
- std::queue<net::CompletionCallback> cb_queue_;
- DISALLOW_COPY_AND_ASSIGN(CompletionQueue);
-};
-
-// GMock action that reads data from an IOBuffer and writes it to a string
-// variable.
-//
-// buf_idx (template parameter 0): 0-based index of the net::IOBuffer
-// in the function mock arg list.
-// size_idx (template parameter 1): 0-based index of the byte count arg.
-// str: pointer to the string which will receive data from the buffer.
-ACTION_TEMPLATE(ReadBufferToString,
- HAS_2_TEMPLATE_PARAMS(int, buf_idx, int, size_idx),
- AND_1_VALUE_PARAMS(str)) {
- str->assign(testing::get<buf_idx>(args)->data(),
- testing::get<size_idx>(args));
-}
-
-// GMock action that writes data from a string to an IOBuffer.
-//
-// buf_idx (template parameter 0): 0-based index of the IOBuffer arg.
-// str: the string containing data to be written to the IOBuffer.
-ACTION_TEMPLATE(FillBufferFromString,
- HAS_1_TEMPLATE_PARAMS(int, buf_idx),
- AND_1_VALUE_PARAMS(str)) {
- memcpy(testing::get<buf_idx>(args)->data(), str.data(), str.size());
-}
-
-// GMock action that enqueues a write completion callback in a queue.
-//
-// buf_idx (template parameter 0): 0-based index of the CompletionCallback.
-// completion_queue: a pointer to the CompletionQueue.
-ACTION_TEMPLATE(EnqueueCallback,
- HAS_1_TEMPLATE_PARAMS(int, cb_idx),
- AND_1_VALUE_PARAMS(completion_queue)) {
- completion_queue->Push(testing::get<cb_idx>(args));
-}
-
-} // namespace
-
-class MockSocket : public net::Socket {
- public:
- MOCK_METHOD3(Read,
- int(net::IOBuffer* buf,
- int buf_len,
- const net::CompletionCallback& callback));
-
- MOCK_METHOD3(Write,
- int(net::IOBuffer* buf,
- int buf_len,
- const net::CompletionCallback& callback));
-
- virtual int SetReceiveBufferSize(int32_t size) {
- NOTREACHED();
- return 0;
- }
-
- virtual int SetSendBufferSize(int32_t size) {
- NOTREACHED();
- return 0;
- }
-};
-
-class CastTransportTest : public testing::Test {
- public:
- using ChannelError = ::cast_channel::ChannelError;
- using ChannelAuthType = ::cast_channel::ChannelAuthType;
-
- CastTransportTest() : logger_(new Logger()) {
- delegate_ = new MockCastTransportDelegate;
- transport_.reset(new CastTransportImpl(&mock_socket_, kChannelId,
- CreateIPEndPointForTest(),
- auth_type_, logger_));
- transport_->SetReadDelegate(base::WrapUnique(delegate_));
- }
- ~CastTransportTest() override {}
-
- protected:
- // Runs all pending tasks in the message loop.
- void RunPendingTasks() {
- base::RunLoop run_loop;
- run_loop.RunUntilIdle();
- }
-
- base::MessageLoop message_loop_;
- MockCastTransportDelegate* delegate_;
- MockSocket mock_socket_;
- ChannelAuthType auth_type_;
- Logger* logger_;
- std::unique_ptr<CastTransport> transport_;
-};
-
-// ----------------------------------------------------------------------------
-// Asynchronous write tests
-TEST_F(CastTransportTest, TestFullWriteAsync) {
- CompletionQueue socket_cbs;
- CompleteHandler write_handler;
- std::string output;
-
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- EXPECT_CALL(mock_socket_, Write(NotNull(), serialized_message.size(), _))
- .WillOnce(DoAll(ReadBufferToString<0, 1>(&output),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)));
- EXPECT_CALL(write_handler, Complete(net::OK));
- transport_->SendMessage(
- message,
- base::Bind(&CompleteHandler::Complete, base::Unretained(&write_handler)));
- RunPendingTasks();
- socket_cbs.Pop(serialized_message.size());
- RunPendingTasks();
- EXPECT_EQ(serialized_message, output);
-}
-
-TEST_F(CastTransportTest, TestPartialWritesAsync) {
- InSequence seq;
- CompletionQueue socket_cbs;
- CompleteHandler write_handler;
- std::string output;
-
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- // Only one byte is written.
- EXPECT_CALL(mock_socket_,
- Write(NotNull(), static_cast<int>(serialized_message.size()), _))
- .WillOnce(DoAll(ReadBufferToString<0, 1>(&output),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)));
- // Remainder of bytes are written.
- EXPECT_CALL(
- mock_socket_,
- Write(NotNull(), static_cast<int>(serialized_message.size() - 1), _))
- .WillOnce(DoAll(ReadBufferToString<0, 1>(&output),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)));
-
- transport_->SendMessage(
- message,
- base::Bind(&CompleteHandler::Complete, base::Unretained(&write_handler)));
- RunPendingTasks();
- EXPECT_EQ(serialized_message, output);
- socket_cbs.Pop(1);
- RunPendingTasks();
-
- EXPECT_CALL(write_handler, Complete(net::OK));
- socket_cbs.Pop(serialized_message.size() - 1);
- RunPendingTasks();
- EXPECT_EQ(serialized_message.substr(1, serialized_message.size() - 1),
- output);
-}
-
-TEST_F(CastTransportTest, TestWriteFailureAsync) {
- CompletionQueue socket_cbs;
- CompleteHandler write_handler;
- CastMessage message = CreateCastMessage();
- EXPECT_CALL(mock_socket_, Write(NotNull(), _, _))
- .WillOnce(
- DoAll(EnqueueCallback<2>(&socket_cbs), Return(net::ERR_IO_PENDING)));
- EXPECT_CALL(write_handler, Complete(net::ERR_FAILED));
- EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR));
- transport_->SendMessage(
- message,
- base::Bind(&CompleteHandler::Complete, base::Unretained(&write_handler)));
- RunPendingTasks();
- socket_cbs.Pop(net::ERR_CONNECTION_RESET);
- RunPendingTasks();
- EXPECT_EQ(proto::SOCKET_WRITE, logger_->GetLastErrors(kChannelId).event_type);
- EXPECT_EQ(net::ERR_CONNECTION_RESET,
- logger_->GetLastErrors(kChannelId).net_return_value);
-}
-
-// ----------------------------------------------------------------------------
-// Synchronous write tests
-TEST_F(CastTransportTest, TestFullWriteSync) {
- CompleteHandler write_handler;
- std::string output;
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
- EXPECT_CALL(mock_socket_, Write(NotNull(), serialized_message.size(), _))
- .WillOnce(DoAll(ReadBufferToString<0, 1>(&output),
- Return(serialized_message.size())));
- EXPECT_CALL(write_handler, Complete(net::OK));
- transport_->SendMessage(
- message,
- base::Bind(&CompleteHandler::Complete, base::Unretained(&write_handler)));
- RunPendingTasks();
- EXPECT_EQ(serialized_message, output);
-}
-
-TEST_F(CastTransportTest, TestPartialWritesSync) {
- InSequence seq;
- CompleteHandler write_handler;
- std::string output;
-
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- // Only one byte is written.
- EXPECT_CALL(mock_socket_, Write(NotNull(), serialized_message.size(), _))
- .WillOnce(DoAll(ReadBufferToString<0, 1>(&output), Return(1)));
- // Remainder of bytes are written.
- EXPECT_CALL(mock_socket_, Write(NotNull(), serialized_message.size() - 1, _))
- .WillOnce(DoAll(ReadBufferToString<0, 1>(&output),
- Return(serialized_message.size() - 1)));
-
- EXPECT_CALL(write_handler, Complete(net::OK));
- transport_->SendMessage(
- message,
- base::Bind(&CompleteHandler::Complete, base::Unretained(&write_handler)));
- RunPendingTasks();
- EXPECT_EQ(serialized_message.substr(1, serialized_message.size() - 1),
- output);
-}
-
-TEST_F(CastTransportTest, TestWriteFailureSync) {
- CompleteHandler write_handler;
- CastMessage message = CreateCastMessage();
- EXPECT_CALL(mock_socket_, Write(NotNull(), _, _))
- .WillOnce(Return(net::ERR_CONNECTION_RESET));
- EXPECT_CALL(write_handler, Complete(net::ERR_FAILED));
- transport_->SendMessage(
- message,
- base::Bind(&CompleteHandler::Complete, base::Unretained(&write_handler)));
- RunPendingTasks();
- EXPECT_EQ(proto::SOCKET_WRITE, logger_->GetLastErrors(kChannelId).event_type);
- EXPECT_EQ(net::ERR_CONNECTION_RESET,
- logger_->GetLastErrors(kChannelId).net_return_value);
-}
-
-// ----------------------------------------------------------------------------
-// Asynchronous read tests
-TEST_F(CastTransportTest, TestFullReadAsync) {
- InSequence s;
- CompletionQueue socket_cbs;
-
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
- EXPECT_CALL(*delegate_, Start());
-
- // Read bytes [0, 3].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)));
-
- // Read bytes [4, n].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size(),
- _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr(
- MessageFramer::MessageHeader::header_size(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size())),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)))
- .RetiresOnSaturation();
-
- EXPECT_CALL(*delegate_, OnMessage(EqualsProto(message)));
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(Return(net::ERR_IO_PENDING));
- transport_->Start();
- RunPendingTasks();
- socket_cbs.Pop(MessageFramer::MessageHeader::header_size());
- socket_cbs.Pop(serialized_message.size() -
- MessageFramer::MessageHeader::header_size());
- RunPendingTasks();
-}
-
-TEST_F(CastTransportTest, TestPartialReadAsync) {
- InSequence s;
- CompletionQueue socket_cbs;
-
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- EXPECT_CALL(*delegate_, Start());
-
- // Read bytes [0, 3].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)))
- .RetiresOnSaturation();
- // Read bytes [4, n-1].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size(),
- _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr(
- MessageFramer::MessageHeader::header_size(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size() - 1)),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)))
- .RetiresOnSaturation();
- // Read final byte.
- EXPECT_CALL(mock_socket_, Read(NotNull(), 1, _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr(
- serialized_message.size() - 1, 1)),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)))
- .RetiresOnSaturation();
- EXPECT_CALL(*delegate_, OnMessage(EqualsProto(message)));
- transport_->Start();
- socket_cbs.Pop(MessageFramer::MessageHeader::header_size());
- socket_cbs.Pop(serialized_message.size() -
- MessageFramer::MessageHeader::header_size() - 1);
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(Return(net::ERR_IO_PENDING));
- socket_cbs.Pop(1);
-}
-
-TEST_F(CastTransportTest, TestReadErrorInHeaderAsync) {
- CompletionQueue socket_cbs;
-
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- EXPECT_CALL(*delegate_, Start());
-
- // Read bytes [0, 3].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)))
- .RetiresOnSaturation();
-
- EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR));
- transport_->Start();
- // Header read failure.
- socket_cbs.Pop(net::ERR_CONNECTION_RESET);
- EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type);
- EXPECT_EQ(net::ERR_CONNECTION_RESET,
- logger_->GetLastErrors(kChannelId).net_return_value);
-}
-
-TEST_F(CastTransportTest, TestReadErrorInBodyAsync) {
- CompletionQueue socket_cbs;
-
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- EXPECT_CALL(*delegate_, Start());
-
- // Read bytes [0, 3].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)))
- .RetiresOnSaturation();
- // Read bytes [4, n-1].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size(),
- _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr(
- MessageFramer::MessageHeader::header_size(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size() - 1)),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)))
- .RetiresOnSaturation();
- EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR));
- transport_->Start();
- // Header read is OK.
- socket_cbs.Pop(MessageFramer::MessageHeader::header_size());
- // Body read fails.
- socket_cbs.Pop(net::ERR_CONNECTION_RESET);
- EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type);
- EXPECT_EQ(net::ERR_CONNECTION_RESET,
- logger_->GetLastErrors(kChannelId).net_return_value);
-}
-
-TEST_F(CastTransportTest, TestReadCorruptedMessageAsync) {
- CompletionQueue socket_cbs;
-
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- // Corrupt the serialized message body(set it to X's).
- for (size_t i = MessageFramer::MessageHeader::header_size();
- i < serialized_message.size(); ++i) {
- serialized_message[i] = 'x';
- }
-
- EXPECT_CALL(*delegate_, Start());
- // Read bytes [0, 3].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)))
- .RetiresOnSaturation();
- // Read bytes [4, n].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size(),
- _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr(
- MessageFramer::MessageHeader::header_size(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size() - 1)),
- EnqueueCallback<2>(&socket_cbs),
- Return(net::ERR_IO_PENDING)))
- .RetiresOnSaturation();
-
- EXPECT_CALL(*delegate_, OnError(ChannelError::INVALID_MESSAGE));
- transport_->Start();
- socket_cbs.Pop(MessageFramer::MessageHeader::header_size());
- socket_cbs.Pop(serialized_message.size() -
- MessageFramer::MessageHeader::header_size());
-}
-
-// ----------------------------------------------------------------------------
-// Synchronous read tests
-TEST_F(CastTransportTest, TestFullReadSync) {
- InSequence s;
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- EXPECT_CALL(*delegate_, Start());
-
- // Read bytes [0, 3].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message),
- Return(MessageFramer::MessageHeader::header_size())))
- .RetiresOnSaturation();
- // Read bytes [4, n].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size(),
- _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr(
- MessageFramer::MessageHeader::header_size(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size())),
- Return(serialized_message.size() -
- MessageFramer::MessageHeader::header_size())))
- .RetiresOnSaturation();
- EXPECT_CALL(*delegate_, OnMessage(EqualsProto(message)));
- // Async result in order to discontinue the read loop.
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(Return(net::ERR_IO_PENDING));
- transport_->Start();
-}
-
-TEST_F(CastTransportTest, TestPartialReadSync) {
- InSequence s;
-
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- EXPECT_CALL(*delegate_, Start());
-
- // Read bytes [0, 3].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message),
- Return(MessageFramer::MessageHeader::header_size())))
- .RetiresOnSaturation();
- // Read bytes [4, n-1].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size(),
- _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr(
- MessageFramer::MessageHeader::header_size(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size() - 1)),
- Return(serialized_message.size() -
- MessageFramer::MessageHeader::header_size() - 1)))
- .RetiresOnSaturation();
- // Read final byte.
- EXPECT_CALL(mock_socket_, Read(NotNull(), 1, _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr(
- serialized_message.size() - 1, 1)),
- Return(1)))
- .RetiresOnSaturation();
- EXPECT_CALL(*delegate_, OnMessage(EqualsProto(message)));
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(Return(net::ERR_IO_PENDING));
- transport_->Start();
-}
-
-TEST_F(CastTransportTest, TestReadErrorInHeaderSync) {
- InSequence s;
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- EXPECT_CALL(*delegate_, Start());
-
- // Read bytes [0, 3].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message),
- Return(net::ERR_CONNECTION_RESET)))
- .RetiresOnSaturation();
- EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR));
- transport_->Start();
-}
-
-TEST_F(CastTransportTest, TestReadErrorInBodySync) {
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- EXPECT_CALL(*delegate_, Start());
-
- // Read bytes [0, 3].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message),
- Return(MessageFramer::MessageHeader::header_size())))
- .RetiresOnSaturation();
- // Read bytes [4, n-1].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size(),
- _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr(
- MessageFramer::MessageHeader::header_size(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size() - 1)),
- Return(net::ERR_CONNECTION_RESET)))
- .RetiresOnSaturation();
- EXPECT_CALL(*delegate_, OnError(ChannelError::CAST_SOCKET_ERROR));
- transport_->Start();
- EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type);
- EXPECT_EQ(net::ERR_CONNECTION_RESET,
- logger_->GetLastErrors(kChannelId).net_return_value);
-}
-
-TEST_F(CastTransportTest, TestReadCorruptedMessageSync) {
- InSequence s;
- CastMessage message = CreateCastMessage();
- std::string serialized_message;
- EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message));
-
- // Corrupt the serialized message body(set it to X's).
- for (size_t i = MessageFramer::MessageHeader::header_size();
- i < serialized_message.size(); ++i) {
- serialized_message[i] = 'x';
- }
-
- EXPECT_CALL(*delegate_, Start());
-
- // Read bytes [0, 3].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(), MessageFramer::MessageHeader::header_size(), _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message),
- Return(MessageFramer::MessageHeader::header_size())))
- .RetiresOnSaturation();
- // Read bytes [4, n].
- EXPECT_CALL(mock_socket_,
- Read(NotNull(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size(),
- _))
- .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr(
- MessageFramer::MessageHeader::header_size(),
- serialized_message.size() -
- MessageFramer::MessageHeader::header_size() - 1)),
- Return(serialized_message.size() -
- MessageFramer::MessageHeader::header_size())))
- .RetiresOnSaturation();
- EXPECT_CALL(*delegate_, OnError(ChannelError::INVALID_MESSAGE));
- transport_->Start();
-}
-} // namespace cast_channel
« no previous file with comments | « components/cast_channel/cast_transport.cc ('k') | components/cast_channel/keep_alive_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698