diff options
author | nileshagrawal@chromium.org <nileshagrawal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-12 23:06:03 +0000 |
---|---|---|
committer | nileshagrawal@chromium.org <nileshagrawal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-12 23:06:03 +0000 |
commit | 7173f73b803ff1a8532abab71cdc048fb6a28184 (patch) | |
tree | 20bb8cdbcaf8f1e271342b428b78991a31bd0c5e /base | |
parent | aa98f940a3c73bd559c8061c7d6c8d48e6e1ea44 (diff) | |
download | chromium_src-7173f73b803ff1a8532abab71cdc048fb6a28184.zip chromium_src-7173f73b803ff1a8532abab71cdc048fb6a28184.tar.gz chromium_src-7173f73b803ff1a8532abab71cdc048fb6a28184.tar.bz2 |
Fix ProcessUtilTests for android.
On Android, files have to be created in the application directory.
BUG=125059
TEST=
Review URL: https://chromiumcodereview.appspot.com/10543118
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141776 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/process_util_unittest.cc | 54 |
1 files changed, 38 insertions, 16 deletions
diff --git a/base/process_util_unittest.cc b/base/process_util_unittest.cc index 45ecdbb..ba93976 100644 --- a/base/process_util_unittest.cc +++ b/base/process_util_unittest.cc @@ -112,13 +112,27 @@ base::TerminationStatus WaitForChildTermination(base::ProcessHandle handle, } // namespace class ProcessUtilTest : public base::MultiProcessTest { -#if defined(OS_POSIX) public: +#if defined(OS_POSIX) // Spawn a child process that counts how many file descriptors are open. int CountOpenFDsInChild(); #endif + // Converts the filename to a platform specific filepath. + // On Android files can not be created in arbitrary directories. + static std::string GetSignalFilePath(const char* filename); }; +std::string ProcessUtilTest::GetSignalFilePath(const char* filename) { +#if !defined(OS_ANDROID) + return filename; +#else + FilePath tmp_dir; + PathService::Get(base::DIR_CACHE, &tmp_dir); + tmp_dir = tmp_dir.Append(filename); + return tmp_dir.value(); +#endif +} + MULTIPROCESS_TEST_MAIN(SimpleChildProcess) { return 0; } @@ -132,24 +146,28 @@ TEST_F(ProcessUtilTest, SpawnChild) { } MULTIPROCESS_TEST_MAIN(SlowChildProcess) { - WaitToDie(kSignalFileSlow); + WaitToDie(ProcessUtilTest::GetSignalFilePath(kSignalFileSlow).c_str()); return 0; } TEST_F(ProcessUtilTest, KillSlowChild) { - remove(kSignalFileSlow); + const std::string signal_file = + ProcessUtilTest::GetSignalFilePath(kSignalFileSlow); + remove(signal_file.c_str()); base::ProcessHandle handle = this->SpawnChild("SlowChildProcess", false); ASSERT_NE(base::kNullProcessHandle, handle); - SignalChildren(kSignalFileSlow); + SignalChildren(signal_file.c_str()); EXPECT_TRUE(base::WaitForSingleProcess( handle, TestTimeouts::action_max_timeout_ms())); base::CloseProcessHandle(handle); - remove(kSignalFileSlow); + remove(signal_file.c_str()); } // Times out on Linux and Win, flakes on other platforms, http://crbug.com/95058 TEST_F(ProcessUtilTest, DISABLED_GetTerminationStatusExit) { - remove(kSignalFileSlow); + const std::string signal_file = + ProcessUtilTest::GetSignalFilePath(kSignalFileSlow); + remove(signal_file.c_str()); base::ProcessHandle handle = this->SpawnChild("SlowChildProcess", false); ASSERT_NE(base::kNullProcessHandle, handle); @@ -158,14 +176,14 @@ TEST_F(ProcessUtilTest, DISABLED_GetTerminationStatusExit) { base::GetTerminationStatus(handle, &exit_code)); EXPECT_EQ(kExpectedStillRunningExitCode, exit_code); - SignalChildren(kSignalFileSlow); + SignalChildren(signal_file.c_str()); exit_code = 42; base::TerminationStatus status = WaitForChildTermination(handle, &exit_code); EXPECT_EQ(base::TERMINATION_STATUS_NORMAL_TERMINATION, status); EXPECT_EQ(0, exit_code); base::CloseProcessHandle(handle); - remove(kSignalFileSlow); + remove(signal_file.c_str()); } #if defined(OS_WIN) @@ -212,7 +230,7 @@ TEST_F(ProcessUtilTest, GetModuleFromAddress) { // framework) to reduce the ReportCrash overhead. MULTIPROCESS_TEST_MAIN(CrashingChildProcess) { - WaitToDie(kSignalFileCrash); + WaitToDie(ProcessUtilTest::GetSignalFilePath(kSignalFileCrash).c_str()); #if defined(OS_POSIX) // Have to disable to signal handler for segv so we can get a crash // instead of an abnormal termination through the crash dump handler. @@ -232,7 +250,9 @@ MULTIPROCESS_TEST_MAIN(CrashingChildProcess) { #define MAYBE_GetTerminationStatusCrash GetTerminationStatusCrash #endif TEST_F(ProcessUtilTest, MAYBE_GetTerminationStatusCrash) { - remove(kSignalFileCrash); + const std::string signal_file = + ProcessUtilTest::GetSignalFilePath(kSignalFileCrash); + remove(signal_file.c_str()); base::ProcessHandle handle = this->SpawnChild("CrashingChildProcess", false); ASSERT_NE(base::kNullProcessHandle, handle); @@ -242,7 +262,7 @@ TEST_F(ProcessUtilTest, MAYBE_GetTerminationStatusCrash) { base::GetTerminationStatus(handle, &exit_code)); EXPECT_EQ(kExpectedStillRunningExitCode, exit_code); - SignalChildren(kSignalFileCrash); + SignalChildren(signal_file.c_str()); exit_code = 42; base::TerminationStatus status = WaitForChildTermination(handle, &exit_code); @@ -260,12 +280,12 @@ TEST_F(ProcessUtilTest, MAYBE_GetTerminationStatusCrash) { // Reset signal handlers back to "normal". base::EnableInProcessStackDumping(); - remove(kSignalFileCrash); + remove(signal_file.c_str()); } #endif // !defined(OS_MACOSX) MULTIPROCESS_TEST_MAIN(KilledChildProcess) { - WaitToDie(kSignalFileKill); + WaitToDie(ProcessUtilTest::GetSignalFilePath(kSignalFileKill).c_str()); #if defined(OS_WIN) // Kill ourselves. HANDLE handle = ::OpenProcess(PROCESS_ALL_ACCESS, 0, ::GetCurrentProcessId()); @@ -278,7 +298,9 @@ MULTIPROCESS_TEST_MAIN(KilledChildProcess) { } TEST_F(ProcessUtilTest, GetTerminationStatusKill) { - remove(kSignalFileKill); + const std::string signal_file = + ProcessUtilTest::GetSignalFilePath(kSignalFileKill); + remove(signal_file.c_str()); base::ProcessHandle handle = this->SpawnChild("KilledChildProcess", false); ASSERT_NE(base::kNullProcessHandle, handle); @@ -288,7 +310,7 @@ TEST_F(ProcessUtilTest, GetTerminationStatusKill) { base::GetTerminationStatus(handle, &exit_code)); EXPECT_EQ(kExpectedStillRunningExitCode, exit_code); - SignalChildren(kSignalFileKill); + SignalChildren(signal_file.c_str()); exit_code = 42; base::TerminationStatus status = WaitForChildTermination(handle, &exit_code); @@ -302,7 +324,7 @@ TEST_F(ProcessUtilTest, GetTerminationStatusKill) { EXPECT_EQ(SIGKILL, signal); #endif base::CloseProcessHandle(handle); - remove(kSignalFileKill); + remove(signal_file.c_str()); } // Ensure that the priority of a process is restored correctly after |