summaryrefslogtreecommitdiff
path: root/tools/perf/tests/attr.py
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@redhat.com>2012-11-05 16:49:39 +0100
committerArnaldo Carvalho de Melo <acme@redhat.com>2012-11-05 14:03:59 -0300
commit8dfec403e39b7c37fd6e8813bacc01da1e1210ab (patch)
treed3538cce84fcde83d88748b25a5fc12564df262d /tools/perf/tests/attr.py
parent45e4089bc6398da2cf0609b614bc519970cb8442 (diff)
downloadlwn-8dfec403e39b7c37fd6e8813bacc01da1e1210ab.tar.gz
lwn-8dfec403e39b7c37fd6e8813bacc01da1e1210ab.zip
perf tests: Removing 'optional' field
Since we allow multiple values in event field assignment, there's no need for 'optional' field.. old version removal leftover. Adding some comments into attr.py script regarding the test event load. Signed-off-by: Jiri Olsa <jolsa@redhat.com> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1352130579-13451-5-git-send-email-jolsa@redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
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 28c0481bc984..9b25b33cf3e9 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]: