#!/bin/bash
# 'perf data convert --to-json' command test
# SPDX-License-Identifier: GPL-2.0

set -e

err=0

shelldir=$(dirname "$0")
# shellcheck source=lib/setup_python.sh
. "${shelldir}"/lib/setup_python.sh

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}
