summaryrefslogtreecommitdiffstats
path: root/libs/utils/atfutils.py
blob: b19ef38143176b03999a8d3c698acd136a9b9234 (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
"""atfutils module contains  general purpose wrappers

*) assert_success
*) assert_failure
*) print-stdout
*) print_stderr
*) set_active_volume
"""

import re
import ssh
from atfglobals import GlobalObj

def assert_success(**arguments):
    """
    """     
    if not arguments["exitstatus"]:
        return 0
    else:
        return 1

def assert_failure(**arguments):
    """
    """        
    if arguments["exitstatus"]:
        return 0
    else:
        return 1

def expect(actual_string, expected_string):
    """
    """
    escaped_pattern = re.escape(expected_string)
    new_pattern = re.compile(escaped_pattern, re.IGNORECASE)
    
    matched = False
    if not expected_string:
        matched = True
        
    else:
        if re.search(new_pattern, actual_string):
            matched = True

    return matched

def validate_output(output, expected_exit_status, expected_output):
    """
    Parameters:
        output: This is dictionary which is return value of
                executecommand(ssh module)
                
        expected_exit_status: exit_status we are expecting
        
        expected_output : output expected from the execution of command

    Returns:
        True: if output we got from the command execution matches with
                expected_exit_status and expected_output is

        False: if output doesn't match with expected_exit_status or
                expected_output
    """
    if expected_exit_status is not 0:
        exit_status = assert_failure(**output)
    else:
        exit_status = assert_success(**output)
    
    output_status = expect(str(output['stdoutdata']),
                                         expected_output)
    if output_status is True and (not exit_status):
        return 0
    else:
        return 1
    
def print_stdout(stdoutdata):
    """
    """
    logger = GlobalObj.getLoggerObj()
    if not stdoutdata == None:
        for data in stdoutdata:
            logger.debug(data)

def print_stderr(stderrdata):
    logger = GlobalObj.getLoggerObj()
    if not stderrdata == None:
        for data in stderrdata:
            logger.debug(data)

def set_active_volume(volumekey):
    """
    """
    logger = GlobalObj.getLoggerObj()
    env = GlobalObj.getTestenvObj()
    return_status = env.setActiveVolume(volumekey)
    if return_status:
        logger.error("Unable to set Active Volume. \
                    '%s' Not defined in TestEnvironment" % volumekey )
    return return_status



__all__ = ['assert_success',
           'assert_failure',
           'print-stdout',
           'print_stderr',
           'set_active_volume']