]> 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)
committerCasey Bodley <cbodley@redhat.com>
Fri, 27 May 2022 19:47:31 +0000 (15:47 -0400)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
qa/workunits/rgw/test_rgw_reshard.py

index a0772acc944420a4bc76a7238c5eb7c6f9670c96..a5c575b5f43aec93a954533f9a8287ffd1bdf5b6 100755 (executable)
@@ -1,5 +1,6 @@
 #!/usr/bin/python3
 
+import errno
 import logging as log
 import time
 import subprocess
@@ -39,23 +40,17 @@ BUCKET_NAME5 = 'e-bucket'
 VER_BUCKET_NAME = 'myver'
 INDEX_POOL = 'default.rgw.buckets.index'
 
-
-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):
@@ -117,7 +112,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