]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
perf test: Test pipe mode with data conversion --to-json
authorIan Rogers <irogers@google.com>
Wed, 11 Feb 2026 01:52:41 +0000 (17:52 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 12 Feb 2026 20:45:22 +0000 (17:45 -0300)
Add pipe mode test for json data conversion. Tidy up exit and cleanup
code.

Committer testing:

  $ perf test 'perf data convert --to-json'
  124: 'perf data convert --to-json' command test                      : Ok
  $ perf test -vv 'perf data convert --to-json'
  124: 'perf data convert --to-json' command test:
  --- start ---
  test child forked, pid 548738
  Testing Perf Data Conversion Command to JSON
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.020 MB /tmp/__perf_test.perf.data.krxvl (104 samples) ]
  [ perf data convert: Converted '/tmp/__perf_test.perf.data.krxvl' into JSON data '/tmp/__perf_test.output.json.0z60p' ]
  [ perf data convert: Converted and wrote 0.075 MB (104 samples) ]
  Perf Data Converter Command to JSON [SUCCESS]
  Validating Perf Data Converted JSON file
  The file contains valid JSON format [SUCCESS]
  Testing Perf Data Conversion Command to JSON (Pipe mode)
  [ perf record: Woken up 2 times to write data ]
  [ perf record: Captured and wrote 0.046 MB - ]
  [ perf data convert: Converted '-' into JSON data '/tmp/__perf_test.output.json.0z60p' ]
  [ perf data convert: Converted and wrote 0.081 MB (110 samples) ]
  Perf Data Converter Command to JSON (Pipe mode) [SUCCESS]
  Validating Perf Data Converted JSON file
  The file contains valid JSON format [SUCCESS]
  ---- end(0) ----
  124: 'perf data convert --to-json' command test                      : Ok
  $

Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Derek Foreman <derek.foreman@collabora.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/tests/shell/test_perf_data_converter_json.sh

index c4f1b59d116f6e4705d872824339b234180e206f..35d81e39a26c653333352cdeaa5abb88a014ea6b 100755 (executable)
@@ -15,29 +15,42 @@ result=$(mktemp /tmp/__perf_test.output.json.XXXXX)
 
 cleanup()
 {
-       rm -f "${perfdata}"
+       rm -f "${perfdata}*"
        rm -f "${result}"
        trap - exit term int
 }
 
 trap_cleanup()
 {
+       echo "Unexpected signal in ${FUNCNAME[1]}"
        cleanup
-       exit ${err}
+       exit 1
 }
 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
+       echo "Testing Perf Data Conversion Command to JSON"
+       perf record -o "$perfdata" -F 99 -g -- perf test -w noploop
+       perf data convert --to-json "$result" --force -i "$perfdata"
        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
+}
+
+test_json_converter_pipe()
+{
+       echo "Testing Perf Data Conversion Command to JSON (Pipe mode)"
+       perf record -o - -F 99 -g -- perf test -w noploop > "$perfdata"
+       cat "$perfdata" | perf data convert --to-json "$result" --force -i -
+       if [ "$(cat ${result} | wc -l)" -gt "0" ] ; then
+               echo "Perf Data Converter Command to JSON (Pipe mode) [SUCCESS]"
+       else
+               echo "Perf Data Converter Command to JSON (Pipe mode) [FAILED]"
+               err=1
        fi
 }
 
@@ -50,16 +63,18 @@ validate_json_format()
                else
                        echo "The file does not contain valid JSON format [FAILED]"
                        err=1
-                       exit
                fi
        else
                echo "File not found [FAILED]"
-               err=2
-               exit
+               err=1
        fi
 }
 
 test_json_converter_command
 validate_json_format
 
+test_json_converter_pipe
+validate_json_format
+
+cleanup
 exit ${err}