summaryrefslogtreecommitdiffstats
path: root/libs/utils/atfutils.py
blob: b1f774e134820d7862e50de616ace3aaa7d63861 (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
"""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(exit_status):
    """
    """
    if exit_status is None:
        return 1
    
    if not exit_status:
        return 0
    else:
        return 1

def assert_failure(exit_status):
    """
    """
    if exit_status is None:
        return 1
    
    if exit_status:
        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['exitstatus'])
    else:
        exit_status = assert_success(output['exitstatus'])
    
    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']