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 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 #elif defined(OS_POSIX) | 304 #elif defined(OS_POSIX) |
305 int signaled = WIFSIGNALED(exit_code); | 305 int signaled = WIFSIGNALED(exit_code); |
306 EXPECT_NE(0, signaled); | 306 EXPECT_NE(0, signaled); |
307 int signal = WTERMSIG(exit_code); | 307 int signal = WTERMSIG(exit_code); |
308 EXPECT_EQ(SIGKILL, signal); | 308 EXPECT_EQ(SIGKILL, signal); |
309 #endif | 309 #endif |
310 base::CloseProcessHandle(handle); | 310 base::CloseProcessHandle(handle); |
311 remove(signal_file.c_str()); | 311 remove(signal_file.c_str()); |
312 } | 312 } |
313 | 313 |
314 // Ensure that the priority of a process is restored correctly after | |
315 // backgrounding and restoring. | |
316 // Note: a platform may not be willing or able to lower the priority of | |
317 // a process. The calls to SetProcessBackground should be noops then. | |
318 TEST_F(ProcessUtilTest, SetProcessBackgrounded) { | |
319 base::ProcessHandle handle = SpawnChild("SimpleChildProcess"); | |
320 base::Process process(handle); | |
321 int old_priority = process.GetPriority(); | |
322 #if defined(OS_WIN) | |
323 EXPECT_TRUE(process.SetProcessBackgrounded(true)); | |
324 EXPECT_TRUE(process.IsProcessBackgrounded()); | |
325 EXPECT_TRUE(process.SetProcessBackgrounded(false)); | |
326 EXPECT_FALSE(process.IsProcessBackgrounded()); | |
327 #else | |
328 process.SetProcessBackgrounded(true); | |
329 process.SetProcessBackgrounded(false); | |
330 #endif | |
331 int new_priority = process.GetPriority(); | |
332 EXPECT_EQ(old_priority, new_priority); | |
333 } | |
334 | |
335 // Same as SetProcessBackgrounded but to this very process. It uses | |
336 // a different code path at least for Windows. | |
337 TEST_F(ProcessUtilTest, SetProcessBackgroundedSelf) { | |
338 base::Process process(base::Process::Current().handle()); | |
339 int old_priority = process.GetPriority(); | |
340 #if defined(OS_WIN) | |
341 EXPECT_TRUE(process.SetProcessBackgrounded(true)); | |
342 EXPECT_TRUE(process.IsProcessBackgrounded()); | |
343 EXPECT_TRUE(process.SetProcessBackgrounded(false)); | |
344 EXPECT_FALSE(process.IsProcessBackgrounded()); | |
345 #else | |
346 process.SetProcessBackgrounded(true); | |
347 process.SetProcessBackgrounded(false); | |
348 #endif | |
349 int new_priority = process.GetPriority(); | |
350 EXPECT_EQ(old_priority, new_priority); | |
351 } | |
352 | |
353 #if defined(OS_WIN) | 314 #if defined(OS_WIN) |
354 // TODO(estade): if possible, port this test. | 315 // TODO(estade): if possible, port this test. |
355 TEST_F(ProcessUtilTest, GetAppOutput) { | 316 TEST_F(ProcessUtilTest, GetAppOutput) { |
356 // Let's create a decently long message. | 317 // Let's create a decently long message. |
357 std::string message; | 318 std::string message; |
358 for (int i = 0; i < 1025; i++) { // 1025 so it does not end on a kilo-byte | 319 for (int i = 0; i < 1025; i++) { // 1025 so it does not end on a kilo-byte |
359 // boundary. | 320 // boundary. |
360 message += "Hello!"; | 321 message += "Hello!"; |
361 } | 322 } |
362 // cmd.exe's echo always adds a \r\n to its output. | 323 // cmd.exe's echo always adds a \r\n to its output. |
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
943 // Check that process was really killed. | 904 // Check that process was really killed. |
944 EXPECT_TRUE(IsProcessDead(child_process)); | 905 EXPECT_TRUE(IsProcessDead(child_process)); |
945 base::CloseProcessHandle(child_process); | 906 base::CloseProcessHandle(child_process); |
946 } | 907 } |
947 | 908 |
948 MULTIPROCESS_TEST_MAIN(process_util_test_die_immediately) { | 909 MULTIPROCESS_TEST_MAIN(process_util_test_die_immediately) { |
949 return 0; | 910 return 0; |
950 } | 911 } |
951 | 912 |
952 #endif // defined(OS_POSIX) | 913 #endif // defined(OS_POSIX) |
OLD | NEW |