Log exception stack trace on test failure
[testsuite/pythonsdk-tests.git] / src / onaptests / scenario / cds_resource_resolution.py
1 #!/usr/bin/env python
2 """CDS resource resolution test scenario."""
3
4 import logging
5 import time
6
7 from onapsdk.configuration import settings
8 from onapsdk.exceptions import SDKException
9 from xtesting.core import testcase
10
11 from onaptests.steps.base import BaseStep
12 from onaptests.steps.onboard.cds import CbaProcessStep
13 from onaptests.steps.simulator.cds_mockserver import CdsMockserverCnfConfigureStep
14 from onaptests.utils.exceptions import OnapTestException
15
16
17 class CDSResourceResolutionStep(BaseStep):
18     """Step created to run scenario and generate report."""
19
20     def __init__(self, cleanup=False):
21         """Initialize step.
22
23         Substeps:
24             - CdsMockserverCnfConfigureStep,
25             - CbaProcessStep.
26         """
27         super().__init__(cleanup=cleanup)
28         self.add_step(CdsMockserverCnfConfigureStep(
29             cleanup=cleanup
30         ))
31         self.add_step(CbaProcessStep(
32             cleanup=cleanup
33         ))
34
35     @property
36     def description(self) -> str:
37         """Step description.
38
39         Used for reports
40
41         Returns:
42             str: Step description
43
44         """
45         return "CDS resource-resoulution base step"
46
47     @property
48     def component(self) -> str:
49         """Component name.
50
51        Name of the component this step relates to.
52             Usually the name of ONAP component.
53
54         Returns:
55             str: Component name
56
57         """
58         return "PythonSDK-tests"
59
60
61 class CDSResourceResolution(testcase.TestCase):
62     """Enrich simple blueprint using CDS blueprintprocessor."""
63
64     __logger = logging.getLogger(__name__)
65
66     def __init__(self, **kwargs):
67         """Init CDS resource resolution use case."""
68         if "case_name" not in kwargs:
69             kwargs["case_name"] = 'basic_cds'
70         super().__init__(**kwargs)
71         self.__logger.debug("CDS resource resolution initialization")
72         self.test = CDSResourceResolutionStep(
73                 cleanup=settings.CLEANUP_FLAG)
74         self.start_time = None
75         self.stop_time = None
76         self.result = 0
77
78     def run(self):
79         self.__logger.debug("CDS resource resolution run")
80         self.start_time = time.time()
81         try:
82             for test_phase in (self.test.execute, self.test.cleanup):
83                 try:
84                     test_phase()
85                     self.result += 50
86                 except OnapTestException as exc:
87                     self.__logger.exception(exc.error_message)
88                 except SDKException:
89                     self.__logger.exception("SDK Exception")
90         finally:
91             self.stop_time = time.time()
92
93     def clean(self):
94         """Clean Additional resources if needed."""
95         self.__logger.info("Generate Test report")
96         self.test.reports_collection.generate_report()