blob: e4775b7eef695d13da5c31d72273d11e8b34c5ef [file] [log] [blame]
mbligh2895ce52008-04-17 15:40:51 +00001#!/usr/bin/python
2
3import unittest
mbligh2895ce52008-04-17 15:40:51 +00004import common
Luigi Semenzatoe7064812017-02-03 14:47:59 -08005from autotest_lib.tko import status_lib, parser_lib
mbligh1b3b3762008-09-25 02:46:34 +00006from autotest_lib.client.common_lib import log
mbligh2895ce52008-04-17 15:40:51 +00007
8
mbligh51ee7c72008-11-24 17:10:14 +00009class clean_raw_line_test(unittest.TestCase):
10 def test_default(self):
11 raw_line_temp = 'this \r is a %s line \x00 yeah\n'
12 raw_line = raw_line_temp % status_lib.DEFAULT_BLACKLIST[0]
13 cleaned = status_lib.clean_raw_line(raw_line)
14 self.assertEquals(cleaned, raw_line_temp % '')
15
16
17 def test_multi(self):
18 blacklist = ('\r\x00', 'FOOBAR', 'BLAh')
19 raw_line_temp = 'this \x00 FOO is BAR \r a %s line %s BL yeah %s ah\n'
20 raw_line = raw_line_temp % blacklist
21 cleaned = status_lib.clean_raw_line(raw_line, blacklist)
22 self.assertEquals(
23 cleaned, raw_line_temp % (('',) * len(blacklist)))
24
25
mbligh2895ce52008-04-17 15:40:51 +000026class line_buffer_test(unittest.TestCase):
jadmanski0afbb632008-06-06 21:10:57 +000027 def test_get_empty(self):
28 buf = status_lib.line_buffer()
29 self.assertRaises(IndexError, buf.get)
mbligh2895ce52008-04-17 15:40:51 +000030
31
jadmanski0afbb632008-06-06 21:10:57 +000032 def test_get_single(self):
33 buf = status_lib.line_buffer()
34 buf.put("single line")
35 self.assertEquals(buf.get(), "single line")
36 self.assertRaises(IndexError, buf.get)
mbligh2895ce52008-04-17 15:40:51 +000037
38
jadmanski0afbb632008-06-06 21:10:57 +000039 def test_is_fifo(self):
40 buf = status_lib.line_buffer()
41 lines = ["line #%d" for x in xrange(10)]
42 for line in lines:
43 buf.put(line)
44 results = []
45 while buf.size():
46 results.append(buf.get())
47 self.assertEquals(lines, results)
mbligh2895ce52008-04-17 15:40:51 +000048
49
jadmanski0afbb632008-06-06 21:10:57 +000050 def test_put_multiple_same_as_multiple_puts(self):
51 buf_put, buf_multi = [status_lib.line_buffer()
52 for x in xrange(2)]
53 lines = ["line #%d" % x for x in xrange(10)]
54 for line in lines:
55 buf_put.put(line)
56 buf_multi.put_multiple(lines)
57 counter = 0
58 while buf_put.size():
59 self.assertEquals(buf_put.size(), buf_multi.size())
60 line = "line #%d" % counter
61 self.assertEquals(buf_put.get(), line)
62 self.assertEquals(buf_multi.get(), line)
63 counter += 1
jadmanski6e8bf752008-05-14 00:17:48 +000064
65
jadmanski0afbb632008-06-06 21:10:57 +000066 def test_put_back_is_lifo(self):
67 buf = status_lib.line_buffer()
68 lines = ["1", "2", "3"]
69 for line in lines:
70 buf.put(line)
71 results = []
72 results.append(buf.get())
73 buf.put_back("1")
74 buf.put_back("0")
75 while buf.size():
76 results.append(buf.get())
77 self.assertEquals(results, ["1", "0", "1", "2", "3"])
mbligh2895ce52008-04-17 15:40:51 +000078
79
jadmanski0afbb632008-06-06 21:10:57 +000080 def test_size_increased_by_put(self):
81 buf = status_lib.line_buffer()
82 self.assertEquals(buf.size(), 0)
83 buf.put("1")
84 buf.put("2")
85 self.assertEquals(buf.size(), 2)
86 buf.put("3")
87 self.assertEquals(buf.size(), 3)
mbligh2895ce52008-04-17 15:40:51 +000088
89
jadmanski0afbb632008-06-06 21:10:57 +000090 def test_size_decreased_by_get(self):
91 buf = status_lib.line_buffer()
92 buf.put("1")
93 buf.put("2")
94 buf.put("3")
95 self.assertEquals(buf.size(), 3)
96 buf.get()
97 self.assertEquals(buf.size(), 2)
98 buf.get()
99 buf.get()
100 self.assertEquals(buf.size(), 0)
mbligh2895ce52008-04-17 15:40:51 +0000101
102
103class status_stack_test(unittest.TestCase):
mbligh1b3b3762008-09-25 02:46:34 +0000104 statuses = log.job_statuses
mbligh302482e2008-05-01 20:06:16 +0000105
jadmanski0afbb632008-06-06 21:10:57 +0000106 def test_default_to_nostatus(self):
107 stack = status_lib.status_stack()
108 self.assertEquals(stack.current_status(), "NOSTATUS")
mbligh2895ce52008-04-17 15:40:51 +0000109
110
jadmanski0afbb632008-06-06 21:10:57 +0000111 def test_default_on_start_to_nostatus(self):
112 stack = status_lib.status_stack()
113 stack.update("FAIL")
114 stack.start()
115 self.assertEquals(stack.current_status(), "NOSTATUS")
mbligh2895ce52008-04-17 15:40:51 +0000116
117
jadmanski0afbb632008-06-06 21:10:57 +0000118 def test_size_always_at_least_zero(self):
119 stack = status_lib.status_stack()
120 self.assertEquals(stack.size(), 0)
121 stack.start()
122 stack.end()
123 self.assertEquals(stack.size(), 0)
124 stack.end()
125 self.assertEquals(stack.size(), 0)
mbligh2895ce52008-04-17 15:40:51 +0000126
127
jadmanski0afbb632008-06-06 21:10:57 +0000128 def test_anything_overrides_nostatus(self):
129 for status in self.statuses:
130 stack = status_lib.status_stack()
131 stack.update(status)
132 self.assertEquals(stack.current_status(), status)
mbligh2895ce52008-04-17 15:40:51 +0000133
134
jadmanski0afbb632008-06-06 21:10:57 +0000135 def test_worse_overrides_better(self):
136 for i in xrange(len(self.statuses)):
137 worse_status = self.statuses[i]
138 for j in xrange(i + 1, len(self.statuses)):
139 stack = status_lib.status_stack()
140 better_status = self.statuses[j]
141 stack.update(better_status)
142 stack.update(worse_status)
143 self.assertEquals(stack.current_status(),
144 worse_status)
mbligh2895ce52008-04-17 15:40:51 +0000145
146
jadmanski0afbb632008-06-06 21:10:57 +0000147 def test_better_never_overrides_better(self):
148 for i in xrange(len(self.statuses)):
149 better_status = self.statuses[i]
150 for j in xrange(i):
151 stack = status_lib.status_stack()
152 worse_status = self.statuses[j]
153 stack.update(worse_status)
154 stack.update(better_status)
155 self.assertEquals(stack.current_status(),
156 worse_status)
mbligh2895ce52008-04-17 15:40:51 +0000157
158
jadmanski0afbb632008-06-06 21:10:57 +0000159 def test_stack_is_lifo(self):
160 stack = status_lib.status_stack()
161 stack.update("GOOD")
162 stack.start()
163 stack.update("FAIL")
164 stack.start()
165 stack.update("WARN")
166 self.assertEquals(stack.end(), "WARN")
167 self.assertEquals(stack.end(), "FAIL")
168 self.assertEquals(stack.end(), "GOOD")
169 self.assertEquals(stack.end(), "NOSTATUS")
mbligh2895ce52008-04-17 15:40:51 +0000170
171
172class parser_test(unittest.TestCase):
jadmanski0afbb632008-06-06 21:10:57 +0000173 available_versions = [0, 1]
174 def test_can_import_available_versions(self):
175 for version in self.available_versions:
Luigi Semenzatoe7064812017-02-03 14:47:59 -0800176 p = parser_lib.parser(0)
jadmanski0afbb632008-06-06 21:10:57 +0000177 self.assertNotEqual(p, None)
mbligh2895ce52008-04-17 15:40:51 +0000178
179
180if __name__ == "__main__":
jadmanski0afbb632008-06-06 21:10:57 +0000181 unittest.main()