Skip to content

Commit b777b3d

Browse files
captain5050acmel
authored andcommitted
perf jevents: Run metric_test.py at compile-time
Add a target that generates a log file for running metric_test.py and make this a dependency on generating pmu-events.c. The log output is displayed if the test fails like (the test was modified to make it fail): ``` TEST /tmp/perf/pmu-events/metric_test.log F...... ====================================================================== FAIL: test_Brackets (__main__.TestMetricExpressions) ---------------------------------------------------------------------- Traceback (most recent call last): File "tools/perf/pmu-events/metric_test.py", line 33, in test_Brackets self.assertEqual((a * b + c).ToPerfJson(), 'a * b + d') AssertionError: 'a * b + c' != 'a * b + d' - a * b + c ? ^ + a * b + d ? ^ ---------------------------------------------------------------------- Ran 7 tests in 0.004s FAILED (failures=1) make[3]: *** [pmu-events/Build:32: /tmp/perf/pmu-events/metric_test.log] Error 1 ``` However, normal execution will just show the TEST line. This is roughly modeled on fortify testing in the kernel lib directory. Modify metric_test.py so that it is executable. This is necessary when PYTHON isn't specified in the build, the normal case. Use variables to make the paths to files clearer and more consistent. Committer notes: Add pmu-events/metric_test.log to tools/perf/.gitignore and to the 'clean' target on tools/perf/Makefile.perf. Reviewed-by: Kajol Jain <kjain@linux.ibm.com> Signed-off-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Caleb Biggers <caleb.biggers@intel.com> Cc: Florian Fischer <florian.fischer@muhq.space> Cc: Ian Rogers <irogers@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@arm.com> Cc: Jing Zhang <renyu.zj@linux.alibaba.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.g.garry@oracle.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Kang Minchul <tegongkang@gmail.com> Cc: Kim Phillips <kim.phillips@amd.com> Cc: Leo Yan <leo.yan@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mike Leach <mike.leach@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Perry Taylor <perry.taylor@intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: Rob Herring <robh@kernel.org> Cc: Sandipan Das <sandipan.das@amd.com> Cc: Stephane Eranian <eranian@google.com> Cc: Will Deacon <will@kernel.org> Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com> Cc: linux-arm-kernel@lists.infradead.org Cc: linuxppc-dev@lists.ozlabs.org Link: https://lore.kernel.org/r/20230126233645.200509-16-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
1 parent e30f340 commit b777b3d

4 files changed

Lines changed: 14 additions & 2 deletions

File tree

tools/perf/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ arch/*/include/generated/
3838
trace/beauty/generated/
3939
pmu-events/pmu-events.c
4040
pmu-events/jevents
41+
pmu-events/metric_test.log
4142
feature/
4243
libapi/
4344
libbpf/

tools/perf/Makefile.perf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,6 +1103,7 @@ clean:: $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean $(LIBSYMBOL)-clean $(
11031103
$(OUTPUT)util/intel-pt-decoder/inat-tables.c \
11041104
$(OUTPUT)tests/llvm-src-{base,kbuild,prologue,relocation}.c \
11051105
$(OUTPUT)pmu-events/pmu-events.c \
1106+
$(OUTPUT)pmu-events/metric_test.log \
11061107
$(OUTPUT)$(fadvise_advice_array) \
11071108
$(OUTPUT)$(fsconfig_arrays) \
11081109
$(OUTPUT)$(fsmount_arrays) \

tools/perf/pmu-events/Build

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ JDIR_TEST = pmu-events/arch/test
66
JSON_TEST = $(shell [ -d $(JDIR_TEST) ] && \
77
find $(JDIR_TEST) -name '*.json')
88
JEVENTS_PY = pmu-events/jevents.py
9+
METRIC_PY = pmu-events/metric.py
10+
METRIC_TEST_PY = pmu-events/metric_test.py
11+
EMPTY_PMU_EVENTS_C = pmu-events/empty-pmu-events.c
12+
PMU_EVENTS_C = $(OUTPUT)pmu-events/pmu-events.c
13+
METRIC_TEST_LOG = $(OUTPUT)pmu-events/metric_test.log
914

1015
ifeq ($(JEVENTS_ARCH),)
1116
JEVENTS_ARCH=$(SRCARCH)
@@ -18,11 +23,15 @@ JEVENTS_MODEL ?= all
1823
#
1924

2025
ifeq ($(NO_JEVENTS),1)
21-
$(OUTPUT)pmu-events/pmu-events.c: pmu-events/empty-pmu-events.c
26+
$(PMU_EVENTS_C): $(EMPTY_PMU_EVENTS_C)
2227
$(call rule_mkdir)
2328
$(Q)$(call echo-cmd,gen)cp $< $@
2429
else
25-
$(OUTPUT)pmu-events/pmu-events.c: $(JSON) $(JSON_TEST) $(JEVENTS_PY) pmu-events/metric.py
30+
$(METRIC_TEST_LOG): $(METRIC_TEST_PY) $(METRIC_PY)
31+
$(call rule_mkdir)
32+
$(Q)$(call echo-cmd,test)$(PYTHON) $< 2> $@ || (cat $@ && false)
33+
34+
$(PMU_EVENTS_C): $(JSON) $(JSON_TEST) $(JEVENTS_PY) $(METRIC_PY) $(METRIC_TEST_LOG)
2635
$(call rule_mkdir)
2736
$(Q)$(call echo-cmd,gen)$(PYTHON) $(JEVENTS_PY) $(JEVENTS_ARCH) $(JEVENTS_MODEL) pmu-events/arch $@
2837
endif

tools/perf/pmu-events/metric_test.py

100644100755
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#!/usr/bin/env python3
12
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
23
import unittest
34
from metric import Constant

0 commit comments

Comments
 (0)