Messages in this thread | | | From | Ian Rogers <> | Date | Mon, 22 May 2023 11:10:43 -0700 | Subject | Re: [PATCH v2] perf: test: Add support for testing JSON generated by perf data command |
| |
On Fri, May 19, 2023 at 12:41 AM Anup Sharma <anupnewsmail@gmail.com> wrote: > > This commit adds support for testing the JSON output generated > by the perf data command's conversion to JSON functionality. > The test script now includes a validation step to ensure that > the resulting JSON file is contain valid data. > > Signed-off-by: Anup Sharma <anupnewsmail@gmail.com>
Acked-by: Ian Rogers <irogers@google.com>
Thanks, Ian
> Changes: > V1 -> V2: Added a check for the existence of the result output file. > Replaced the usage of jq with json.load for validating the JSON format. > Checks using ShellCheck and checkpatch, addressing and resolving warnings. > Removed the unnecessary root permission check. > Modified the perf record command to avoid requiring root permissions. > --- > .../shell/test_perf_data_converter_json.sh | 78 +++++++++++++++++++ > 1 file changed, 78 insertions(+) > create mode 100755 tools/perf/tests/shell/test_perf_data_converter_json.sh > > diff --git a/tools/perf/tests/shell/test_perf_data_converter_json.sh b/tools/perf/tests/shell/test_perf_data_converter_json.sh > new file mode 100755 > index 000000000000..54b7a19962fa > --- /dev/null > +++ b/tools/perf/tests/shell/test_perf_data_converter_json.sh > @@ -0,0 +1,78 @@ > +#!/bin/bash > +# perf data json converter command test > +# SPDX-License-Identifier: GPL-2.0 > + > +set -e > + > +err=0 > + > +if [ "$PYTHON" = "" ] > +then > + if which python3 > /dev/null > + then > + PYTHON=python3 > + elif which python > /dev/null > + then > + PYTHON=python > + else > + echo Skipping test, python not detected please set environment variable PYTHON. > + exit 2 > + fi > +fi > + > +perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX) > +result=$(mktemp /tmp/__perf_test.output.json.XXXXX) > + > +cleanup() > +{ > + rm -f "${perfdata}" > + rm -f "${result}" > + trap - exit term int > +} > + > +trap_cleanup() > +{ > + cleanup > + exit ${err} > +} > +trap trap_cleanup exit term int > + > +test_json_converter_command() > +{ > + echo "Testing Perf Data Convertion Command to JSON" > + perf record -o "$perfdata" -F 99 -g -- perf test -w noploop > /dev/null 2>&1 > + perf data convert --to-json "$result" --force -i "$perfdata" >/dev/null 2>&1 > + if [ $(cat "${result}" | wc -l) -gt "0" ] > + then > + echo "Perf Data Converter Command to JSON [SUCCESS]" > + else > + echo "Perf Data Converter Command to JSON [FAILED]" > + err=1 > + exit > + fi > +} > + > +validate_json_format() > +{ > + echo "Validating Perf Data Converted JSON file" > + if [ -f "$result" ] > + then > + if $PYTHON -c "import json; json.load(open('$result'))" >/dev/null 2>&1 > + then > + echo "The file contains valid JSON format [SUCCESS]" > + else > + echo "The file does not contain valid JSON format [FAILED]" > + err=1 > + exit > + fi > + else > + echo "File not found [FAILED]" > + err=2 > + exit > + fi > +} > + > +test_json_converter_command > +validate_json_format > + > +exit ${err} > -- > 2.34.1 >
| |