summaryrefslogtreecommitdiffstats
path: root/tests/logpicker_test/logmining_test/logminerbaseclass_test.py
blob: aad9af80b6779c3d8c72d14e19d77c557e73d353 (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
import mock

class LogminingBaseClassTest(mock.TestCase):
    def setUp(self):
        self.setupModules([])
        self.fs = mock.DiskIO()
    
    def tearDown(self):
        self.tearDownModules()
    
    def get_filename_test(self):
        from log_picker.logmining import LogMinerBaseClass
        
        ret = LogMinerBaseClass.get_filename()
        self.assertEqual(ret, LogMinerBaseClass._filename)
    
    def get_description_test(self):
        from log_picker.logmining import LogMinerBaseClass
        
        ret = LogMinerBaseClass.get_description()
        self.assertEqual(ret, LogMinerBaseClass._description)
    
    def set_logfile_test(self):
        from log_picker.logmining import LogMinerBaseClass
        
        FILENAME = "file123"
        
        obj = LogMinerBaseClass()
        obj.set_logfile(FILENAME)
        self.assertEqual(FILENAME, obj.logfile)
       
    def write_separator_test(self):
        import log_picker.logmining as logmining
        logmining.open = self.fs.open
        
        OUTFILE = '/tmp/logfile'
        f = self.fs.open(OUTFILE, 'w')
        
        obj = logmining.LogMinerBaseClass(f)
        obj._write_separator()
        f.close()
        
        self.assertEqual(self.fs[OUTFILE], '\n\n')
    
    def write_files_1_test(self):
        import log_picker.logmining as logmining
        logmining.open = self.fs.open
        
        FILE = '/tmp/infile'
        CONTENT = "some_random_456_content\n"
        self.fs.open(FILE, 'w').write(CONTENT)
        
        OUTFILE = '/tmp/logfile'
        f = self.fs.open(OUTFILE, 'w')
        
        obj = logmining.LogMinerBaseClass(f)
        obj._write_files(FILE)
        f.close()
               
        self.assertEqual('%s:\n%s\n' % (FILE, CONTENT), self.fs[OUTFILE])
        
    def write_files_2_test(self):
        import log_picker.logmining as logmining
        logmining.open = self.fs.open
        
        FILE_1 = '/tmp/infile1'
        FILE_2 = '/tmp/infile2'
        CONTENT_1 = "some_random_456_content\n"
        CONTENT_2 = "next_line_789\n"
        self.fs.open(FILE_1, 'w').write(CONTENT_1)
        self.fs.open(FILE_2, 'w').write(CONTENT_2)
        
        OUTFILE = '/tmp/logfile'
        f = self.fs.open(OUTFILE, 'w')
        
        obj = logmining.LogMinerBaseClass(f)
        obj._write_files([FILE_1, FILE_2])
        f.close()
               
        self.assertEqual('%s:\n%s\n%s:\n%s\n' % \
                (FILE_1, CONTENT_1, FILE_2, CONTENT_2), self.fs[OUTFILE])
    
    def run_command_test(self):
        import log_picker.logmining as logmining
               
        COMMAND = "some_command param1 param2"
        STDOUT = "some output"
        STDERR = "some error"
        RETCODE = 1
        
        proc_mock = mock.Mock()
        proc_mock.returncode = RETCODE
        proc_mock.communicate.return_value = (STDOUT, STDERR)
        logmining.subprocess = mock.Mock()
        logmining.subprocess.Popen.return_value = proc_mock
        
        OUTFILE = "/tmp/outfile"
        f = self.fs.open(OUTFILE, 'w')
        
        obj = logmining.LogMinerBaseClass(f)
        obj._run_command(COMMAND)
        f.close()
        
        self.assertEqual(self.fs[OUTFILE],
                "STDOUT:\nsome output\nSTDERR:\nsome error\nRETURN CODE: 1\n")