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

Unified Diff: third_party/mojo/src/mojo/edk/embedder/embedder_unittest.cc

Issue 1157843002: Update mojo sdk to rev 1dc8a9a5db73d3718d99917fadf31f5fb2ebad4f (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: third_party/mojo/src/mojo/edk/embedder/embedder_unittest.cc
diff --git a/third_party/mojo/src/mojo/edk/embedder/embedder_unittest.cc b/third_party/mojo/src/mojo/edk/embedder/embedder_unittest.cc
index 48a59c13618427698c990f8054665b6ed757db72..5dc34b1e0998f4cf71da278b9ea70f23e276d70e 100644
--- a/third_party/mojo/src/mojo/edk/embedder/embedder_unittest.cc
+++ b/third_party/mojo/src/mojo/edk/embedder/embedder_unittest.cc
@@ -7,6 +7,7 @@
#include <string.h>
#include "base/bind.h"
+#include "base/command_line.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/macros.h"
@@ -19,6 +20,7 @@
#include "mojo/edk/system/test_utils.h"
#include "mojo/edk/test/multiprocess_test_helper.h"
#include "mojo/edk/test/scoped_ipc_support.h"
+#include "mojo/edk/test/test_utils.h"
#include "mojo/public/c/system/core.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -33,6 +35,8 @@ const MojoHandleSignals kSignalAll = MOJO_HANDLE_SIGNAL_READABLE |
MOJO_HANDLE_SIGNAL_WRITABLE |
MOJO_HANDLE_SIGNAL_PEER_CLOSED;
+const char kConnectionIdFlag[] = "test-connection-id";
+
class ScopedTestChannel {
public:
// Creates a channel that lives on a given I/O thread (determined by the given
@@ -215,8 +219,7 @@ void CloseScopedHandle(ScopedMessagePipeHandle handle) {
TEST_F(EmbedderTest, AsyncWait) {
ScopedMessagePipeHandle client_mp;
ScopedMessagePipeHandle server_mp;
- EXPECT_EQ(MOJO_RESULT_OK,
- mojo::CreateMessagePipe(nullptr, &client_mp, &server_mp));
+ EXPECT_EQ(MOJO_RESULT_OK, CreateMessagePipe(nullptr, &client_mp, &server_mp));
TestAsyncWaiter waiter;
EXPECT_EQ(MOJO_RESULT_OK,
@@ -380,6 +383,83 @@ TEST_F(EmbedderTest, ChannelsHandlePassing) {
EXPECT_TRUE(client_channel.channel_info());
}
+#if defined(OS_ANDROID) || defined(OS_WIN)
+// Android multi-process tests are not executing the new process. This is flaky.
+// TODO(vtl): I'm guessing this is true of this test too?
+#define MAYBE_MultiprocessMasterSlave DISABLED_MultiprocessMasterSlave
+#else
+#define MAYBE_MultiprocessMasterSlave MultiprocessMasterSlave
+#endif // defined(OS_ANDROID)
+TEST_F(EmbedderTest, MAYBE_MultiprocessMasterSlave) {
+ mojo::test::ScopedMasterIPCSupport ipc_support(test_io_task_runner());
+
+ mojo::test::MultiprocessTestHelper multiprocess_test_helper;
+ ScopedPlatformHandle second_platform_handle;
+ std::string connection_id;
+ ConnectToSlave(nullptr,
+ multiprocess_test_helper.server_platform_handle.Pass(),
+ &second_platform_handle, &connection_id);
+ ASSERT_TRUE(second_platform_handle.is_valid());
+ ASSERT_FALSE(connection_id.empty());
+
+ multiprocess_test_helper.StartChildWithExtraSwitch(
+ "MultiprocessMasterSlave", kConnectionIdFlag, connection_id);
+
+ // We write a '?'. The slave should write a '!' in response.
+ size_t n = 0;
+ EXPECT_TRUE(
+ mojo::test::BlockingWrite(second_platform_handle.get(), "?", 1, &n));
+ EXPECT_EQ(1u, n);
+
+ char c = '\0';
+ n = 0;
+ EXPECT_TRUE(
+ mojo::test::BlockingRead(second_platform_handle.get(), &c, 1, &n));
+ EXPECT_EQ(1u, n);
+ EXPECT_EQ('!', c);
+
+ EXPECT_TRUE(multiprocess_test_helper.WaitForChildTestShutdown());
+}
+
+MOJO_MULTIPROCESS_TEST_CHILD_TEST(MultiprocessMasterSlave) {
+ ScopedPlatformHandle client_platform_handle =
+ mojo::test::MultiprocessTestHelper::client_platform_handle.Pass();
+ EXPECT_TRUE(client_platform_handle.is_valid());
+
+ base::TestIOThread test_io_thread(base::TestIOThread::kAutoStart);
+ test::InitWithSimplePlatformSupport();
+
+ {
+ mojo::test::ScopedSlaveIPCSupport ipc_support(
+ test_io_thread.task_runner(), client_platform_handle.Pass());
+
+ const base::CommandLine& command_line =
+ *base::CommandLine::ForCurrentProcess();
+ ASSERT_TRUE(command_line.HasSwitch(kConnectionIdFlag));
+ std::string connection_id =
+ command_line.GetSwitchValueASCII(kConnectionIdFlag);
+ ASSERT_FALSE(connection_id.empty());
+ ScopedPlatformHandle second_platform_handle;
+ ConnectToMaster(connection_id, &second_platform_handle);
+ ASSERT_TRUE(second_platform_handle.is_valid());
+
+ // The master should write a '?'. We'll write a '!' in response.
+ char c = '\0';
+ size_t n = 0;
+ EXPECT_TRUE(
+ mojo::test::BlockingRead(second_platform_handle.get(), &c, 1, &n));
+ EXPECT_EQ(1u, n);
+ EXPECT_EQ('?', c);
+
+ n = 0;
+ EXPECT_TRUE(
+ mojo::test::BlockingWrite(second_platform_handle.get(), "!", 1, &n));
+ EXPECT_EQ(1u, n);
+ }
+
+ EXPECT_TRUE(test::Shutdown());
+}
+
// The sequence of messages sent is:
// server_mp client_mp mp0 mp1 mp2 mp3
// 1. "hello"

Powered by Google App Engine
This is Rietveld 408576698