This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
neels gerrit-no-reply at lists.osmocom.orgneels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/21512 ) Change subject: process: add get_output_mark() and grep_output() ...................................................................... process: add get_output_mark() and grep_output() Allow showing log lines matching specific regexes, from a specific start point of a log. My use case is to echo the handover related logging after an expected handover failed, so that the reason is visible already in the console output of a jenkins run. So far I would need to open the endless bsc log and look up the matching place in it to get a conclusion about why a handover failed. Change-Id: Ib6569f7486e9d961bd79a5f24232e58d053667a1 --- M src/osmo_gsm_tester/core/process.py 1 file changed, 46 insertions(+), 5 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/12/21512/1 diff --git a/src/osmo_gsm_tester/core/process.py b/src/osmo_gsm_tester/core/process.py index 0b96f2e..7e8641a 100644 --- a/src/osmo_gsm_tester/core/process.py +++ b/src/osmo_gsm_tester/core/process.py @@ -23,6 +23,7 @@ import signal from abc import ABCMeta, abstractmethod from datetime import datetime +import re from . import log from .event_loop import MainLoop @@ -320,12 +321,23 @@ self.poll() return self.process_obj is not None and self.result is None - def get_output(self, which): + @staticmethod + def end_ansi_colors(txt): + '''Make sure no ANSI colors leak out of logging output''' + color_off = '\033[0;m' + color_any = '\033[' + if txt.rfind(color_any) > txt.rfind(color_off): + return txt + color_off + return txt + + def get_output(self, which, since_mark=0): ''' Read process output ''' path = self.get_output_file(which) if path is None: return None with open(path, 'r') as f2: + if since_mark > 0: + f2.seek(since_mark) return f2.read() def get_output_file(self, which): @@ -344,11 +356,40 @@ tail = min(len(out), tail) return prefix + ('\n' + prefix).join(out[-tail:]) - def get_stdout(self): - return self.get_output('stdout') + def get_output_mark(self, which): + out = self.get_output(which) + if not out: + return None + return len(out) - def get_stderr(self): - return self.get_output('stderr') + def grep_output(self, which, regex, since_mark=0, line_nrs=False): + lines = self.get_output(which, since_mark=since_mark).splitlines() + if not lines: + return None + matches = [] + r = re.compile(regex) + line_nr = since_mark + for line in lines: + line_nr += 1 + if r.search(line): + line = self.end_ansi_colors(line) + if line_nrs: + matches.append((line_nr, line)) + else: + matches.append(line) + return matches + + def get_stdout(self, since_mark=0): + return self.get_output('stdout', since_mark=since_mark) + + def get_stderr(self, since_mark=0): + return self.get_output('stderr', since_mark=since_mark) + + def get_stdout_mark(self): + return self.get_output_mark('stdout') + + def get_stderr_mark(self): + return self.get_output_mark('stderr') def get_stdout_tail(self, tail=10, prefix=''): return self.get_output_tail('stdout', tail, prefix) -- To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/21512 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Change-Id: Ib6569f7486e9d961bd79a5f24232e58d053667a1 Gerrit-Change-Number: 21512 Gerrit-PatchSet: 1 Gerrit-Owner: neels <nhofmeyr at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201203/f8e94a5e/attachment.htm>