OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #define _CRT_SECURE_NO_WARNINGS | 5 #define _CRT_SECURE_NO_WARNINGS |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/alias.h" | 10 #include "base/debug/alias.h" |
(...skipping 1007 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1018 const int kSuccess = 0; | 1018 const int kSuccess = 0; |
1019 | 1019 |
1020 MULTIPROCESS_TEST_MAIN(CheckPidProcess) { | 1020 MULTIPROCESS_TEST_MAIN(CheckPidProcess) { |
1021 const pid_t kInitPid = 1; | 1021 const pid_t kInitPid = 1; |
1022 const pid_t pid = syscall(__NR_getpid); | 1022 const pid_t pid = syscall(__NR_getpid); |
1023 CHECK(pid == kInitPid); | 1023 CHECK(pid == kInitPid); |
1024 CHECK(getpid() == pid); | 1024 CHECK(getpid() == pid); |
1025 return kSuccess; | 1025 return kSuccess; |
1026 } | 1026 } |
1027 | 1027 |
| 1028 #if defined(CLONE_NEWUSER) && defined(CLONE_NEWPID) |
1028 TEST_F(ProcessUtilTest, CloneFlags) { | 1029 TEST_F(ProcessUtilTest, CloneFlags) { |
1029 if (RunningOnValgrind() || | 1030 if (RunningOnValgrind() || |
1030 !base::PathExists(FilePath("/proc/self/ns/user")) || | 1031 !base::PathExists(FilePath("/proc/self/ns/user")) || |
1031 !base::PathExists(FilePath("/proc/self/ns/pid"))) { | 1032 !base::PathExists(FilePath("/proc/self/ns/pid"))) { |
1032 // User or PID namespaces are not supported. | 1033 // User or PID namespaces are not supported. |
1033 return; | 1034 return; |
1034 } | 1035 } |
1035 | 1036 |
1036 base::LaunchOptions options; | 1037 base::LaunchOptions options; |
1037 options.clone_flags = CLONE_NEWUSER | CLONE_NEWPID; | 1038 options.clone_flags = CLONE_NEWUSER | CLONE_NEWPID; |
1038 | 1039 |
1039 base::Process process(SpawnChildWithOptions("CheckPidProcess", options)); | 1040 base::Process process(SpawnChildWithOptions("CheckPidProcess", options)); |
1040 ASSERT_TRUE(process.IsValid()); | 1041 ASSERT_TRUE(process.IsValid()); |
1041 | 1042 |
1042 int exit_code = 42; | 1043 int exit_code = 42; |
1043 EXPECT_TRUE(process.WaitForExit(&exit_code)); | 1044 EXPECT_TRUE(process.WaitForExit(&exit_code)); |
1044 EXPECT_EQ(kSuccess, exit_code); | 1045 EXPECT_EQ(kSuccess, exit_code); |
1045 } | 1046 } |
| 1047 #endif |
1046 | 1048 |
1047 TEST(ForkWithFlagsTest, UpdatesPidCache) { | 1049 TEST(ForkWithFlagsTest, UpdatesPidCache) { |
1048 // The libc clone function, which allows ForkWithFlags to keep the pid cache | 1050 // The libc clone function, which allows ForkWithFlags to keep the pid cache |
1049 // up to date, does not work on Valgrind. | 1051 // up to date, does not work on Valgrind. |
1050 if (RunningOnValgrind()) { | 1052 if (RunningOnValgrind()) { |
1051 return; | 1053 return; |
1052 } | 1054 } |
1053 | 1055 |
1054 // Warm up the libc pid cache, if there is one. | 1056 // Warm up the libc pid cache, if there is one. |
1055 ASSERT_EQ(syscall(__NR_getpid), getpid()); | 1057 ASSERT_EQ(syscall(__NR_getpid), getpid()); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1103 options.current_directory = base::FilePath("/dev/null"); | 1105 options.current_directory = base::FilePath("/dev/null"); |
1104 | 1106 |
1105 base::Process process(SpawnChildWithOptions("SimpleChildProcess", options)); | 1107 base::Process process(SpawnChildWithOptions("SimpleChildProcess", options)); |
1106 ASSERT_TRUE(process.IsValid()); | 1108 ASSERT_TRUE(process.IsValid()); |
1107 | 1109 |
1108 int exit_code = kSuccess; | 1110 int exit_code = kSuccess; |
1109 EXPECT_TRUE(process.WaitForExit(&exit_code)); | 1111 EXPECT_TRUE(process.WaitForExit(&exit_code)); |
1110 EXPECT_NE(kSuccess, exit_code); | 1112 EXPECT_NE(kSuccess, exit_code); |
1111 } | 1113 } |
1112 #endif | 1114 #endif |
OLD | NEW |