Leverage on Xtesting
[functest.git] / functest / cli / commands / cli_tier.py
index 9da5107..a035f85 100644 (file)
@@ -5,26 +5,25 @@
 # are made available under the terms of the Apache License, Version 2.0
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
-#
 
-""" global variables """
+# pylint: disable=missing-docstring
 
-import os
+import pkg_resources
 
 import click
+from xtesting.ci import tier_builder
 
-import functest.ci.tier_builder as tb
-import functest.utils.functest_utils as ft_utils
-import functest.utils.functest_constants as ft_constants
+from functest.utils import functest_utils
+from functest.utils import env
 
 
-class CliTier:
+class Tier(object):
 
     def __init__(self):
-        CI_INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE
-        CI_SCENARIO = ft_constants.CI_SCENARIO
-        testcases = ft_constants.FUNCTEST_TESTCASES_YAML
-        self.tiers = tb.TierBuilder(CI_INSTALLER_TYPE, CI_SCENARIO, testcases)
+        self.tiers = tier_builder.TierBuilder(
+            env.get('INSTALLER_TYPE'),
+            env.get('DEPLOY_SCENARIO'),
+            pkg_resources.resource_filename('functest', 'ci/testcases.yaml'))
 
     def list(self):
         summary = ""
@@ -33,36 +32,56 @@ class CliTier:
                         % (tier.get_order(),
                            tier.get_name(),
                            tier.get_test_names()))
-        click.echo(summary)
+        return summary
 
-    def show(self, tiername):
-        tier = self.tiers.get_tier(tiername)
+    def show(self, name):
+        tier = self.tiers.get_tier(name)
         if tier is None:
-            tier_names = self.tiers.get_tier_names()
-            click.echo("The tier with name '%s' does not exist. "
-                       "Available tiers are:\n  %s\n" % (tiername, tier_names))
-        else:
-            click.echo(self.tiers.get_tier(tiername))
+            return None
+        tier_info = self.tiers.get_tier(name)
+        return tier_info
 
-    def gettests(self, tiername):
-        tier = self.tiers.get_tier(tiername)
+    def gettests(self, name):
+        tier = self.tiers.get_tier(name)
         if tier is None:
+            return None
+        tests = tier.get_test_names()
+        return tests
+
+    @staticmethod
+    def get_flags(noclean=False, report=False):
+        flags = ""
+        if noclean:
+            flags += "-n "
+        if report:
+            flags += "-r "
+        return flags
+
+    @staticmethod
+    def run(name, noclean=False, report=False):
+        cmd = "run_tests {}-t {}".format(Tier.get_flags(noclean, report), name)
+        functest_utils.execute_command(cmd)
+
+
+class CliTier(Tier):
+
+    def list(self):
+        click.echo(super(CliTier, self).list())
+
+    def show(self, name):
+        tier_info = super(CliTier, self).show(name)
+        if tier_info:
+            click.echo(tier_info)
+        else:
             tier_names = self.tiers.get_tier_names()
             click.echo("The tier with name '%s' does not exist. "
-                       "Available tiers are:\n  %s\n" % (tiername, tier_names))
-        else:
-            tests = tier.get_test_names()
-            click.echo("Test cases in tier '%s':\n %s\n" % (tiername, tests))
+                       "Available tiers are:\n  %s\n" % (name, tier_names))
 
-    def run(self, tiername, noclean=False):
-        if not os.path.isfile(ft_constants.ENV_FILE):
-            click.echo("Functest environment is not ready. "
-                       "Run first 'functest env prepare'")
+    def gettests(self, name):
+        tests = super(CliTier, self).gettests(name)
+        if tests:
+            click.echo("Test cases in tier '%s':\n %s\n" % (name, tests))
         else:
-            if noclean:
-                cmd = ("python %s/functest/ci/run_tests.py "
-                       "-n -t %s" % (ft_constants.FUNCTEST_REPO_DIR, tiername))
-            else:
-                cmd = ("python %s/functest/ci/run_tests.py "
-                       "-t %s" % (ft_constants.FUNCTEST_REPO_DIR, tiername))
-            ft_utils.execute_command(cmd)
+            tier_names = self.tiers.get_tier_names()
+            click.echo("The tier with name '%s' does not exist. "
+                       "Available tiers are:\n  %s\n" % (name, tier_names))