diff options
| author | Guilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com> | 2013-12-01 12:43:12 -0700 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2013-12-13 09:15:32 -0500 | 
| commit | 6496d00fb80465b4b6c35a7af8631ce09a0ff5bd (patch) | |
| tree | 7c75c89f6341d35392c93cdce9e9acf4f24dec96 | |
| parent | a804b5ce2d84dca6f9e145003e588876adf2c71f (diff) | |
| download | olio-uboot-2014.01-6496d00fb80465b4b6c35a7af8631ce09a0ff5bd.tar.xz olio-uboot-2014.01-6496d00fb80465b4b6c35a7af8631ce09a0ff5bd.zip | |
sandbox: dumpimage: Test dumpimage
Add a test for dumpimage.
Signed-off-by: Guilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
| -rwxr-xr-x | test/image/test-imagetools.sh | 141 | 
1 files changed, 141 insertions, 0 deletions
| diff --git a/test/image/test-imagetools.sh b/test/image/test-imagetools.sh new file mode 100755 index 000000000..9e299e1e5 --- /dev/null +++ b/test/image/test-imagetools.sh @@ -0,0 +1,141 @@ +#!/bin/bash +# +# Written by Guilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com> +# +# Sanity check for mkimage and dumpimage tools +# +# SPDX-License-Identifier:	GPL-2.0+ +# +# To run this: +# +# make O=sandbox sandbox_config +# make O=sandbox +# ./test/image/test-imagetools.sh + +BASEDIR=sandbox +SRCDIR=sandbox/boot +IMAGE_NAME="v1.0-test" +IMAGE=linux.img +DATAFILE0=vmlinuz +DATAFILE1=initrd.img +DATAFILE2=System.map +DATAFILES="${DATAFILE0} ${DATAFILE1} ${DATAFILE2}" +TEST_OUT=test_output +MKIMAGE=${BASEDIR}/tools/mkimage +DUMPIMAGE=${BASEDIR}/tools/dumpimage +MKIMAGE_LIST=mkimage.list +DUMPIMAGE_LIST=dumpimage.list + +# Remove all the files we created +cleanup() +{ +	local file + +	for file in ${DATAFILES}; do +		rm -f ${file} ${SRCDIR}/${file} +	done +	rm -f ${IMAGE} ${DUMPIMAGE_LIST} ${MKIMAGE_LIST} ${TEST_OUT} +	rmdir ${SRCDIR} +} + +# Check that two files are the same +assert_equal() +{ +	if ! diff $1 $2; then +		echo "Failed." +		cleanup +		exit 1 +	fi +} + +# Create some test files +create_files() +{ +	local file + +	mkdir -p ${SRCDIR} +	for file in ${DATAFILES}; do +		head -c $RANDOM /dev/urandom >${SRCDIR}/${file} +	done +} + +# Run a command, echoing it first +do_cmd() +{ +	local cmd="$@" + +	echo "# ${cmd}" +	${cmd} 2>&1 +} + +# Run a command, redirecting output +# Args: +#    redirect_file +#    command... +do_cmd_redir() +{ +	local redir="$1" +	shift +	local cmd="$@" + +	echo "# ${cmd}" +	${cmd} >${redir} +} + +# Write files into an image +create_image() +{ +	local files="${SRCDIR}/${DATAFILE0}:${SRCDIR}/${DATAFILE1}" +	files+=":${SRCDIR}/${DATAFILE2}" + +	echo -e "\nBuilding image..." +	do_cmd ${MKIMAGE} -A x86 -O linux -T multi -n \"${IMAGE_NAME}\" \ +		-d ${files} ${IMAGE} +	echo "done." +} + +# Extract files from an image +extract_image() +{ +	echo -e "\nExtracting image contents..." +	do_cmd ${DUMPIMAGE} -i ${IMAGE} -p 0 ${DATAFILE0} +	do_cmd ${DUMPIMAGE} -i ${IMAGE} -p 1 ${DATAFILE1} +	do_cmd ${DUMPIMAGE} -i ${IMAGE} -p 2 ${DATAFILE2} +	do_cmd ${DUMPIMAGE} -i ${IMAGE} -p 2 ${DATAFILE2} -o ${TEST_OUT} +	echo "done." +} + +# List the contents of a file +list_image() +{ +	echo -e "\nListing image contents..." +	do_cmd_redir ${MKIMAGE_LIST} ${MKIMAGE} -l ${IMAGE} +	do_cmd_redir ${DUMPIMAGE_LIST} ${DUMPIMAGE} -l ${IMAGE} +	echo "done." +} + +main() +{ +	local file + +	create_files + +	# Compress and extract multifile images, compare the result +	create_image +	extract_image +	for file in ${DATAFILES}; do +		assert_equal ${file} ${SRCDIR}/${file} +	done +	assert_equal ${TEST_OUT} ${DATAFILE2} + +	# List contents and compares output fro tools +	list_image +	assert_equal ${DUMPIMAGE_LIST} ${MKIMAGE_LIST} + +	# Remove files created +	cleanup + +	echo "Tests passed." +} + +main |