summaryrefslogtreecommitdiff
path: root/tools/perf/tests/attr.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/tests/attr.py')
-rw-r--r--tools/perf/tests/attr.py29
1 files changed, 18 insertions, 11 deletions
diff --git a/tools/perf/tests/attr.py b/tools/perf/tests/attr.py
index 28c0481..9b25b33c 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]: