Skip to content

Commit 268a871

Browse files
committed
fix: py3 compat in ConsoleLogHelper and InstallFailureDetector
Signed-off-by: Martin Styk <mart.styk@gmail.com>
1 parent 73c2bbc commit 268a871

2 files changed

Lines changed: 42 additions & 4 deletions

File tree

LabController/src/bkr/labcontroller/proxy.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ def __init__(self, watchdog, proxy, panic, logfile_name=None):
196196
self.proxy = proxy
197197
self.logfile_name = logfile_name if logfile_name is not None else "console.log"
198198
self.strip_ansi = re.compile("(\033\[[0-9;\?]*[ABCDHfsnuJKmhr])")
199-
ascii_control_chars = map(chr, range(0, 32) + [127])
199+
ascii_control_chars = [chr(c) for c in list(range(0, 32)) + [127]]
200200
keep_chars = '\t\n'
201201
strip_control_chars = [c for c in ascii_control_chars if c not in keep_chars]
202202
self.strip_cntrl = re.compile('[%s]' % re.escape(''.join(strip_control_chars)))
@@ -410,8 +410,11 @@ def _load_patterns(self):
410410
else:
411411
raise
412412
for p in package_patterns:
413-
patterns.append(pkg_resources.resource_string('bkr.labcontroller',
414-
'install-failure-patterns/' + p))
413+
raw = pkg_resources.resource_string('bkr.labcontroller',
414+
'install-failure-patterns/' + p)
415+
if not isinstance(raw, str):
416+
raw = raw.decode('utf-8')
417+
patterns.append(raw)
415418
return patterns
416419

417420
def feed(self, line):

LabController/src/bkr/labcontroller/test_proxy.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import unittest
77

88
from bkr.labcontroller.config import _conf
9-
from bkr.labcontroller.proxy import PanicDetector
9+
from bkr.labcontroller.proxy import PanicDetector, ConsoleLogHelper, InstallFailureDetector
1010

1111

1212
class TestPanicDetector(unittest.TestCase):
@@ -49,3 +49,38 @@ def test_panic_detector_ignores_false_panic(self):
4949
"Panic detector erroneously detected: %r" % (line))
5050
self.assertIsNone(match,
5151
"feed result ( %r ) wasn't NoneType" % (match))
52+
53+
54+
class TestConsoleLogHelper(unittest.TestCase):
55+
56+
def test_strip_cntrl_regex(self):
57+
helper = ConsoleLogHelper(
58+
watchdog={'recipe_id': 1},
59+
proxy=None,
60+
panic=_conf["PANIC_REGEX"],
61+
)
62+
self.assertIsNone(helper.strip_cntrl.search('\t'))
63+
self.assertIsNone(helper.strip_cntrl.search('\n'))
64+
self.assertIsNotNone(helper.strip_cntrl.search('\x00'))
65+
self.assertIsNotNone(helper.strip_cntrl.search('\x01'))
66+
self.assertIsNotNone(helper.strip_cntrl.search('\x7f'))
67+
68+
69+
class TestInstallFailureDetector(unittest.TestCase):
70+
71+
def test_loads_patterns(self):
72+
detector = InstallFailureDetector()
73+
self.assertTrue(len(detector.patterns) > 0)
74+
75+
def test_detects_dracut_failure(self):
76+
detector = InstallFailureDetector()
77+
match = detector.feed(
78+
'dracut-initqueue[123]: Warning: /dev/root does not exist')
79+
self.assertTrue(detector.fired)
80+
self.assertIsNotNone(match)
81+
82+
def test_ignores_normal_output(self):
83+
detector = InstallFailureDetector()
84+
match = detector.feed('Starting installation process')
85+
self.assertFalse(detector.fired)
86+
self.assertIsNone(match)

0 commit comments

Comments
 (0)