From 2e5955212d20b2dcb3c7011cf69788660c76e1f6 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 20 Jul 2017 14:58:09 -0400 Subject: [PATCH] qa/tasks/workunit: allow alt basedir Instead of 'qa/workunits' allow something like 'qa/standalone'. Signed-off-by: Sage Weil --- qa/tasks/workunit.py | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/qa/tasks/workunit.py b/qa/tasks/workunit.py index ffd8b2202844c..f69b3960a4c91 100644 --- a/qa/tasks/workunit.py +++ b/qa/tasks/workunit.py @@ -122,6 +122,17 @@ def task(ctx, config): backup.client.0: [foo] client.1: [bar] # cluster is implicitly 'ceph' + You can also specify an alternative top-level dir to 'qa/workunits', like + 'qa/standalone', with:: + + tasks: + - install: + - workunit: + basedir: qa/standalone + clients: + client.0: + - test-ceph-helpers.sh + :param ctx: Context :param config: Configuration """ @@ -174,7 +185,9 @@ def task(ctx, config): for role, tests in clients.iteritems(): if role != "all": p.spawn(_run_tests, ctx, refspec, role, tests, - config.get('env'), timeout=timeout) + config.get('env'), + basedir=config.get('basedir','qa/workunits'), + timeout=timeout) # Clean up dirs from any non-all workunits for role, created in created_mountpoint.items(): @@ -184,6 +197,7 @@ def task(ctx, config): if 'all' in clients: all_tasks = clients["all"] _spawn_on_all_clients(ctx, refspec, all_tasks, config.get('env'), + config.get('basedir', 'qa/workunits'), config.get('subdir'), timeout=timeout) @@ -312,7 +326,7 @@ def _make_scratch_dir(ctx, role, subdir): return created_mountpoint -def _spawn_on_all_clients(ctx, refspec, tests, env, subdir, timeout=None): +def _spawn_on_all_clients(ctx, refspec, tests, env, basedir, subdir, timeout=None): """ Make a scratch directory for each client in the cluster, and then for each test spawn _run_tests() for each role. @@ -331,7 +345,9 @@ def _spawn_on_all_clients(ctx, refspec, tests, env, subdir, timeout=None): for unit in tests: with parallel() as p: for role, remote in client_remotes.items(): - p.spawn(_run_tests, ctx, refspec, role, [unit], env, subdir, + p.spawn(_run_tests, ctx, refspec, role, [unit], env, + basedir, + subdir, timeout=timeout) # cleanup the generated client directories @@ -339,7 +355,8 @@ def _spawn_on_all_clients(ctx, refspec, tests, env, subdir, timeout=None): _delete_dir(ctx, role, created_mountpoint[role]) -def _run_tests(ctx, refspec, role, tests, env, subdir=None, timeout=None): +def _run_tests(ctx, refspec, role, tests, env, basedir, + subdir=None, timeout=None): """ Run the individual test. Create a scratch directory and then extract the workunits from git. Make the executables, and then run the tests. @@ -369,7 +386,8 @@ def _run_tests(ctx, refspec, role, tests, env, subdir=None, timeout=None): else: scratch_tmp = os.path.join(mnt, subdir) clonedir = '{tdir}/clone.{role}'.format(tdir=testdir, role=role) - srcdir = '{cdir}/qa/workunits'.format(cdir=clonedir) + srcdir = '{cdir}/{basedir}'.format(cdir=clonedir, + basedir=basedir) git_url = teuth_config.get_ceph_qa_suite_git_url() # if we are running an upgrade test, and ceph-ci does not have branches like @@ -430,6 +448,7 @@ def _run_tests(ctx, refspec, role, tests, env, subdir=None, timeout=None): run.Raw('CEPH_ID="{id}"'.format(id=id_)), run.Raw('PATH=$PATH:/usr/sbin'), run.Raw('CEPH_BASE={dir}'.format(dir=clonedir)), + run.Raw('CEPH_ROOT={dir}'.format(dir=clonedir)), ] if env is not None: for var, val in env.iteritems(): -- 2.39.5