From 8c2bac38f8c4a1eec04052bdc7516f614e1369d4 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Wed, 16 Dec 2020 18:16:41 -0500 Subject: [PATCH] test/rgw: test_rgw_reshard.py exec_cmd() can return error code Signed-off-by: Casey Bodley --- qa/workunits/rgw/test_rgw_reshard.py | 32 ++++++++++++---------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/qa/workunits/rgw/test_rgw_reshard.py b/qa/workunits/rgw/test_rgw_reshard.py index a0772acc944..a5c575b5f43 100755 --- a/qa/workunits/rgw/test_rgw_reshard.py +++ b/qa/workunits/rgw/test_rgw_reshard.py @@ -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 -- 2.39.5