Add a test for dumpimage. Signed-off-by: Guilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com> Signed-off-by: Simon Glass <sjg@chromium.org>master
parent
a804b5ce2d
commit
6496d00fb8
@ -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 |
Loading…
Reference in new issue