| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 1 | #!/usr/bin/python |
| 2 | |
| 3 | import unittest |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 4 | import common |
| 5 | from autotest_lib.tko import status_lib |
| mbligh | 302482e | 2008-05-01 20:06:16 +0000 | [diff] [blame] | 6 | from autotest_lib.client.common_lib import logging |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 7 | |
| 8 | |
| 9 | class line_buffer_test(unittest.TestCase): |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 10 | def test_get_empty(self): |
| 11 | buf = status_lib.line_buffer() |
| 12 | self.assertRaises(IndexError, buf.get) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 13 | |
| 14 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 15 | def test_get_single(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) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 20 | |
| 21 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 22 | def test_is_fifo(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) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 31 | |
| 32 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 33 | def test_put_multiple_same_as_multiple_puts(self): |
| 34 | buf_put, buf_multi = [status_lib.line_buffer() |
| 35 | for x in xrange(2)] |
| 36 | lines = ["line #%d" % x for x in xrange(10)] |
| 37 | for line in lines: |
| 38 | buf_put.put(line) |
| 39 | buf_multi.put_multiple(lines) |
| 40 | counter = 0 |
| 41 | while buf_put.size(): |
| 42 | self.assertEquals(buf_put.size(), buf_multi.size()) |
| 43 | line = "line #%d" % counter |
| 44 | self.assertEquals(buf_put.get(), line) |
| 45 | self.assertEquals(buf_multi.get(), line) |
| 46 | counter += 1 |
| jadmanski | 6e8bf75 | 2008-05-14 00:17:48 +0000 | [diff] [blame] | 47 | |
| 48 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 49 | def test_put_back_is_lifo(self): |
| 50 | buf = status_lib.line_buffer() |
| 51 | lines = ["1", "2", "3"] |
| 52 | for line in lines: |
| 53 | buf.put(line) |
| 54 | results = [] |
| 55 | results.append(buf.get()) |
| 56 | buf.put_back("1") |
| 57 | buf.put_back("0") |
| 58 | while buf.size(): |
| 59 | results.append(buf.get()) |
| 60 | self.assertEquals(results, ["1", "0", "1", "2", "3"]) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 61 | |
| 62 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 63 | def test_size_increased_by_put(self): |
| 64 | buf = status_lib.line_buffer() |
| 65 | self.assertEquals(buf.size(), 0) |
| 66 | buf.put("1") |
| 67 | buf.put("2") |
| 68 | self.assertEquals(buf.size(), 2) |
| 69 | buf.put("3") |
| 70 | self.assertEquals(buf.size(), 3) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 71 | |
| 72 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 73 | def test_size_decreased_by_get(self): |
| 74 | buf = status_lib.line_buffer() |
| 75 | buf.put("1") |
| 76 | buf.put("2") |
| 77 | buf.put("3") |
| 78 | self.assertEquals(buf.size(), 3) |
| 79 | buf.get() |
| 80 | self.assertEquals(buf.size(), 2) |
| 81 | buf.get() |
| 82 | buf.get() |
| 83 | self.assertEquals(buf.size(), 0) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 84 | |
| 85 | |
| 86 | class status_stack_test(unittest.TestCase): |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 87 | statuses = logging.job_statuses |
| mbligh | 302482e | 2008-05-01 20:06:16 +0000 | [diff] [blame] | 88 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 89 | def test_default_to_nostatus(self): |
| 90 | stack = status_lib.status_stack() |
| 91 | self.assertEquals(stack.current_status(), "NOSTATUS") |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 92 | |
| 93 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 94 | def test_default_on_start_to_nostatus(self): |
| 95 | stack = status_lib.status_stack() |
| 96 | stack.update("FAIL") |
| 97 | stack.start() |
| 98 | self.assertEquals(stack.current_status(), "NOSTATUS") |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 99 | |
| 100 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 101 | def test_size_always_at_least_zero(self): |
| 102 | stack = status_lib.status_stack() |
| 103 | self.assertEquals(stack.size(), 0) |
| 104 | stack.start() |
| 105 | stack.end() |
| 106 | self.assertEquals(stack.size(), 0) |
| 107 | stack.end() |
| 108 | self.assertEquals(stack.size(), 0) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 109 | |
| 110 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 111 | def test_anything_overrides_nostatus(self): |
| 112 | for status in self.statuses: |
| 113 | stack = status_lib.status_stack() |
| 114 | stack.update(status) |
| 115 | self.assertEquals(stack.current_status(), status) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 116 | |
| 117 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 118 | def test_worse_overrides_better(self): |
| 119 | for i in xrange(len(self.statuses)): |
| 120 | worse_status = self.statuses[i] |
| 121 | for j in xrange(i + 1, len(self.statuses)): |
| 122 | stack = status_lib.status_stack() |
| 123 | better_status = self.statuses[j] |
| 124 | stack.update(better_status) |
| 125 | stack.update(worse_status) |
| 126 | self.assertEquals(stack.current_status(), |
| 127 | worse_status) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 128 | |
| 129 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 130 | def test_better_never_overrides_better(self): |
| 131 | for i in xrange(len(self.statuses)): |
| 132 | better_status = self.statuses[i] |
| 133 | for j in xrange(i): |
| 134 | stack = status_lib.status_stack() |
| 135 | worse_status = self.statuses[j] |
| 136 | stack.update(worse_status) |
| 137 | stack.update(better_status) |
| 138 | self.assertEquals(stack.current_status(), |
| 139 | worse_status) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 140 | |
| 141 | |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 142 | def test_stack_is_lifo(self): |
| 143 | stack = status_lib.status_stack() |
| 144 | stack.update("GOOD") |
| 145 | stack.start() |
| 146 | stack.update("FAIL") |
| 147 | stack.start() |
| 148 | stack.update("WARN") |
| 149 | self.assertEquals(stack.end(), "WARN") |
| 150 | self.assertEquals(stack.end(), "FAIL") |
| 151 | self.assertEquals(stack.end(), "GOOD") |
| 152 | self.assertEquals(stack.end(), "NOSTATUS") |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 153 | |
| 154 | |
| 155 | class parser_test(unittest.TestCase): |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 156 | available_versions = [0, 1] |
| 157 | def test_can_import_available_versions(self): |
| 158 | for version in self.available_versions: |
| 159 | p = status_lib.parser(0) |
| 160 | self.assertNotEqual(p, None) |
| mbligh | 2895ce5 | 2008-04-17 15:40:51 +0000 | [diff] [blame] | 161 | |
| 162 | |
| 163 | if __name__ == "__main__": |
| jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame] | 164 | unittest.main() |