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

Unified Diff: ipc/ipc_channel_posix_unittest.cc

Issue 2141403002: Use unique pipe names for IPCChannelPosixTest tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: shorten pipe name to avoid mac max path issues Created 4 years, 5 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ipc/ipc_channel_posix_unittest.cc
diff --git a/ipc/ipc_channel_posix_unittest.cc b/ipc/ipc_channel_posix_unittest.cc
index 830ea300399667e85530ad4460676341809fc4ef..3ea11c39c6d14429ab348373f9cdc301b37259ee 100644
--- a/ipc/ipc_channel_posix_unittest.cc
+++ b/ipc/ipc_channel_posix_unittest.cc
@@ -17,14 +17,17 @@
#include <memory>
+#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/location.h"
#include "base/path_service.h"
#include "base/posix/eintr_wrapper.h"
#include "base/process/process.h"
+#include "base/rand_util.h"
#include "base/run_loop.h"
#include "base/single_thread_task_runner.h"
+#include "base/strings/string_number_conversions.h"
#include "base/test/multiprocess_test.h"
#include "base/test/test_timeouts.h"
#include "build/build_config.h"
@@ -34,6 +37,8 @@
namespace {
+const char kSocketNameSwitch[] = "connection-socket-name";
+
static const uint32_t kQuitMessage = 47;
class IPCChannelPosixTestListener : public IPC::Listener {
@@ -112,8 +117,18 @@ class IPCChannelPosixTest : public base::MultiProcessTest {
static void SetUpSocket(IPC::ChannelHandle *handle,
IPC::Channel::Mode mode);
static void SpinRunLoop(base::TimeDelta delay);
- static const std::string GetConnectionSocketName();
static const std::string GetChannelDirName();
+ static std::string GetClientConnectionSocketName();
+
+ const std::string& GetConnectionSocketName();
+
+ base::Process SpawnChild(const std::string& procname) {
+ base::CommandLine command_line = MakeCmdLine(procname);
+ command_line.AppendSwitchASCII(
+ kSocketNameSwitch, GetConnectionSocketName());
+ return base::SpawnMultiProcessTestChild(
+ procname, command_line, base::LaunchOptions());
+ }
bool WaitForExit(base::Process& process, int* exit_code) {
#if defined(OS_ANDROID)
@@ -130,6 +145,7 @@ class IPCChannelPosixTest : public base::MultiProcessTest {
private:
std::unique_ptr<base::MessageLoopForIO> message_loop_;
+ std::string socket_name_;
};
const std::string IPCChannelPosixTest::GetChannelDirName() {
@@ -138,8 +154,20 @@ const std::string IPCChannelPosixTest::GetChannelDirName() {
return tmp_dir.value();
}
-const std::string IPCChannelPosixTest::GetConnectionSocketName() {
- return GetChannelDirName() + "/chrome_IPCChannelPosixTest__ConnectionSocket";
+const std::string& IPCChannelPosixTest::GetConnectionSocketName() {
+ if (socket_name_.empty()) {
+ uint64_t id = base::RandUint64();
+ socket_name_ = GetChannelDirName() +
+ "/chrome_IPCChannelPosixTest_" +
+ base::HexEncode(&id, sizeof(id));
+ }
+ return socket_name_;
+}
+
+std::string IPCChannelPosixTest::GetClientConnectionSocketName() {
+ DCHECK(base::CommandLine::ForCurrentProcess()->HasSwitch(kSocketNameSwitch));
+ return base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ kSocketNameSwitch);
}
void IPCChannelPosixTest::SetUp() {
@@ -439,7 +467,8 @@ TEST_F(IPCChannelPosixTest, IsNamedServerInitialized) {
MULTIPROCESS_TEST_MAIN(IPCChannelPosixTestConnectionProc) {
base::MessageLoopForIO message_loop;
IPCChannelPosixTestListener listener(true);
- IPC::ChannelHandle handle(IPCChannelPosixTest::GetConnectionSocketName());
+ IPC::ChannelHandle handle(
+ IPCChannelPosixTest::GetClientConnectionSocketName());
IPCChannelPosixTest::SetUpSocket(&handle, IPC::Channel::MODE_NAMED_CLIENT);
std::unique_ptr<IPC::ChannelPosix> channel(new IPC::ChannelPosix(
handle, IPC::Channel::MODE_NAMED_CLIENT, &listener));
@@ -453,7 +482,8 @@ MULTIPROCESS_TEST_MAIN(IPCChannelPosixTestConnectionProc) {
MULTIPROCESS_TEST_MAIN(IPCChannelPosixFailConnectionProc) {
base::MessageLoopForIO message_loop;
IPCChannelPosixTestListener listener(false);
- IPC::ChannelHandle handle(IPCChannelPosixTest::GetConnectionSocketName());
+ IPC::ChannelHandle handle(
+ IPCChannelPosixTest::GetClientConnectionSocketName());
IPCChannelPosixTest::SetUpSocket(&handle, IPC::Channel::MODE_NAMED_CLIENT);
std::unique_ptr<IPC::ChannelPosix> channel(new IPC::ChannelPosix(
handle, IPC::Channel::MODE_NAMED_CLIENT, &listener));
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698