| OLD | NEW |
| 1 import re, os | 1 import re, os |
| 2 | 2 |
| 3 from autotest_lib.client.common_lib import utils as common_utils | 3 from autotest_lib.client.common_lib import utils as common_utils |
| 4 from autotest_lib.tko import utils as tko_utils, models, status_lib | 4 from autotest_lib.tko import utils as tko_utils, models, status_lib |
| 5 from autotest_lib.tko.parsers import base | 5 from autotest_lib.tko.parsers import base |
| 6 | 6 |
| 7 | 7 |
| 8 class NoHostnameError(Exception): | 8 class NoHostnameError(Exception): |
| 9 pass | 9 pass |
| 10 | 10 |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 | 244 |
| 245 @staticmethod | 245 @staticmethod |
| 246 def is_status_line(line): | 246 def is_status_line(line): |
| 247 return re.search(r"^\t*(\S[^\t]*\t){3}", line) is not None | 247 return re.search(r"^\t*(\S[^\t]*\t){3}", line) is not None |
| 248 | 248 |
| 249 | 249 |
| 250 @classmethod | 250 @classmethod |
| 251 def parse_line(cls, line): | 251 def parse_line(cls, line): |
| 252 if not status_line.is_status_line(line): | 252 if not status_line.is_status_line(line): |
| 253 return None | 253 return None |
| 254 indent, line = re.search(r"^(\t*)(.*)$", line).groups() | 254 indent, line = re.search(r"^(\t*)(.*)$", line, flags=re.DOTALL).groups() |
| 255 indent = len(indent) | 255 indent = len(indent) |
| 256 line = line.strip() |
| 256 | 257 |
| 257 # split the line into the fixed and optional fields | 258 # split the line into the fixed and optional fields |
| 258 parts = line.split("\t") | 259 parts = line.split("\t") |
| 259 status, subdir, testname = parts[0:3] | 260 status, subdir, testname = parts[0:3] |
| 260 reason = parts[-1] | 261 reason = parts[-1] |
| 261 optional_parts = parts[3:-1] | 262 optional_parts = parts[3:-1] |
| 262 | 263 |
| 263 # all the optional parts should be of the form "key=value" | 264 # all the optional parts should be of the form "key=value" |
| 264 assert sum('=' not in part for part in optional_parts) == 0 | 265 assert sum('=' not in part for part in optional_parts) == 0 |
| 265 optional_fields = dict(part.split("=", 1) | 266 optional_fields = dict(part.split("=", 1) |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 testname = "boot.%d" % boot_count | 438 testname = "boot.%d" % boot_count |
| 438 reason = "machine did not return from reboot" | 439 reason = "machine did not return from reboot" |
| 439 tko_utils.dprint(("Adding: ABORT\nSubdir:----\n" | 440 tko_utils.dprint(("Adding: ABORT\nSubdir:----\n" |
| 440 "Testname:%s\n%s") | 441 "Testname:%s\n%s") |
| 441 % (testname, reason)) | 442 % (testname, reason)) |
| 442 new_test = test.parse_test(self.job, None, testname, | 443 new_test = test.parse_test(self.job, None, testname, |
| 443 "ABORT", reason, | 444 "ABORT", reason, |
| 444 current_kernel, None, None) | 445 current_kernel, None, None) |
| 445 new_tests.append(new_test) | 446 new_tests.append(new_test) |
| 446 yield new_tests | 447 yield new_tests |
| OLD | NEW |