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

Unified Diff: util/test/mac/mach_multiprocess_test.cc

Issue 491363002: Improvements for MachMultiprocess (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Add a pipe going in the other direction Created 6 years, 4 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 | « util/test/mac/mach_multiprocess.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: util/test/mac/mach_multiprocess_test.cc
diff --git a/util/test/mac/mach_multiprocess_test.cc b/util/test/mac/mach_multiprocess_test.cc
index b0429cdbbc9eacb569a3dea2f942ed0b7da03aef..a8639978f764e7a6a93470862ffe0cdabdef0469 100644
--- a/util/test/mac/mach_multiprocess_test.cc
+++ b/util/test/mac/mach_multiprocess_test.cc
@@ -14,6 +14,8 @@
#include "util/test/mac/mach_multiprocess.h"
+#include <unistd.h>
+
#include "base/basictypes.h"
#include "gtest/gtest.h"
#include "util/file/fd_io.h"
@@ -32,27 +34,46 @@ class TestMachMultiprocess final : public MachMultiprocess {
protected:
// The base class will have already exercised the Mach ports for IPC and the
- // child task port. Just make sure that the pipe is set up correctly.
+ // child task port. Just make sure that the pipe is set up correctly and that
+ // ChildPID() works as expected.
virtual void Parent() override {
- int fd = PipeFD();
-
+ int read_fd = ReadPipeFD();
char c;
- ssize_t rv = ReadFD(fd, &c, 1);
+ ssize_t rv = ReadFD(read_fd, &c, 1);
ASSERT_EQ(1, rv) << ErrnoMessage("read");
EXPECT_EQ('M', c);
+ pid_t pid;
+ rv = ReadFD(read_fd, &pid, sizeof(pid));
+ ASSERT_EQ(static_cast<ssize_t>(sizeof(pid)), rv) << ErrnoMessage("read");
+ EXPECT_EQ(pid, ChildPID());
+
+ int write_fd = WritePipeFD();
+ c = 'm';
+ rv = WriteFD(write_fd, &c, 1);
+ ASSERT_EQ(1, rv) << ErrnoMessage("write");
+
// The child will close its end of the pipe and exit. Make sure that the
// parent sees EOF.
- rv = ReadFD(fd, &c, 1);
+ rv = ReadFD(read_fd, &c, 1);
ASSERT_EQ(0, rv) << ErrnoMessage("read");
}
virtual void Child() override {
- int fd = PipeFD();
+ int write_fd = WritePipeFD();
char c = 'M';
- ssize_t rv = WriteFD(fd, &c, 1);
+ ssize_t rv = WriteFD(write_fd, &c, 1);
ASSERT_EQ(1, rv) << ErrnoMessage("write");
+
+ pid_t pid = getpid();
+ rv = WriteFD(write_fd, &pid, sizeof(pid));
+ ASSERT_EQ(static_cast<ssize_t>(sizeof(pid)), rv) << ErrnoMessage("write");
+
+ int read_fd = ReadPipeFD();
+ rv = ReadFD(read_fd, &c, 1);
+ ASSERT_EQ(1, rv) << ErrnoMessage("read");
+ EXPECT_EQ('m', c);
}
private:
« no previous file with comments | « util/test/mac/mach_multiprocess.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698