]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/rgw: test_rgw_reshard.py exec_cmd() can return error code
authorCasey Bodley <cbodley@redhat.com>
Wed, 16 Dec 2020 23:16:41 +0000 (18:16 -0500)
committerAdam C. Emerson <aemerson@redhat.com>
Tue, 1 Feb 2022 14:21:02 +0000 (09:21 -0500)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
qa/workunits/rgw/test_rgw_reshard.py

index 5dd2c260aac653354fd204ad30a59f8b38345e3b..5c247ffec76623b8369ca3b4aaed9c60a421d1dc 100755 (executable)
@@ -1,5 +1,6 @@
 #!/usr/bin/python3
 
+import errno
 import logging as log
 import time
 import subprocess
@@ -37,23 +38,17 @@ BUCKET_NAME4 = 'd-bucket'
 BUCKET_NAME5 = 'e-bucket'
 VER_BUCKET_NAME = 'myver'
 
-
-def exec_cmd(cmd):
-    try:
-        proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
-        out, err = proc.communicate()
-        log.info(proc.args)
-        if proc.returncode == 0:
-            log.info('command succeeded')
-            if out is not None: log.debug('{} \n {}'.format(out.decode('utf-8'), err.decode('utf-8')))
-            return out
-        else:
-            raise Exception("error: {} \nreturncode: {}".format(err, proc.returncode))
-    except Exception as e:
-        log.error('command failed\n')
-        log.error(e)
-        return False
-
+def exec_cmd(cmd, **kwargs):
+    check_retcode = kwargs.pop('check_retcode', True)
+    kwargs['shell'] = True
+    kwargs['stdout'] = subprocess.PIPE
+    proc = subprocess.Popen(cmd, **kwargs)
+    log.info(proc.args)
+    out, _ = proc.communicate()
+    if check_retcode:
+        assert(proc.returncode == 0)
+        return out
+    return (out, proc.returncode)
 
 class BucketStats:
     def __init__(self, bucket_name, bucket_id, num_objs=0, size_kb=0, num_shards=0):
@@ -115,7 +110,8 @@ def main():
     execute manual and dynamic resharding commands
     """
     # create user
-    exec_cmd('radosgw-admin user create --uid {} --display-name {} --access-key {} --secret {}'.format(USER, DISPLAY_NAME, ACCESS_KEY, SECRET_KEY))
+    _, ret = exec_cmd('radosgw-admin user create --uid {} --display-name {} --access-key {} --secret {}'.format(USER, DISPLAY_NAME, ACCESS_KEY, SECRET_KEY), check_retcode=False)
+    assert(ret == 0 or errno.EEXIST)
 
     def boto_connect(portnum, ssl, proto):
         endpoint = proto + '://localhost:' + portnum