xref: /rk3399_rockchip-uboot/test/trace/test-trace.sh (revision d5c6144fe326e255e42ec273fc5d88f45cd61548)
137544a6dSSimon Glass# Copyright (c) 2013 The Chromium OS Authors.
237544a6dSSimon Glass#
31a459660SWolfgang Denk# SPDX-License-Identifier:	GPL-2.0+
437544a6dSSimon Glass#
537544a6dSSimon Glass
637544a6dSSimon Glass# Simple test script for tracing with sandbox
737544a6dSSimon Glass
837544a6dSSimon GlassTRACE_OPT="FTRACE=1"
937544a6dSSimon Glass
10129acd4cSSimon GlassBASE="$(dirname $0)/.."
11129acd4cSSimon Glass. $BASE/common.sh
1237544a6dSSimon Glass
1337544a6dSSimon Glassrun_trace() {
1437544a6dSSimon Glass	echo "Run trace"
1537544a6dSSimon Glass	./${OUTPUT_DIR}/u-boot <<END
1637544a6dSSimon Glasstrace stats
1737544a6dSSimon Glasshash sha256 0 10000
1837544a6dSSimon Glasstrace pause
1937544a6dSSimon Glasstrace stats
2037544a6dSSimon Glasshash sha256 0 10000
2137544a6dSSimon Glasstrace stats
2237544a6dSSimon Glasstrace resume
2337544a6dSSimon Glasshash sha256 0 10000
2437544a6dSSimon Glasstrace pause
2537544a6dSSimon Glasstrace stats
2637544a6dSSimon Glassreset
2737544a6dSSimon GlassEND
2837544a6dSSimon Glass}
2937544a6dSSimon Glass
3037544a6dSSimon Glasscheck_results() {
3137544a6dSSimon Glass	echo "Check results"
3237544a6dSSimon Glass
3337544a6dSSimon Glass	# Expect sha256 to run 3 times, so we see the string 6 times
3437544a6dSSimon Glass	if [ $(grep -c sha256 ${tmp}) -ne 6 ]; then
3537544a6dSSimon Glass		fail "sha256 error"
3637544a6dSSimon Glass	fi
3737544a6dSSimon Glass
3837544a6dSSimon Glass	# 4 sets of results (output of 'trace stats')
3937544a6dSSimon Glass	if [ $(grep -c "traced function calls" ${tmp}) -ne 4 ]; then
4037544a6dSSimon Glass		fail "trace output error"
4137544a6dSSimon Glass	fi
4237544a6dSSimon Glass
4337544a6dSSimon Glass	# Check trace counts. We expect to see an increase in the number of
4437544a6dSSimon Glass	# traced function calls between each 'trace stats' command, except
4537544a6dSSimon Glass	# between calls 2 and 3, where tracing is paused.
4637544a6dSSimon Glass	# This code gets the sign of the difference between each number and
4737544a6dSSimon Glass	# its predecessor.
48*f91281b1SSimon Glass	counts="$(tr -d ',\r' <${tmp} | awk \
49*f91281b1SSimon Glass		'/traced function calls/ { diff = $1 - upto; upto = $1; \
50*f91281b1SSimon Glass		printf "%d ", diff < 0 ? -1 : (diff > 0 ? 1 : 0)}')"
5137544a6dSSimon Glass
5237544a6dSSimon Glass	if [ "${counts}" != "1 1 0 1 " ]; then
5337544a6dSSimon Glass		fail "trace collection error: ${counts}"
5437544a6dSSimon Glass	fi
5537544a6dSSimon Glass}
5637544a6dSSimon Glass
5737544a6dSSimon Glassecho "Simple trace test / sanity check using sandbox"
5837544a6dSSimon Glassecho
5937544a6dSSimon Glasstmp="$(tempfile)"
60129acd4cSSimon Glassbuild_uboot "${TRACE_OPT}"
6137544a6dSSimon Glassrun_trace >${tmp}
6237544a6dSSimon Glasscheck_results ${tmp}
6337544a6dSSimon Glassrm ${tmp}
6437544a6dSSimon Glassecho "Test passed"
65