summaryrefslogtreecommitdiffstats
path: root/vnftest/tests/unit/core/test_commands.py
blob: 35660bd8b796bb5020e5645acf1090590e4e74b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
##############################################################################
# Copyright 2018 EuropeanSoftwareMarketingLtd.
# ===================================================================
#  Licensed under the ApacheLicense, Version2.0 (the"License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#  http://www.apache.org/licenses/LICENSE-2.0
#
# software distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and limitations under
# the License
##############################################################################
# vnftest comment: this is a modified copy of
# yardstick/tests/functional/test_cli_runner.py

import unittest

from vnftest.cmd.commands.runner import RunnerCommands
from vnftest.cmd.commands.step import StepCommands
from vnftest.core import Param
from vnftest.core.runner import Runners
from vnftest.core.step import Steps
from vnftest.runners.iteration import IterationRunner
from vnftest.runners.duration import DurationRunner
from vnftest.onap.onap_api_call import OnapApiCall
from cStringIO import StringIO
import sys


class Capture(list):

    def __enter__(self):
        self._stdout = sys.stdout
        sys.stdout = self._stringio = StringIO()
        return self

    def __exit__(self, *args):
        self.extend(self._stringio.getvalue().splitlines())
        del self._stringio
        sys.stdout = self._stdout


class CommandsTestCase(unittest.TestCase):

    def setUp(self):
        super(CommandsTestCase, self).setUp()

    def test_runner_list(self):
        runner_cmd = RunnerCommands()
        with Capture() as output:
            runner_cmd.do_list(None)
        self.assert_text_in_lines(output, ["Duration", "Iteration"])

    def test_step_list(self):
        step_cmd = StepCommands()
        with Capture() as output:
            step_cmd.do_list(None)
        self.assert_text_in_lines(output, ["OnapApiCall"])

    def test_runner_show_Duration(self):
        param = Param({})
        setattr(param, 'type', ['Duration'])
        with Capture() as output:
            Runners().show(param)
        self.assert_text_in_lines(output, ["duration - amount of time"])

    def test_runner_show_Iteration(self):
        param = Param({})
        setattr(param, 'type', ['Iteration'])
        with Capture() as output:
            Runners().show(param)
        self.assert_text_in_lines(output, ["iterations - amount of times"])

    def test_step_show_OnapApiCall(self):
        param = Param({})
        setattr(param, 'type', ['OnapApiCall'])
        with Capture() as output:
            Steps().show(param)
        self.assert_text_in_lines(output, ["Call ONAP API"])

    def assert_text_in_lines(self, lines, texts):
        for text in texts:
            found = False
            for line in lines:
                if text in line:
                    found = True
                    break
            self.assertTrue(found, "Not Found: " + text)