[EXCEPTIONS] Distinguish onaptests and onapsdk exception
[testsuite/pythonsdk-tests.git] / src / onaptests / scenario / clearwater_ims.py
1 #!/usr/bin/env python
2 """vIMS VM test case."""
3 import logging
4 import time
5
6 from xtesting.core import testcase
7 from onapsdk.configuration import settings
8 from onapsdk.exceptions import SDKException
9
10 from onaptests.steps.instantiate.vf_module_ala_carte import YamlTemplateVfModuleAlaCarteInstantiateStep
11 from onaptests.utils.exceptions import OnapTestException
12
13 class ClearwaterIms(testcase.TestCase):
14     """Onboard then instantiate a clearwater vIMS with ONAP."""
15
16     __logger = logging.getLogger(__name__)
17
18     def __init__(self, **kwargs):
19         """Init Clearwater IMS."""
20         # import clearwater_ims_nomulticloud_settings needed
21         if "case_name" not in kwargs:
22             kwargs["case_name"] = 'clearwater_ims'
23         super(ClearwaterIms, self).__init__(**kwargs)
24         self.__logger.debug("vIMS init started")
25         self.test = YamlTemplateVfModuleAlaCarteInstantiateStep(
26                 cleanup=settings.CLEANUP_FLAG)
27         self.start_time = None
28         self.stop_time = None
29         self.result = 0
30
31     def run(self):
32         """Run vIMS test."""
33         self.start_time = time.time()
34         self.__logger.debug("start time")
35         try:
36             self.test.execute()
37             self.__logger.info("VNF clearwater IMS successfully created")
38             # The cleanup is part of the test, not only a teardown action
39             if settings.CLEANUP_FLAG:
40                 self.__logger.info("VNF clearwater IMS cleanup called")
41                 time.sleep(settings.CLEANUP_ACTIVITY_TIMER)
42                 self.test.cleanup()
43                 self.result = 100
44             else:
45                 self.__logger.info("No cleanup requested. Test completed.")
46                 self.result = 100
47             self.stop_time = time.time()
48         except OnapTestException as exc:
49             self.result = 0
50             self.__logger.error(exc.error_message)
51         except SDKException:
52             self.result = 0
53             self.__logger.error("SDK Exception")
54         finally:
55             self.stop_time = time.time()
56
57     def clean(self):
58         """Clean Additional resources if needed."""
59         try:
60             self.test.reports_collection.generate_report()
61         except:
62             self.__logger.error("Impossible to generate reporting")