Merge "Refactor TempestCommon to simplify subclasses"
[functest.git] / functest / opnfv_tests / openstack / refstack / refstack.py
1 #!/usr/bin/env python
2
3 # Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
4 #
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9
10 """Refstack testcase implementation."""
11
12 import logging
13 import os
14 import shutil
15 import time
16
17 from refstack_client import list_parser
18 from xtesting.core import testcase
19 from xtesting.energy import energy
20
21 from functest.opnfv_tests.openstack.tempest import tempest
22 from functest.utils import config
23
24
25 class Refstack(tempest.TempestCommon):
26     """Refstack testcase implementation class."""
27
28     __logger = logging.getLogger(__name__)
29
30     defcorelist = os.path.join(
31         getattr(config.CONF, 'dir_refstack_data'), 'defcore.txt')
32
33     def __init__(self, **kwargs):
34         if "case_name" not in kwargs:
35             kwargs["case_name"] = 'refstack'
36         super(Refstack, self).__init__(**kwargs)
37         self.res_dir = os.path.join(
38             getattr(config.CONF, 'dir_results'), 'refstack')
39         self.list = os.path.join(self.res_dir, 'tempest-list.txt')
40
41     @energy.enable_recording
42     def run(self, **kwargs):
43         """Start Refstack testcase."""
44         self.start_time = time.time()
45         try:
46             self.configure()
47             parser = list_parser.TestListParser(
48                 getattr(config.CONF, 'dir_repo_tempest'))
49             nfile = parser.get_normalized_test_list(Refstack.defcorelist)
50             shutil.copyfile(nfile, self.list)
51             self.run_verifier_tests()
52             self.parse_verifier_result()
53             self.generate_report()
54             res = testcase.TestCase.EX_OK
55         except Exception:  # pylint: disable=broad-except
56             self.__logger.exception('Error with run')
57             res = testcase.TestCase.EX_RUN_ERROR
58         finally:
59             self.resources.cleanup()
60         self.stop_time = time.time()
61         return res