Browse Source

HPCC-22570 Regression Test Engine isSudoer() check generates false negative result on older (6.x) CentOS distro.

Implement more check and retry with simplified parameterlist

Remove an old, commeted out line.

Tested manually on Ubuntu 16.04, CentOS 6.x and 7.x

Signed-off-by: Attila Vamos <attila.vamos@gmail.com>
Attila Vamos 6 years ago
parent
commit
1045ffa208
2 changed files with 13 additions and 3 deletions
  1. 0 1
      testing/regress/hpcc/util/ecl/command.py
  2. 13 2
      testing/regress/hpcc/util/util.py

+ 0 - 1
testing/regress/hpcc/util/ecl/command.py

@@ -45,7 +45,6 @@ class ECLcmd(Shell):
         args.append('-fpickBestEngine=false')
         args.append('-fpickBestEngine=false')
         args.append('--target=' + engine)
         args.append('--target=' + engine)
         args.append('--cluster=' + cluster)
         args.append('--cluster=' + cluster)
-        #args.append('--cluster=' + cluster + "_160")
         args.append('--port=' + self.config.espSocket)
         args.append('--port=' + self.config.espSocket)
         if self.config.useSsl.lower() == 'true':
         if self.config.useSsl.lower() == 'true':
             args.append('--ssl')
             args.append('--ssl')

+ 13 - 2
testing/regress/hpcc/util/util.py

@@ -365,15 +365,26 @@ def isSudoer(testId = -1):
     retVal = False
     retVal = False
     if 'linux' in sys.platform :
     if 'linux' in sys.platform :
         tryCount = 5
         tryCount = 5
+        cmd = "timeout -k 2 2 sudo id && echo Access granted || echo Access denied"
         while tryCount > 0:
         while tryCount > 0:
-            myProc = subprocess.Popen(["timeout -k 2 2 sudo id && echo Access granted || echo Access denied"], shell=True, bufsize=8192, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            tryCount -= 1
+            
+            myProc = subprocess.Popen([cmd], shell=True, bufsize=8192, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
             (myStdout,  myStderr) = myProc.communicate()
             (myStdout,  myStderr) = myProc.communicate()
             result = "returncode:" + str(myProc.returncode) + ", stdout:\n'" + myStdout + "', stderr:\n'" + myStderr + "'."
             result = "returncode:" + str(myProc.returncode) + ", stdout:\n'" + myStdout + "', stderr:\n'" + myStderr + "'."
             logging.debug("%3d. isSudoer() result is: '%s' (try count is:%d)", testId, result, tryCount)
             logging.debug("%3d. isSudoer() result is: '%s' (try count is:%d)", testId, result, tryCount)
+            
+            if 'timeout: invalid option' in myStderr:
+                logging.debug("%3d. isSudoer() result is: '%s'", testId, result)
+                cmd = "timeout 2 sudo id && echo Access granted || echo Access denied"
+                logging.debug("%3d. try is without '-k 2' parameter: '%s'", testId, cmd)
+                continue
+                
             if 'Access denied' not in myStdout:
             if 'Access denied' not in myStdout:
                 retVal = True
                 retVal = True
                 break
                 break
-            tryCount -= 1
+
+
 
 
         if retVal == False:
         if retVal == False:
             logging.debug("%3d. isSudoer() result is: '%s'", testId, result)
             logging.debug("%3d. isSudoer() result is: '%s'", testId, result)