diff options
author | 2022-11-14 09:09:25 +0000 | |
---|---|---|
committer | 2022-11-15 09:11:46 +0000 | |
commit | 1ef010bf2fb39c31457b84d6ccac14e71d5bd1f7 (patch) | |
tree | 0f933b7f90214aba7f839f5b1ba0bed2de5f4356 | |
parent | 213454462ca60ec8af20f69a797bbef19712b85b (diff) |
[rpc_binder][test] Merge unixBootstrapFd and socketFd in binderRpcTest
This is a follow-up of the cl aosp/2267564.
Test: atest binderRpcTest
Change-Id: I5bf68197aa5f34cc3f700dcc70419fcc0acfb1ef
-rw-r--r-- | libs/binder/tests/BinderRpcTestServerConfig.aidl | 3 | ||||
-rw-r--r-- | libs/binder/tests/binderRpcTest.cpp | 17 | ||||
-rw-r--r-- | libs/binder/tests/binderRpcTestService.cpp | 6 |
3 files changed, 13 insertions, 13 deletions
diff --git a/libs/binder/tests/BinderRpcTestServerConfig.aidl b/libs/binder/tests/BinderRpcTestServerConfig.aidl index aac4b04dae..b2e0ef21c7 100644 --- a/libs/binder/tests/BinderRpcTestServerConfig.aidl +++ b/libs/binder/tests/BinderRpcTestServerConfig.aidl @@ -21,7 +21,6 @@ parcelable BinderRpcTestServerConfig { int rpcSecurity; int serverVersion; int vsockPort; - int unixBootstrapFd; // Inherited from parent - int socketFd; + int socketFd; // Inherited from the parent process. @utf8InCpp String addr; } diff --git a/libs/binder/tests/binderRpcTest.cpp b/libs/binder/tests/binderRpcTest.cpp index 79bd9d4993..68a827bb3e 100644 --- a/libs/binder/tests/binderRpcTest.cpp +++ b/libs/binder/tests/binderRpcTest.cpp @@ -252,17 +252,19 @@ std::unique_ptr<ProcessSession> BinderRpc::createRpcTestSocketServerProcessEtc( singleThreaded ? "_single_threaded" : "", noKernel ? "_no_kernel" : ""); - base::unique_fd bootstrapClientFd, bootstrapServerFd, socketFd; - // Do not set O_CLOEXEC, bootstrapServerFd needs to survive fork/exec. - // This is because we cannot pass ParcelFileDescriptor over a pipe. - if (!base::Socketpair(SOCK_STREAM, &bootstrapClientFd, &bootstrapServerFd)) { - int savedErrno = errno; - LOG(FATAL) << "Failed socketpair(): " << strerror(savedErrno); - } + base::unique_fd bootstrapClientFd, socketFd; + auto addr = allocateSocketAddress(); // Initializes the socket before the fork/exec. if (socketType == SocketType::UNIX_RAW) { socketFd = initUnixSocket(addr); + } else if (socketType == SocketType::UNIX_BOOTSTRAP) { + // Do not set O_CLOEXEC, bootstrapServerFd needs to survive fork/exec. + // This is because we cannot pass ParcelFileDescriptor over a pipe. + if (!base::Socketpair(SOCK_STREAM, &bootstrapClientFd, &socketFd)) { + int savedErrno = errno; + LOG(FATAL) << "Failed socketpair(): " << strerror(savedErrno); + } } auto ret = std::make_unique<LinuxProcessSession>( @@ -280,7 +282,6 @@ std::unique_ptr<ProcessSession> BinderRpc::createRpcTestSocketServerProcessEtc( serverConfig.serverVersion = serverVersion; serverConfig.vsockPort = allocateVsockPort(); serverConfig.addr = addr; - serverConfig.unixBootstrapFd = bootstrapServerFd.get(); serverConfig.socketFd = socketFd.get(); for (auto mode : options.serverSupportedFileDescriptorTransportModes) { serverConfig.serverSupportedFileDescriptorTransportModes.push_back( diff --git a/libs/binder/tests/binderRpcTestService.cpp b/libs/binder/tests/binderRpcTestService.cpp index cc40995a52..995e761ec6 100644 --- a/libs/binder/tests/binderRpcTestService.cpp +++ b/libs/binder/tests/binderRpcTestService.cpp @@ -42,7 +42,7 @@ int main(int argc, const char* argv[]) { server->setSupportedFileDescriptorTransportModes(serverSupportedFileDescriptorTransportModes); unsigned int outPort = 0; - base::unique_fd unixBootstrapFd(serverConfig.unixBootstrapFd); + base::unique_fd socketFd(serverConfig.socketFd); switch (socketType) { case SocketType::PRECONNECTED: @@ -52,10 +52,10 @@ int main(int argc, const char* argv[]) { << serverConfig.addr; break; case SocketType::UNIX_BOOTSTRAP: - CHECK_EQ(OK, server->setupUnixDomainSocketBootstrapServer(std::move(unixBootstrapFd))); + CHECK_EQ(OK, server->setupUnixDomainSocketBootstrapServer(std::move(socketFd))); break; case SocketType::UNIX_RAW: - CHECK_EQ(OK, server->setupRawSocketServer(base::unique_fd(serverConfig.socketFd))); + CHECK_EQ(OK, server->setupRawSocketServer(std::move(socketFd))); break; case SocketType::VSOCK: CHECK_EQ(OK, server->setupVsockServer(serverConfig.vsockPort)); |