浏览代码

perf tests attr: Add optional term

Some of the stat events are quite rare to find on common machines (like
front end cycles).

Adding an 'optional' term to mark such events in attr tests. Event
marked as optional will not fail the test case if it's not found in
results.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Thomas Richter <tmricht@linux.vnet.ibm.com>
Link: http://lkml.kernel.org/r/20170703145030.12903-15-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Jiri Olsa 8 年之前
父节点
当前提交
1f41873c22

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

@@ -105,6 +105,11 @@ class Event(dict):
                 return False
                 return False
         return True
         return True
 
 
+    def optional(self):
+        if self.has_key('optional') and self['optional'] == '1':
+            return True
+        return False
+
     def diff(self, other):
     def diff(self, other):
         for t in Event.terms:
         for t in Event.terms:
             if not self.has_key(t) or not other.has_key(t):
             if not self.has_key(t) or not other.has_key(t):
@@ -244,9 +249,12 @@ class Test(object):
             log.debug("    match: [%s] matches %s" % (exp_name, str(exp_list)))
             log.debug("    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):
-		exp_event.diff(res_event)
-                raise Fail(self, 'match failure');
+            if not exp_list:
+                if exp_event.optional():
+                    log.debug("    %s does not match, but is optional" % exp_name)
+                else:
+                    exp_event.diff(res_event)
+                    raise Fail(self, 'match failure');
 
 
             match[exp_name] = exp_list
             match[exp_name] = exp_list
 
 

+ 2 - 0
tools/perf/tests/attr/test-stat-default

@@ -38,12 +38,14 @@ config=0
 fd=6
 fd=6
 type=0
 type=0
 config=7
 config=7
+optional=1
 
 
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_STALLED_CYCLES_BACKEND
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_STALLED_CYCLES_BACKEND
 [event7:base-stat]
 [event7:base-stat]
 fd=7
 fd=7
 type=0
 type=0
 config=8
 config=8
+optional=1
 
 
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_INSTRUCTIONS
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_INSTRUCTIONS
 [event8:base-stat]
 [event8:base-stat]

+ 2 - 0
tools/perf/tests/attr/test-stat-detailed-1

@@ -39,12 +39,14 @@ config=0
 fd=6
 fd=6
 type=0
 type=0
 config=7
 config=7
+optional=1
 
 
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_STALLED_CYCLES_BACKEND
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_STALLED_CYCLES_BACKEND
 [event7:base-stat]
 [event7:base-stat]
 fd=7
 fd=7
 type=0
 type=0
 config=8
 config=8
+optional=1
 
 
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_INSTRUCTIONS
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_INSTRUCTIONS
 [event8:base-stat]
 [event8:base-stat]

+ 3 - 0
tools/perf/tests/attr/test-stat-detailed-2

@@ -39,12 +39,14 @@ config=0
 fd=6
 fd=6
 type=0
 type=0
 config=7
 config=7
+optional=1
 
 
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_STALLED_CYCLES_BACKEND
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_STALLED_CYCLES_BACKEND
 [event7:base-stat]
 [event7:base-stat]
 fd=7
 fd=7
 type=0
 type=0
 config=8
 config=8
+optional=1
 
 
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_INSTRUCTIONS
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_INSTRUCTIONS
 [event8:base-stat]
 [event8:base-stat]
@@ -108,6 +110,7 @@ config=65538
 fd=15
 fd=15
 type=3
 type=3
 config=1
 config=1
+optional=1
 
 
 # PERF_TYPE_HW_CACHE,
 # PERF_TYPE_HW_CACHE,
 #  PERF_COUNT_HW_CACHE_L1I                <<  0  |
 #  PERF_COUNT_HW_CACHE_L1I                <<  0  |

+ 5 - 0
tools/perf/tests/attr/test-stat-detailed-3

@@ -39,12 +39,14 @@ config=0
 fd=6
 fd=6
 type=0
 type=0
 config=7
 config=7
+optional=1
 
 
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_STALLED_CYCLES_BACKEND
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_STALLED_CYCLES_BACKEND
 [event7:base-stat]
 [event7:base-stat]
 fd=7
 fd=7
 type=0
 type=0
 config=8
 config=8
+optional=1
 
 
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_INSTRUCTIONS
 # PERF_TYPE_HARDWARE / PERF_COUNT_HW_INSTRUCTIONS
 [event8:base-stat]
 [event8:base-stat]
@@ -108,6 +110,7 @@ config=65538
 fd=15
 fd=15
 type=3
 type=3
 config=1
 config=1
+optional=1
 
 
 # PERF_TYPE_HW_CACHE,
 # PERF_TYPE_HW_CACHE,
 #  PERF_COUNT_HW_CACHE_L1I                <<  0  |
 #  PERF_COUNT_HW_CACHE_L1I                <<  0  |
@@ -162,6 +165,7 @@ config=65540
 fd=21
 fd=21
 type=3
 type=3
 config=512
 config=512
+optional=1
 
 
 # PERF_TYPE_HW_CACHE,
 # PERF_TYPE_HW_CACHE,
 #  PERF_COUNT_HW_CACHE_L1D                <<  0  |
 #  PERF_COUNT_HW_CACHE_L1D                <<  0  |
@@ -171,3 +175,4 @@ config=512
 fd=22
 fd=22
 type=3
 type=3
 config=66048
 config=66048
+optional=1