diff options
Diffstat (limited to 'runtime/exec_utils_test.cc')
-rw-r--r-- | runtime/exec_utils_test.cc | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/runtime/exec_utils_test.cc b/runtime/exec_utils_test.cc index e9bbd8fd2b..e89180b572 100644 --- a/runtime/exec_utils_test.cc +++ b/runtime/exec_utils_test.cc @@ -18,6 +18,7 @@ #include <sys/utsname.h> +#include <csignal> #include <cstring> #include <filesystem> #include <memory> @@ -120,7 +121,9 @@ TEST_P(ExecUtilsTest, ExecError) { std::string error_msg; // Historical note: Running on Valgrind failed due to some memory // that leaks in thread alternate signal stacks. - EXPECT_FALSE(exec_utils_->Exec(command, &error_msg)); + ExecResult result = exec_utils_->ExecAndReturnResult(command, /*timeout_sec=*/-1, &error_msg); + EXPECT_EQ(result.status, ExecResult::kSignaled); + EXPECT_EQ(result.signal, SIGABRT); EXPECT_FALSE(error_msg.empty()); } @@ -173,9 +176,9 @@ TEST_P(ExecUtilsTest, ExecTimeout) { static constexpr int kWaitSeconds = 1; std::vector<std::string> command = SleepCommand(kSleepSeconds); std::string error_msg; - bool timed_out; - ASSERT_EQ(exec_utils_->ExecAndReturnCode(command, kWaitSeconds, &timed_out, &error_msg), -1); - EXPECT_TRUE(timed_out) << error_msg; + EXPECT_EQ(exec_utils_->ExecAndReturnResult(command, kWaitSeconds, &error_msg).status, + ExecResult::kTimedOut) + << error_msg; EXPECT_THAT(error_msg, HasSubstr("timed out")); } @@ -184,10 +187,9 @@ TEST_P(ExecUtilsTest, ExecNoTimeout) { static constexpr int kWaitSeconds = 5; std::vector<std::string> command = SleepCommand(kSleepSeconds); std::string error_msg; - bool timed_out; - ASSERT_EQ(exec_utils_->ExecAndReturnCode(command, kWaitSeconds, &timed_out, &error_msg), 0) + EXPECT_EQ(exec_utils_->ExecAndReturnResult(command, kWaitSeconds, &error_msg).status, + ExecResult::kExited) << error_msg; - EXPECT_FALSE(timed_out); } TEST_P(ExecUtilsTest, ExecStat) { @@ -195,7 +197,6 @@ TEST_P(ExecUtilsTest, ExecStat) { command.push_back(GetBin("id")); std::string error_msg; - bool timed_out; ProcessStat stat; // The process filename is "a) b". @@ -206,9 +207,11 @@ TEST_P(ExecUtilsTest, ExecStat) { EXPECT_CALL(*exec_utils_, GetUptimeMs()).WillOnce(Return(1620344887ll)); EXPECT_CALL(*exec_utils_, GetTicksPerSec()).WillOnce(Return(100)); - ASSERT_EQ(exec_utils_->ExecAndReturnCode( - command, /*timeout_sec=*/-1, ExecCallbacks(), &timed_out, &stat, &error_msg), - 0) + ASSERT_EQ( + exec_utils_ + ->ExecAndReturnResult(command, /*timeout_sec=*/-1, ExecCallbacks(), &stat, &error_msg) + .status, + ExecResult::kExited) << error_msg; EXPECT_EQ(stat.cpu_time_ms, 990); @@ -219,7 +222,6 @@ TEST_P(ExecUtilsTest, ExecStatFailed) { std::vector<std::string> command = SleepCommand(5); std::string error_msg; - bool timed_out; ProcessStat stat; EXPECT_CALL(*exec_utils_, GetProcStat(_)) @@ -230,8 +232,11 @@ TEST_P(ExecUtilsTest, ExecStatFailed) { EXPECT_CALL(*exec_utils_, GetTicksPerSec()).WillOnce(Return(100)); // This will always time out. - exec_utils_->ExecAndReturnCode( - command, /*timeout_sec=*/1, ExecCallbacks(), &timed_out, &stat, &error_msg); + ASSERT_EQ( + exec_utils_ + ->ExecAndReturnResult(command, /*timeout_sec=*/1, ExecCallbacks(), &stat, &error_msg) + .status, + ExecResult::kTimedOut); EXPECT_EQ(stat.cpu_time_ms, 990); EXPECT_EQ(stat.wall_time_ms, 1007); @@ -251,17 +256,14 @@ TEST_P(ExecUtilsTest, ExecCallbacks) { command.push_back(GetBin("id")); std::string error_msg; - bool timed_out; - - exec_utils_->ExecAndReturnCode(command, - /*timeout_sec=*/-1, - ExecCallbacks{ - .on_start = on_start.AsStdFunction(), - .on_end = on_end.AsStdFunction(), - }, - &timed_out, - /*stat=*/nullptr, - &error_msg); + exec_utils_->ExecAndReturnResult(command, + /*timeout_sec=*/-1, + ExecCallbacks{ + .on_start = on_start.AsStdFunction(), + .on_end = on_end.AsStdFunction(), + }, + /*stat=*/nullptr, + &error_msg); } INSTANTIATE_TEST_SUITE_P(AlwaysOrNeverFallback, ExecUtilsTest, testing::Values(true, false)); |