Эх сурвалжийг харах

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>
Jiri Olsa 12 жил өмнө
parent
commit
8dfec403e3

+ 0 - 2
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_regs_user,   "llu");
 	WRITE_ASS(sample_stack_user,  PRIu32);
 	WRITE_ASS(sample_stack_user,  PRIu32);
 
 
-	__WRITE_ASS(optional, "d", 0);
-
 	fclose(file);
 	fclose(file);
 	return 0;
 	return 0;
 }
 }

+ 18 - 11
tools/perf/tests/attr.py

@@ -75,6 +75,7 @@ class Event(dict):
         self.add(data)
         self.add(data)
 
 
     def compare_data(self, a, b):
     def compare_data(self, a, b):
+        # Allow multiple values in assignment separated by '|'
         a_list = a.split('|')
         a_list = a.split('|')
         b_list = b.split('|')
         b_list = b.split('|')
 
 
@@ -96,12 +97,17 @@ class Event(dict):
                 return False
                 return False
         return True
         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):
 class Test(object):
     def __init__(self, path, options):
     def __init__(self, path, options):
         parser = ConfigParser.SafeConfigParser()
         parser = ConfigParser.SafeConfigParser()
@@ -135,11 +141,15 @@ class Test(object):
         parser_event = ConfigParser.SafeConfigParser()
         parser_event = ConfigParser.SafeConfigParser()
         parser_event.read(path)
         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()):
         for section in filter(self.is_event, parser_event.sections()):
 
 
             parser_items = parser_event.items(section);
             parser_items = parser_event.items(section);
             base_items   = {}
             base_items   = {}
 
 
+            # Read parent event if there's any
             if (':' in section):
             if (':' in section):
                 base = section[section.index(':') + 1:]
                 base = section[section.index(':') + 1:]
                 parser_base = ConfigParser.SafeConfigParser()
                 parser_base = ConfigParser.SafeConfigParser()
@@ -177,11 +187,10 @@ class Test(object):
                 else:
                 else:
                     log.debug("    ->FAIL");
                     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
             # 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');
                 raise Fail(self, 'match failure');
 
 
             match[exp_name] = exp_list
             match[exp_name] = exp_list
@@ -194,8 +203,6 @@ class Test(object):
             if (group == ''):
             if (group == ''):
                 continue
                 continue
 
 
-            # XXX group matching does not account for
-            # optional events as above matching does
             for res_name in match[exp_name]:
             for res_name in match[exp_name]:
                 res_group = result[res_name].group
                 res_group = result[res_name].group
                 if res_group not in match[group]:
                 if res_group not in match[group]:

+ 0 - 1
tools/perf/tests/attr/base-record

@@ -37,4 +37,3 @@ config2=0
 branch_sample_type=0
 branch_sample_type=0
 sample_regs_user=0
 sample_regs_user=0
 sample_stack_user=0
 sample_stack_user=0
-optional=0

+ 0 - 1
tools/perf/tests/attr/base-stat

@@ -37,4 +37,3 @@ config2=0
 branch_sample_type=0
 branch_sample_type=0
 sample_regs_user=0
 sample_regs_user=0
 sample_stack_user=0
 sample_stack_user=0
-optional=0