summaryrefslogtreecommitdiffstats
path: root/TestUnits/xlators/cluster/afr/self_heal/testunit.py
blob: 840889bf2e89723c96d297be0f53354078e2e48b (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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
"""testunit.py is the main module for the testunit.

This module "main" function is called from atfexecute to execute the testunit.
"""
from atfglobals import GlobalObj
import os
import parser
import atfutils
import managerutils
import testcases

reload(testcases)

filename = os.path.abspath(__file__)
dir_path = os.path.dirname(filename)

def initialize():
    """
    """
    logger = GlobalObj.getLoggerObj()
    return_status = 1
    testenv_file = GlobalObj.testenv_file
    testenv_abspath =  os.path.join(dir_path, testenv_file)

    if not (os.path.isfile(testenv_abspath)):
        logger.error("%s not found in %s" % (testenv_file, dir_path))
        
    if parser.parse_testenv_configfile(testenv_abspath):
        return return_status
    if managerutils.ssh_connect_allhosts():
        return return_status
    
    return 0

def setup():
    """
    """
    return_status = 1
    if atfutils.set_active_volume("volume1"):
        return return_status
    return 0

def execute():
    """
    """
    logger = GlobalObj.getLoggerObj()
    return_status = 1
    testcaseslist_file = GlobalObj.testcaseslist_file
    testcaseslist_abspath = os.path.join(dir_path, testcaseslist_file)
    
    if not (os.path.isfile(testcaseslist_abspath)):
        logger.error("%s not found in %s" % (testcaseslist_file, dir_path))
        return return_status
            
    else:
        testcaseslist = []
        testcaseslist = parser.parse_testcaseslist_file(testcaseslist_abspath)
        if not testcaseslist:
            logger.error("Skipping TestUnit %s. No testcases to execute"
                         % dir_path)
            return 0
        else:
            passedtestcases = 0
            failedtestcases = 0
            selectedtestcases = len(testcaseslist)
            
            logger.info("Starting TestUnit: '%s' test execution" % dir_path)
            for testcase in testcaseslist:
                function_obj = getattr(testcases, testcase)
                if function_obj:
                    logger.debug("Starting Test: ' %s '" % testcase)

                    return_status = function_obj()
                    if return_status:
                        logger.debug("TestCase '%s' Failed" % testcase)
                        failedtestcases += 1
                    else:
                        logger.debug("TestCase '%s' Passed" % testcase)
                        passedtestcases += 1
            
                    logger.debug("Ending Test: '%s'" % testcase)

                else:
                    logger.info("TestCase %s not defined in 'testcases' module"
                                % testcase)
                    continue

            logger.info("Selected %d : Passed %d, Failed %d"
                        % (selectedtestcases,
                           passedtestcases,
                           failedtestcases))
            logger.info("Ending TestUnit: '%s' test execution" % dir_path)
    
    return 0

def cleanup():
    """
    """
    pass
    
def main():
    """
    """
    return_status = 1
    if initialize():
        return return_status
    if setup():
        return return_status
    if execute():
        return return_status
    if cleanup():
        return return_status
    
    return 0