mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-23 20:24:26 +08:00
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>
This commit is contained in:
parent
a804b5ce2d
commit
6496d00fb8
141
test/image/test-imagetools.sh
Executable file
141
test/image/test-imagetools.sh
Executable file
@ -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
Block a user