[Verify] Discover tests for system-wide Tempest installation

This patch allows us to discover tests for system-wide Tempest installation.

Change-Id: Icc7272f1589dcf2656f3d970859b590da64061ab
This commit is contained in:
Yaroslav Lobankov 2016-08-03 12:40:54 +03:00
parent 01faa04852
commit 72a4f74529
5 changed files with 18 additions and 8 deletions

View File

@ -48,7 +48,7 @@ _rally()
OPTS["task_validate"]="--deployment --task --task-args --task-args-file"
OPTS["verify_compare"]="--uuid-1 --uuid-2 --csv --html --json --output-file --threshold"
OPTS["verify_detailed"]="--uuid --sort-by"
OPTS["verify_discover"]="--deployment --pattern"
OPTS["verify_discover"]="--deployment --pattern --system-wide"
OPTS["verify_genconfig"]="--deployment --tempest-config --override"
OPTS["verify_import"]="--deployment --set --file --no-use"
OPTS["verify_install"]="--deployment --source --version --system-wide"

View File

@ -541,14 +541,16 @@ class Verification(object):
verifier.uninstall_plugin(repo_name)
@classmethod
def discover_tests(cls, deployment, pattern=""):
def discover_tests(cls, deployment, pattern="", system_wide=False):
"""Get a list of discovered tests.
:param deployment: UUID or name of a deployment
:param pattern: Test name pattern which can be used to match
:param system_wide: Discover tests for system-wide or venv
Tempest installation
"""
deployment_uuid = objects.Deployment.get(deployment)["uuid"]
verifier = tempest.Tempest(deployment_uuid)
verifier = tempest.Tempest(deployment_uuid, system_wide=system_wide)
cls._check_tempest_tree_existence(verifier)

View File

@ -546,14 +546,20 @@ class VerifyCommands(object):
@cliutils.args("--pattern", dest="pattern", type=str,
required=False, metavar="<pattern>",
help="Test name pattern which can be used to match")
@cliutils.args("--system-wide", dest="system_wide",
help="Discover tests for system-wide Tempest installation",
required=False, action="store_true")
@envutils.with_default_deployment(cli_arg_name="deployment")
def discover(self, deployment=None, pattern=""):
def discover(self, deployment=None, pattern="", system_wide=False):
"""Show a list of discovered tests.
:param deployment: UUID or name of a deployment
:param pattern: Test name pattern which can be used to match
:param system_wide: Discover tests for system-wide or venv
Tempest installation
"""
discovered_tests = api.Verification.discover_tests(deployment, pattern)
discovered_tests = api.Verification.discover_tests(deployment, pattern,
system_wide)
p_str = (_(" matching pattern '%s'") % pattern) if pattern else ""
if discovered_tests:
print(_("Discovered tests%s:\n") % p_str)
@ -567,7 +573,7 @@ class VerifyCommands(object):
help="UUID or name of a deployment.")
@envutils.with_default_deployment(cli_arg_name="deployment")
def showconfig(self, deployment=None):
"""Show configuration file of Tempest.
"""Show Tempest configuration file.
:param deployment: UUID or name of a deployment
"""

View File

@ -416,7 +416,9 @@ class Tempest(object):
:param pattern: Test name pattern which can be used to match
"""
cmd = [self.venv_wrapper, "testr", "list-tests", pattern]
cmd = ["testr", "list-tests", pattern]
if not self._system_wide:
cmd.insert(0, self.path("tools/with_venv.sh"))
raw_results = subprocess.Popen(
cmd, cwd=self.path(), env=self.env,
stdout=subprocess.PIPE).communicate()[0]

View File

@ -567,7 +567,7 @@ class VerifyCommandsTestCase(test.TestCase):
deployment_uuid = "97725f22-1cd2-46a5-8c62-3cdc36ed6d2a"
self.verify.discover(deployment_uuid, "some_pattern")
mock_verification_discover_tests.assert_called_once_with(
deployment_uuid, "some_pattern")
deployment_uuid, "some_pattern", False)
@mock.patch("rally.api.Verification.show_config_info")
def test_showconfig(self, mock_verification_show_config_info):