This is an automated email from the ASF dual-hosted git repository. alexey pushed a commit to branch branch-1.9.x in repository https://gitbox.apache.org/repos/asf/kudu.git
commit 24341a7d2089921355aacb0eb0d8f2f4dc2a4e1b Author: Alexey Serbin <[email protected]> AuthorDate: Thu Feb 14 12:17:43 2019 -0800 [tests] fix running tests under the super-user Recently I found myself running Kudu tests as a super-user on a VM. A couple of test failed, and this patch fixes that. This is a test-only changelist, it doesn't change any functionality. Change-Id: I05bf220ee8000209a3e36faa9f21fd43ab8bdc9f Reviewed-on: http://gerrit.cloudera.org:8080/12486 Reviewed-by: Adar Dembo <[email protected]> Tested-by: Kudu Jenkins (cherry picked from commit 8f6d2f9a492d9ab3e92e6e24d2b9810ab108379a) Reviewed-on: http://gerrit.cloudera.org:8080/12782 Reviewed-by: Andrew Wong <[email protected]> --- src/kudu/rpc/negotiation-test.cc | 9 +++++++-- src/kudu/util/env-test.cc | 17 +++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/kudu/rpc/negotiation-test.cc b/src/kudu/rpc/negotiation-test.cc index f3990ac..bebc5e9 100644 --- a/src/kudu/rpc/negotiation-test.cc +++ b/src/kudu/rpc/negotiation-test.cc @@ -1166,10 +1166,15 @@ TEST_F(TestNegotiation, TestPreflight) { // Try with an inaccessible keytab. CHECK_ERR(chmod(kt_path.c_str(), 0000)); s = ServerNegotiation::PreflightCheckGSSAPI("kudu"); - ASSERT_FALSE(s.ok()); + if (geteuid() == 0) { + // The super-user can acess the 'inaccessible' keytab file anyway. + ASSERT_TRUE(s.ok()) << s.ToString(); + } else { + ASSERT_FALSE(s.ok()) << s.ToString(); #ifndef KRB5_VERSION_LE_1_10 - ASSERT_STR_MATCHES(s.ToString(), "error accessing keytab: Permission denied"); + ASSERT_STR_MATCHES(s.ToString(), "error accessing keytab: Permission denied"); #endif + } CHECK_ERR(unlink(kt_path.c_str())); // Try with a keytab that has the wrong credentials. diff --git a/src/kudu/util/env-test.cc b/src/kudu/util/env-test.cc index 1c7f899..5bc1f0b 100644 --- a/src/kudu/util/env-test.cc +++ b/src/kudu/util/env-test.cc @@ -771,10 +771,15 @@ TEST_F(TestEnv, TestWalkBadPermissions) { PCHECK(chmod(kTestPath.c_str(), stat_buf.st_mode) == 0); }); - // A walk on a directory without execute permission should fail. + // A walk on a directory without execute permission should fail, + // unless the calling process has super-user's effective ID. Status s = env_->Walk(kTestPath, Env::PRE_ORDER, Bind(&NoopTestWalkCb)); - ASSERT_TRUE(s.IsIOError()); - ASSERT_STR_CONTAINS(s.ToString(), "One or more errors occurred"); + if (geteuid() == 0) { + ASSERT_TRUE(s.ok()) << s.ToString(); + } else { + ASSERT_TRUE(s.IsIOError()) << s.ToString(); + ASSERT_STR_CONTAINS(s.ToString(), "One or more errors occurred"); + } } static Status TestWalkErrorCb(int* num_calls, @@ -836,7 +841,11 @@ TEST_F(TestEnv, TestGlobPermissionDenied) { }); vector<string> matches; Status s = env_->Glob(JoinPathSegments(dir, "*"), &matches); - ASSERT_STR_MATCHES(s.ToString(), "IO error: glob failed for /.*: Permission denied"); + if (geteuid() == 0) { + ASSERT_TRUE(s.ok()) << s.ToString(); + } else { + ASSERT_STR_MATCHES(s.ToString(), "IO error: glob failed for /.*: Permission denied"); + } } TEST_F(TestEnv, TestGetBlockSize) {
