summaryrefslogtreecommitdiff
path: root/init/subcontext_test.cpp
diff options
context:
space:
mode:
authorSteven Laver <lavers@google.com>2019-12-12 15:29:36 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-12-12 15:29:36 +0000
commita239544c7b06814b70fd970de7eaac234682fa52 (patch)
treea4298d61f9b73642f350799b1157e49b65f4e1e8 /init/subcontext_test.cpp
parent63de1e1c8d7824c241f22de67edf54f4f1eaeea5 (diff)
parent5319412e5305a3b4bcecf251a2955c09a6e9837e (diff)
Merge "Merge RP1A.191203.001" into r-keystone-qcom-dev
Diffstat (limited to 'init/subcontext_test.cpp')
-rw-r--r--init/subcontext_test.cpp39
1 files changed, 16 insertions, 23 deletions
diff --git a/init/subcontext_test.cpp b/init/subcontext_test.cpp
index 9c1a78818..2e5a25688 100644
--- a/init/subcontext_test.cpp
+++ b/init/subcontext_test.cpp
@@ -39,24 +39,12 @@ using android::base::WaitForProperty;
namespace android {
namespace init {
-// I would use test fixtures, but I cannot skip the test if not root with them, so instead we have
-// this test runner.
template <typename F>
void RunTest(F&& test_function) {
- if (getuid() != 0) {
- GTEST_SKIP() << "Skipping test, must be run as root.";
- return;
- }
-
- char* context;
- ASSERT_EQ(0, getcon(&context));
- auto context_string = std::string(context);
- free(context);
-
- auto subcontext = Subcontext({"dummy_path"}, context_string);
+ auto subcontext = Subcontext({"dummy_path"}, kTestContext);
ASSERT_NE(0, subcontext.pid());
- test_function(subcontext, context_string);
+ test_function(subcontext);
if (subcontext.pid() > 0) {
kill(subcontext.pid(), SIGTERM);
@@ -65,7 +53,7 @@ void RunTest(F&& test_function) {
}
TEST(subcontext, CheckDifferentPid) {
- RunTest([](auto& subcontext, auto& context_string) {
+ RunTest([](auto& subcontext) {
auto result = subcontext.Execute(std::vector<std::string>{"return_pids_as_error"});
ASSERT_FALSE(result);
@@ -78,7 +66,12 @@ TEST(subcontext, CheckDifferentPid) {
}
TEST(subcontext, SetProp) {
- RunTest([](auto& subcontext, auto& context_string) {
+ if (getuid() != 0) {
+ GTEST_SKIP() << "Skipping test, must be run as root.";
+ return;
+ }
+
+ RunTest([](auto& subcontext) {
SetProperty("init.test.subcontext", "fail");
WaitForProperty("init.test.subcontext", "fail");
@@ -95,7 +88,7 @@ TEST(subcontext, SetProp) {
}
TEST(subcontext, MultipleCommands) {
- RunTest([](auto& subcontext, auto& context_string) {
+ RunTest([](auto& subcontext) {
auto first_pid = subcontext.pid();
auto expected_words = std::vector<std::string>{
@@ -122,7 +115,7 @@ TEST(subcontext, MultipleCommands) {
}
TEST(subcontext, RecoverAfterAbort) {
- RunTest([](auto& subcontext, auto& context_string) {
+ RunTest([](auto& subcontext) {
auto first_pid = subcontext.pid();
auto result = subcontext.Execute(std::vector<std::string>{"cause_log_fatal"});
@@ -136,10 +129,10 @@ TEST(subcontext, RecoverAfterAbort) {
}
TEST(subcontext, ContextString) {
- RunTest([](auto& subcontext, auto& context_string) {
+ RunTest([](auto& subcontext) {
auto result = subcontext.Execute(std::vector<std::string>{"return_context_as_error"});
ASSERT_FALSE(result);
- ASSERT_EQ(context_string, result.error().message());
+ ASSERT_EQ(kTestContext, result.error().message());
});
}
@@ -147,7 +140,7 @@ TEST(subcontext, TriggerShutdown) {
static constexpr const char kTestShutdownCommand[] = "reboot,test-shutdown-command";
static std::string trigger_shutdown_command;
trigger_shutdown = [](const std::string& command) { trigger_shutdown_command = command; };
- RunTest([](auto& subcontext, auto& context_string) {
+ RunTest([](auto& subcontext) {
auto result = subcontext.Execute(
std::vector<std::string>{"trigger_shutdown", kTestShutdownCommand});
ASSERT_TRUE(result);
@@ -156,7 +149,7 @@ TEST(subcontext, TriggerShutdown) {
}
TEST(subcontext, ExpandArgs) {
- RunTest([](auto& subcontext, auto& context_string) {
+ RunTest([](auto& subcontext) {
auto args = std::vector<std::string>{
"first",
"${ro.hardware}",
@@ -172,7 +165,7 @@ TEST(subcontext, ExpandArgs) {
}
TEST(subcontext, ExpandArgsFailure) {
- RunTest([](auto& subcontext, auto& context_string) {
+ RunTest([](auto& subcontext) {
auto args = std::vector<std::string>{
"first",
"${",