diff options
| -rw-r--r-- | tools/perf/tests/attr.c | 2 | ||||
| -rw-r--r-- | tools/perf/tests/attr.py | 29 | ||||
| -rw-r--r-- | tools/perf/tests/attr/base-record | 1 | ||||
| -rw-r--r-- | tools/perf/tests/attr/base-stat | 1 | 
4 files changed, 18 insertions, 15 deletions
diff --git a/tools/perf/tests/attr.c b/tools/perf/tests/attr.c index 6fa84b7065c..6e2feee8db2 100644 --- a/tools/perf/tests/attr.c +++ b/tools/perf/tests/attr.c @@ -126,8 +126,6 @@ static int store_event(struct perf_event_attr *attr, pid_t pid, int cpu,  	WRITE_ASS(sample_regs_user,   "llu");  	WRITE_ASS(sample_stack_user,  PRIu32); -	__WRITE_ASS(optional, "d", 0); -  	fclose(file);  	return 0;  } 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]: diff --git a/tools/perf/tests/attr/base-record b/tools/perf/tests/attr/base-record index 8262794734e..f1485d8e6a0 100644 --- a/tools/perf/tests/attr/base-record +++ b/tools/perf/tests/attr/base-record @@ -37,4 +37,3 @@ config2=0  branch_sample_type=0  sample_regs_user=0  sample_stack_user=0 -optional=0 diff --git a/tools/perf/tests/attr/base-stat b/tools/perf/tests/attr/base-stat index 46f8851eaf4..4bd79a82784 100644 --- a/tools/perf/tests/attr/base-stat +++ b/tools/perf/tests/attr/base-stat @@ -37,4 +37,3 @@ config2=0  branch_sample_type=0  sample_regs_user=0  sample_stack_user=0 -optional=0  |