mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 13:30:45 -05:00
perf test stat+json: Improve metric-only testing
When testing metric-only, pass a metric to perf rather than expecting
a hard coded metric value to be generated.
Remove keys that were really metric-only units and instead don't
expect metric only to have a matching json key as it encodes metrics
as {"metric_name", "metric_value"}.
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
@@ -65,8 +65,6 @@ def check_json_output(expected_items):
|
||||
'socket': lambda x: True,
|
||||
'thread': lambda x: True,
|
||||
'unit': lambda x: True,
|
||||
'insn per cycle': lambda x: isfloat(x),
|
||||
'GHz': lambda x: True, # FIXME: it seems unintended for --metric-only
|
||||
}
|
||||
input = '[\n' + ','.join(Lines) + '\n]'
|
||||
for item in json.loads(input):
|
||||
@@ -88,6 +86,8 @@ def check_json_output(expected_items):
|
||||
f' in \'{item}\'')
|
||||
for key, value in item.items():
|
||||
if key not in checks:
|
||||
if args.metric_only:
|
||||
continue
|
||||
raise RuntimeError(f'Unexpected key: key={key} value={value}')
|
||||
if not checks[key](value):
|
||||
raise RuntimeError(f'Check failed for: key={key} value={value}')
|
||||
|
||||
@@ -181,7 +181,7 @@ check_metric_only()
|
||||
echo "[Skip] CPU-measurement counter facility not installed"
|
||||
return
|
||||
fi
|
||||
perf stat -j --metric-only -e instructions,cycles -o "${stat_output}" true
|
||||
perf stat -j --metric-only -M page_faults_per_second -o "${stat_output}" true
|
||||
$PYTHON $pythonchecker --metric-only --file "${stat_output}"
|
||||
echo "[Success]"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user