summaryrefslogtreecommitdiffstats
path: root/TestUnits/xlators/cluster/afr/basic/testunit.py
blob: 1f8e7d2d1020512f27c3bf6bc820d458170ae3fc (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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
"""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)

            return_status = testcases.reset_testenv()
            if return_status is not 0:
                return return_status

            return_status = testcases.setup_testenv()
            if return_status is not 0:
                return return_status

            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 = initialize()
    if return_status is not 0:
        return return_status

    return_status = setup()
    if return_status is not 0:
        return return_status

    return_status = execute()
    if return_status is not 0:
        return return_status

    return_status = cleanup()
    if return_status is not 0:
        return return_status

    return 0