On Fri, 2010-11-26 at 08:22 -0200, Cleber Rosa wrote: > Currently there's a mix of regex usage styles in autotest. Precompiled > regex should be preferred, specially when they are used many times. > > Note 1: "many times" means not only multiple ocurrences in a source > file, but specially many times during the application execution, so > code in common_lib is very relevant. > > Note 2: Python maintains a limited cache for not previously compiled > regex, but we should not count on cache hits, specially as autotest grows.
LGTM, applied, thanks! > Signed-off-by: Cleber Rosa <[email protected]> > --- > client/common_lib/base_job.py | 13 +++++++------ > 1 files changed, 7 insertions(+), 6 deletions(-) > > diff --git a/client/common_lib/base_job.py b/client/common_lib/base_job.py > index 3c77d38..4a2271c 100644 > --- a/client/common_lib/base_job.py > +++ b/client/common_lib/base_job.py > @@ -422,6 +422,9 @@ class status_log_entry(object): > TIMESTAMP_FIELD = 'timestamp' > LOCALTIME_FIELD = 'localtime' > > + # non-space whitespace is forbidden in any fields > + BAD_CHAR_REGEX = re.compile(r'[\t\n\r\v\f]') > + > def __init__(self, status_code, subdir, operation, message, fields, > timestamp=None): > """Construct a status.log entry. > @@ -439,18 +442,16 @@ class status_log_entry(object): > > @raise ValueError: if any of the parameters are invalid > """ > - # non-space whitespace is forbidden in any fields > - bad_char_regex = r'[\t\n\r\v\f]' > > if not log.is_valid_status(status_code): > raise ValueError('status code %r is not valid' % status_code) > self.status_code = status_code > > - if subdir and re.search(bad_char_regex, subdir): > + if subdir and self.BAD_CHAR_REGEX.search(subdir): > raise ValueError('Invalid character in subdir string') > self.subdir = subdir > > - if operation and re.search(bad_char_regex, operation): > + if operation and self.BAD_CHAR_REGEX.search(operation): > raise ValueError('Invalid character in operation string') > self.operation = operation > > @@ -460,7 +461,7 @@ class status_log_entry(object): > message_lines = message.split('\n') > self.message = message_lines[0].replace('\t', ' ' * 8) > self.extra_message_lines = message_lines[1:] > - if re.search(bad_char_regex, self.message): > + if self.BAD_CHAR_REGEX.search(self.message): > raise ValueError('Invalid character in message %r' % > self.message) > > if not fields: > @@ -468,7 +469,7 @@ class status_log_entry(object): > else: > self.fields = fields.copy() > for key, value in self.fields.iteritems(): > - if re.search(bad_char_regex, key + value): > + if self.BAD_CHAR_REGEX.search(key + value): > raise ValueError('Invalid character in %r=%r field' > % (key, value)) > _______________________________________________ Autotest mailing list [email protected] http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
