Leverage on Xtesting
[functest.git] / functest / cli / commands / cli_tier.py
1 #!/usr/bin/env python
2 #
3 # jose.lausuch@ericsson.com
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8
9 # pylint: disable=missing-docstring
10
11 import pkg_resources
12
13 import click
14 from xtesting.ci import tier_builder
15
16 from functest.utils import functest_utils
17 from functest.utils import env
18
19
20 class Tier(object):
21
22     def __init__(self):
23         self.tiers = tier_builder.TierBuilder(
24             env.get('INSTALLER_TYPE'),
25             env.get('DEPLOY_SCENARIO'),
26             pkg_resources.resource_filename('functest', 'ci/testcases.yaml'))
27
28     def list(self):
29         summary = ""
30         for tier in self.tiers.get_tiers():
31             summary += ("    - %s. %s:\n\t   %s\n"
32                         % (tier.get_order(),
33                            tier.get_name(),
34                            tier.get_test_names()))
35         return summary
36
37     def show(self, name):
38         tier = self.tiers.get_tier(name)
39         if tier is None:
40             return None
41         tier_info = self.tiers.get_tier(name)
42         return tier_info
43
44     def gettests(self, name):
45         tier = self.tiers.get_tier(name)
46         if tier is None:
47             return None
48         tests = tier.get_test_names()
49         return tests
50
51     @staticmethod
52     def get_flags(noclean=False, report=False):
53         flags = ""
54         if noclean:
55             flags += "-n "
56         if report:
57             flags += "-r "
58         return flags
59
60     @staticmethod
61     def run(name, noclean=False, report=False):
62         cmd = "run_tests {}-t {}".format(Tier.get_flags(noclean, report), name)
63         functest_utils.execute_command(cmd)
64
65
66 class CliTier(Tier):
67
68     def list(self):
69         click.echo(super(CliTier, self).list())
70
71     def show(self, name):
72         tier_info = super(CliTier, self).show(name)
73         if tier_info:
74             click.echo(tier_info)
75         else:
76             tier_names = self.tiers.get_tier_names()
77             click.echo("The tier with name '%s' does not exist. "
78                        "Available tiers are:\n  %s\n" % (name, tier_names))
79
80     def gettests(self, name):
81         tests = super(CliTier, self).gettests(name)
82         if tests:
83             click.echo("Test cases in tier '%s':\n %s\n" % (name, tests))
84         else:
85             tier_names = self.tiers.get_tier_names()
86             click.echo("The tier with name '%s' does not exist. "
87                        "Available tiers are:\n  %s\n" % (name, tier_names))