blob: 2e6ba70e985c3798fb4be28ae1d55259ebe14c29 [file] [log] [blame]
mbligh2895ce52008-04-17 15:40:51 +00001#!/usr/bin/python
2
3import unittest
4
5import common
6from autotest_lib.tko import status_lib
7
8
9class line_buffer_test(unittest.TestCase):
10 def testGetEmpty(self):
11 buf = status_lib.line_buffer()
12 self.assertRaises(IndexError, buf.get)
13
14
15 def testGetSingle(self):
16 buf = status_lib.line_buffer()
17 buf.put("single line")
18 self.assertEquals(buf.get(), "single line")
19 self.assertRaises(IndexError, buf.get)
20
21
22 def testIsFIFO(self):
23 buf = status_lib.line_buffer()
24 lines = ["line #%d" for x in xrange(10)]
25 for line in lines:
26 buf.put(line)
27 results = []
28 while buf.size():
29 results.append(buf.get())
30 self.assertEquals(lines, results)
31
32
33 def testPutBackIsLIFO(self):
34 buf = status_lib.line_buffer()
35 lines = ["1", "2", "3"]
36 for line in lines:
37 buf.put(line)
38 results = []
39 results.append(buf.get())
40 buf.put_back("1")
41 buf.put_back("0")
42 while buf.size():
43 results.append(buf.get())
44 self.assertEquals(results, ["1", "0", "1", "2", "3"])
45
46
47 def testSizeIncreasedByPut(self):
48 buf = status_lib.line_buffer()
49 self.assertEquals(buf.size(), 0)
50 buf.put("1")
51 buf.put("2")
52 self.assertEquals(buf.size(), 2)
53 buf.put("3")
54 self.assertEquals(buf.size(), 3)
55
56
57 def testSizeIncreasedByPut(self):
58 buf = status_lib.line_buffer()
59 self.assertEquals(buf.size(), 0)
60 buf.put("1")
61 buf.put("2")
62 self.assertEquals(buf.size(), 2)
63 buf.put("3")
64 self.assertEquals(buf.size(), 3)
65
66
67 def testSizeDecreasedByGet(self):
68 buf = status_lib.line_buffer()
69 buf.put("1")
70 buf.put("2")
71 buf.put("3")
72 self.assertEquals(buf.size(), 3)
73 buf.get()
74 self.assertEquals(buf.size(), 2)
75 buf.get()
76 buf.get()
77 self.assertEquals(buf.size(), 0)
78
79
80class status_stack_test(unittest.TestCase):
81 def testDefaultToNOSTATUS(self):
82 stack = status_lib.status_stack()
83 self.assertEquals(stack.current_status(), "NOSTATUS")
84
85
86 def testDefaultOnStartToNOSTATUS(self):
87 stack = status_lib.status_stack()
88 stack.update("FAIL")
89 stack.start()
90 self.assertEquals(stack.current_status(), "NOSTATUS")
91
92
93 def testSizeAlwaysAtLeastZero(self):
94 stack = status_lib.status_stack()
95 self.assertEquals(stack.size(), 0)
96 stack.start()
97 stack.end()
98 self.assertEquals(stack.size(), 0)
99 stack.end()
100 self.assertEquals(stack.size(), 0)
101
102
103 def testAnythingOverridesNostatus(self):
104 statuses = ["ABORT", "ERROR", "FAIL", "WARN", "GOOD"]
105 for status in statuses:
106 stack = status_lib.status_stack()
107 stack.update(status)
108 self.assertEquals(stack.current_status(), status)
109
110
111 def testWorseOverridesBetter(self):
112 statuses = ["ABORT", "ERROR", "FAIL", "WARN", "GOOD"]
113 for i in xrange(len(statuses)):
114 worse_status = statuses[i]
115 for j in xrange(i + 1, len(statuses)):
116 stack = status_lib.status_stack()
117 better_status = statuses[j]
118 stack.update(better_status)
119 stack.update(worse_status)
120 self.assertEquals(stack.current_status(),
121 worse_status)
122
123
124 def testBetterNeverOverridesBetter(self):
125 statuses = ["ABORT", "ERROR", "FAIL", "WARN", "GOOD"]
126 for i in xrange(len(statuses)):
127 better_status = statuses[i]
128 for j in xrange(i):
129 stack = status_lib.status_stack()
130 worse_status = statuses[j]
131 stack.update(worse_status)
132 stack.update(better_status)
133 self.assertEquals(stack.current_status(),
134 worse_status)
135
136
137 def testStackIsLIFO(self):
138 stack = status_lib.status_stack()
139 stack.update("GOOD")
140 stack.start()
141 stack.update("FAIL")
142 stack.start()
143 stack.update("WARN")
144 self.assertEquals(stack.end(), "WARN")
145 self.assertEquals(stack.end(), "FAIL")
146 self.assertEquals(stack.end(), "GOOD")
147 self.assertEquals(stack.end(), "NOSTATUS")
148
149
150class parser_test(unittest.TestCase):
151 available_versions = [0]
152 def testCanImportAvailableVersions(self):
153 for version in self.available_versions:
154 p = status_lib.parser(0)
155 self.assertNotEqual(p, None)
156
157
158if __name__ == "__main__":
159 unittest.main()