diff options
Diffstat (limited to 'tools/perf/tests/attr.py')
| -rw-r--r-- | tools/perf/tests/attr.py | 29 | 
1 files changed, 18 insertions, 11 deletions
diff --git a/tools/perf/tests/attr.py b/tools/perf/tests/attr.py index 28c0481bc98..9b25b33cf3e 100644 --- a/tools/perf/tests/attr.py +++ b/tools/perf/tests/attr.py @@ -75,6 +75,7 @@ class Event(dict):          self.add(data)      def compare_data(self, a, b): +        # Allow multiple values in assignment separated by '|'          a_list = a.split('|')          b_list = b.split('|') @@ -96,12 +97,17 @@ class Event(dict):                  return False          return True -    def is_optional(self): -        if self['optional'] == '1': -            return True -        else: -            return False - +# Test file description needs to have following sections: +# [config] +#   - just single instance in file +#   - needs to specify: +#     'command' - perf command name +#     'args'    - special command arguments +#     'ret'     - expected command return value (0 by default) +# +# [eventX:base] +#   - one or multiple instances in file +#   - expected values assignments  class Test(object):      def __init__(self, path, options):          parser = ConfigParser.SafeConfigParser() @@ -135,11 +141,15 @@ class Test(object):          parser_event = ConfigParser.SafeConfigParser()          parser_event.read(path) +        # The event record section header contains 'event' word, +        # optionaly followed by ':' allowing to load 'parent +        # event' first as a base          for section in filter(self.is_event, parser_event.sections()):              parser_items = parser_event.items(section);              base_items   = {} +            # Read parent event if there's any              if (':' in section):                  base = section[section.index(':') + 1:]                  parser_base = ConfigParser.SafeConfigParser() @@ -177,11 +187,10 @@ class Test(object):                  else:                      log.debug("    ->FAIL"); -            log.info("    match: [%s] optional(%d) matches %s" % -                      (exp_name, exp_event.is_optional(), str(exp_list))) +            log.info("    match: [%s] matches %s" % (exp_name, str(exp_list)))              # we did not any matching event - fail -            if (not exp_list) and (not exp_event.is_optional()): +            if (not exp_list):                  raise Fail(self, 'match failure');              match[exp_name] = exp_list @@ -194,8 +203,6 @@ class Test(object):              if (group == ''):                  continue -            # XXX group matching does not account for -            # optional events as above matching does              for res_name in match[exp_name]:                  res_group = result[res_name].group                  if res_group not in match[group]:  |