Expose peer_pid on Linux and Android via UnixSocket.
This will be needed in heapprofd.
Change-Id: Iaae4d29a11e21a4bac3d84dea963a45c9e962a48
diff --git a/src/ipc/unix_socket_unittest.cc b/src/ipc/unix_socket_unittest.cc
index 0e83f52..b571c1c 100644
--- a/src/ipc/unix_socket_unittest.cc
+++ b/src/ipc/unix_socket_unittest.cc
@@ -475,7 +475,7 @@
// Checks that the peer_uid() is retained after the client disconnects. The IPC
// layer needs to rely on this to validate messages received immediately before
// a client disconnects.
-TEST_F(UnixSocketTest, PeerUidRetainedAfterDisconnect) {
+TEST_F(UnixSocketTest, PeerCredentialsRetainedAfterDisconnect) {
auto srv = UnixSocket::Listen(kSocketName, &event_listener_, &task_runner_);
ASSERT_TRUE(srv->is_listening());
UnixSocket* srv_client_conn = nullptr;
@@ -485,6 +485,10 @@
[&srv_client_conn, srv_connected](UnixSocket*, UnixSocket* srv_conn) {
srv_client_conn = srv_conn;
EXPECT_EQ(geteuid(), static_cast<uint32_t>(srv_conn->peer_uid()));
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+ EXPECT_EQ(getpid(), static_cast<uint32_t>(srv_conn->peer_pid()));
+#endif
srv_connected();
}));
auto cli_connected = task_runner_.CreateCheckpoint("cli_connected");
@@ -511,6 +515,10 @@
task_runner_.RunUntilCheckpoint("cli_disconnected");
ASSERT_FALSE(srv_client_conn->is_connected());
EXPECT_EQ(geteuid(), static_cast<uint32_t>(srv_client_conn->peer_uid()));
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+ EXPECT_EQ(getpid(), static_cast<uint32_t>(srv_client_conn->peer_pid()));
+#endif
}
TEST_F(UnixSocketTest, BlockingSend) {