You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2016/06/15 23:06:19 UTC
[7/8] mesos git commit: Modified os user test for user switching.
Modified os user test for user switching.
This test verifies 'setuid', 'setgid', 'getgrouplist' and 'setgroups'
work properly on both linux and os x.
Review: https://reviews.apache.org/r/48669/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/6b8134a9
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/6b8134a9
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/6b8134a9
Branch: refs/heads/master
Commit: 6b8134a9637b08243ee89fa02b4092fe479c5947
Parents: e002a5d
Author: Gilbert Song <so...@gmail.com>
Authored: Wed Jun 15 16:06:00 2016 -0700
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Jun 15 16:06:00 2016 -0700
----------------------------------------------------------------------
3rdparty/stout/tests/os_tests.cpp | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/6b8134a9/3rdparty/stout/tests/os_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/stout/tests/os_tests.cpp b/3rdparty/stout/tests/os_tests.cpp
index af1a76c..786da14 100644
--- a/3rdparty/stout/tests/os_tests.cpp
+++ b/3rdparty/stout/tests/os_tests.cpp
@@ -663,6 +663,31 @@ TEST_F(OsTest, User)
EXPECT_SOME(os::su(user.get()));
EXPECT_ERROR(os::su(UUID::random().toString()));
+
+ Try<string> gids_ = os::shell("id -G " + user.get());
+ EXPECT_SOME(gids_);
+
+ Try<vector<string>> tokens =
+ strings::split(strings::trim(gids_.get(), strings::ANY, "\n"), " ");
+
+ ASSERT_SOME(tokens);
+
+ Try<vector<gid_t>> gids = os::getgrouplist(user.get());
+ EXPECT_SOME(gids);
+
+ for (int i = 0; i < gids.get().size(); i++) {
+ EXPECT_EQ(tokens.get()[i], stringify(gids.get()[i]));
+ }
+
+ EXPECT_SOME(os::setgid(gid.get()));
+
+ // 'setgroups' requires root permission.
+ if (user.get() != "root") {
+ return;
+ }
+
+ EXPECT_SOME(os::setgroups(gids.get(), uid.get()));
+ EXPECT_SOME(os::setuid(uid.get()));
}