Commit 7a322ca1 authored by Findit's avatar Findit

Revert "[cast_bindings] Tests for MessagePort abstraction."

This reverts commit 02cc2edd.

Reason for revert:

Findit (https://goo.gl/kROfz5) identified CL at revision 824126 as the
culprit for failures in the build cycles as shown on:
https://analysis.chromium.org/waterfall/culprit?key=ag9zfmZpbmRpdC1mb3ItbWVyRAsSDVdmU3VzcGVjdGVkQ0wiMWNocm9taXVtLzAyY2MyZWRkMzBiODg3NGIyOTRkYTRjMGQ0OWQ5YjA1Y2VkN2MzNTgM

Sample Failed Build: https://ci.chromium.org/b/8864530624610119968

Sample Failed Step: compile

Original change's description:
> [cast_bindings] Tests for MessagePort abstraction.
> 
> Test coverage for public MessagePort interface and its interactions with
> MessagePort::Receiver. Includes conversion to and from the underlying
> platform type of MessagePortCast or MessagePortFuchsia.
> 
> Bug: 1135377
> Test: //components/cast/message_port:message_port_test added
> Change-Id: I5e51aa5e08eb1e3e8957963b033497a94fe0bdac
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2515208
> Commit-Queue: Shawn Quereshi <shawnq@google.com>
> Reviewed-by: Kevin Marshall <kmarshall@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#824126}


Change-Id: Ia7a781d21eb5f788389a350f24994fd7d0629502
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1135377
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2519407
Cr-Commit-Position: refs/heads/master@{#824149}
parent d145cd7b
......@@ -233,7 +233,6 @@ test("components_unittests") {
"//components/blocked_content:unit_tests",
"//components/browsing_data/content:unit_tests",
"//components/captive_portal/content:unit_tests",
"//components/cast:unit_tests",
"//components/cast_certificate:unit_tests",
"//components/cast_channel:unit_tests",
"//components/certificate_transparency:unit_tests",
......
......@@ -5,8 +5,3 @@
source_set("export") {
sources = [ "cast_component_export.h" ]
}
source_set("unit_tests") {
testonly = true
deps = [ "//components/cast/message_port:message_port_unittest" ]
}
......@@ -3,7 +3,6 @@
# found in the LICENSE file.
import("//build/config/features.gni")
import("//testing/test.gni")
source_set("message_port") {
if (is_fuchsia) {
......@@ -59,21 +58,6 @@ source_set("message_port_cast") {
]
}
source_set("message_port_unittest") {
testonly = true
deps = [
":message_port",
":test_message_port_receiver",
"//base/test:test_support",
"//mojo/core/embedder",
"//testing/gtest",
]
if (is_fuchsia || is_chromecast) {
sources = [ "message_port_unittest.cc" ]
}
}
source_set("test_message_port_receiver") {
testonly = true
sources = [
......@@ -81,7 +65,7 @@ source_set("test_message_port_receiver") {
"test_message_port_receiver.h",
]
deps = [
":public",
":message_port",
"//base",
]
}
include_rules = [
"+fuchsia",
"+third_party/blink/public/common/messaging",
"+fuchsia",
]
......@@ -63,6 +63,7 @@ blink::WebMessagePort MessagePortCast::TakePort() {
return std::move(port_);
}
// cast_api_bindings::MessagePortCast implementation
bool MessagePortCast::PostMessage(base::StringPiece message) {
return PostMessageWithTransferables(message, {});
}
......
// Copyright 2020 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/message_port/message_port.h"
#include "base/run_loop.h"
#include "base/test/task_environment.h"
#include "build/build_config.h"
#include "components/cast/message_port/test_message_port_receiver.h"
#include "testing/gtest/include/gtest/gtest.h"
#if defined(OS_FUCHSIA)
#include "components/cast/message_port/message_port_fuchsia.h"
#include "fuchsia/fidl/chromium/cast/cpp/fidl.h"
#else
#include "components/cast/message_port/message_port_cast.h" // nogncheck
#include "third_party/blink/public/common/messaging/web_message_port.h" // nogncheck
#endif // defined(OS_FUCHSIA)
#ifdef PostMessage
#undef PostMessage
#endif
namespace cast_api_bindings {
class MessagePortTest : public ::testing::Test {
public:
MessagePortTest()
: task_environment_(base::test::TaskEnvironment::MainThreadType::IO) {
MessagePort::CreatePair(&client_, &server_);
}
~MessagePortTest() override = default;
void SetDefaultReceivers() {
client_->SetReceiver(&client_receiver_);
server_->SetReceiver(&server_receiver_);
}
// Posts multiple |messages| from |sender| to |receiver| and validates their
// arrival order
void PostMessages(const std::vector<std::string>& messages,
MessagePort* sender,
TestMessagePortReceiver* receiver) {
for (const auto& message : messages) {
sender->PostMessage(message);
}
EXPECT_TRUE(receiver->RunUntilMessageCountEqual(messages.size()));
for (size_t i = 0; i < messages.size(); i++) {
EXPECT_EQ(receiver->buffer()[i].first, messages[i]);
}
}
// Posts a |port| from |sender| to |receiver| and validates its arrival.
// Returns the transferred |port|.
std::unique_ptr<MessagePort> PostMessageWithTransferables(
std::unique_ptr<MessagePort> port,
MessagePort* sender,
TestMessagePortReceiver* receiver) {
std::vector<std::unique_ptr<MessagePort>> ports;
ports.emplace_back(std::move(port));
sender->PostMessageWithTransferables("", std::move(ports));
EXPECT_TRUE(receiver->RunUntilMessageCountEqual(1));
EXPECT_EQ(receiver->buffer()[0].second.size(), (size_t)1);
return std::move(receiver->buffer()[0].second[0]);
}
void TestPostMessage() {
SetDefaultReceivers();
PostMessages({"from client"}, client_.get(), &server_receiver_);
PostMessages({"from server"}, server_.get(), &client_receiver_);
}
protected:
std::unique_ptr<MessagePort> client_;
std::unique_ptr<MessagePort> server_;
TestMessagePortReceiver client_receiver_;
TestMessagePortReceiver server_receiver_;
private:
const base::test::TaskEnvironment task_environment_;
};
TEST_F(MessagePortTest, Close) {
SetDefaultReceivers();
ASSERT_TRUE(client_->CanPostMessage());
ASSERT_TRUE(server_->CanPostMessage());
server_->Close();
client_receiver_.RunUntilDisconnected();
ASSERT_FALSE(client_->CanPostMessage());
ASSERT_FALSE(server_->CanPostMessage());
}
TEST_F(MessagePortTest, OnError) {
server_receiver_.SetOnMessageResult(false);
SetDefaultReceivers();
client_->PostMessage("");
#if defined(OS_FUCHSIA)
// blink::WebMessagePort reports failure when PostMessage returns false, but
// fuchsia::web::MessagePort will not report the error until the port closes
server_receiver_.RunUntilMessageCountEqual(1);
server_.reset();
#endif
client_receiver_.RunUntilDisconnected();
}
TEST_F(MessagePortTest, PostMessage) {
TestPostMessage();
}
TEST_F(MessagePortTest, PostMessageMultiple) {
SetDefaultReceivers();
PostMessages({"c1", "c2", "c3"}, client_.get(), &server_receiver_);
PostMessages({"s1", "s2", "s3"}, server_.get(), &client_receiver_);
}
TEST_F(MessagePortTest, PostMessageWithTransferables) {
std::unique_ptr<MessagePort> port0;
std::unique_ptr<MessagePort> port1;
TestMessagePortReceiver port0_receiver;
TestMessagePortReceiver port1_receiver;
MessagePort::CreatePair(&port0, &port1);
// If the ports are represented by multiple types as in the case of
// MessagePortFuchsia, make sure both are transferrable
SetDefaultReceivers();
port0 = PostMessageWithTransferables(std::move(port0), client_.get(),
&server_receiver_);
port1 = PostMessageWithTransferables(std::move(port1), server_.get(),
&client_receiver_);
// Make sure the ports are still usable
port0->SetReceiver(&port0_receiver);
port1->SetReceiver(&port1_receiver);
PostMessages({"from port0"}, port0.get(), &port1_receiver);
PostMessages({"from port1"}, port1.get(), &port0_receiver);
}
TEST_F(MessagePortTest, WrapPlatformPort) {
// Initialize ports from the platform type instead of agnostic CreatePair
#if defined(OS_FUCHSIA)
fidl::InterfaceHandle<fuchsia::web::MessagePort> port0;
fidl::InterfaceRequest<fuchsia::web::MessagePort> port1 = port0.NewRequest();
client_ = MessagePortFuchsia::Create(std::move(port0));
server_ = MessagePortFuchsia::Create(std::move(port1));
#else
auto pair = blink::WebMessagePort::CreatePair();
client_ = MessagePortCast::Create(std::move(pair.first));
server_ = MessagePortCast::Create(std::move(pair.second));
#endif // defined(OS_FUCHSIA)
TestPostMessage();
}
TEST_F(MessagePortTest, UnwrapPlatformPortCast) {
// Test unwrapping via TakePort (rewrapped for test methods)
#if defined(OS_FUCHSIA)
client_ = MessagePortFuchsia::Create(
MessagePortFuchsia::FromMessagePort(client_.get())->TakeClientHandle());
server_ = MessagePortFuchsia::Create(
MessagePortFuchsia::FromMessagePort(server_.get())->TakeServiceRequest());
#else
client_ = MessagePortCast::Create(
MessagePortCast::FromMessagePort(client_.get())->TakePort());
server_ = MessagePortCast::Create(
MessagePortCast::FromMessagePort(server_.get())->TakePort());
#endif // defined(OS_FUCHSIA)
TestPostMessage();
}
} // namespace cast_api_bindings
......@@ -12,10 +12,6 @@ TestMessagePortReceiver::TestMessagePortReceiver() = default;
TestMessagePortReceiver::~TestMessagePortReceiver() = default;
void TestMessagePortReceiver::SetOnMessageResult(bool result) {
on_message_result_ = result;
}
bool TestMessagePortReceiver::RunUntilMessageCountEqual(size_t message_count) {
base::RunLoop run_loop;
on_receive_satisfied_ = run_loop.QuitClosure();
......@@ -38,7 +34,7 @@ bool TestMessagePortReceiver::OnMessage(
DCHECK(on_receive_satisfied_);
std::move(on_receive_satisfied_).Run();
}
return on_message_result_;
return true;
}
void TestMessagePortReceiver::OnPipeError() {
......
......@@ -29,9 +29,6 @@ class TestMessagePortReceiver
// Spins a RunLoop until the associated MessagePort is disconnected.
void RunUntilDisconnected();
// Sets the return value of OnMessage
void SetOnMessageResult(bool result);
std::vector<
std::pair<std::string, std::vector<std::unique_ptr<MessagePort>>>>&
buffer() {
......@@ -49,7 +46,6 @@ class TestMessagePortReceiver
size_t message_count_target_ = 0;
base::OnceClosure on_receive_satisfied_;
base::OnceClosure on_disconnect_;
bool on_message_result_ = true;
};
} // namespace cast_api_bindings
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment