forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
3.9 KiB
191 lines
3.9 KiB
#!/bin/sh |
|
# SPDX-License-Identifier: GPL-2.0-only |
|
|
|
echo "Boot config test script" |
|
|
|
if [ -d "$1" ]; then |
|
TESTDIR=$1 |
|
else |
|
TESTDIR=. |
|
fi |
|
BOOTCONF=${TESTDIR}/bootconfig |
|
ALIGN=4 |
|
|
|
INITRD=`mktemp ${TESTDIR}/initrd-XXXX` |
|
TEMPCONF=`mktemp ${TESTDIR}/temp-XXXX.bconf` |
|
OUTFILE=`mktemp ${TESTDIR}/tempout-XXXX` |
|
NG=0 |
|
|
|
cleanup() { |
|
rm -f $INITRD $TEMPCONF $OUTFILE |
|
exit $NG |
|
} |
|
|
|
trap cleanup EXIT TERM |
|
|
|
NO=1 |
|
|
|
xpass() { # pass test command |
|
echo "test case $NO ($3)... " |
|
if ! ($@ && echo "\t\t[OK]"); then |
|
echo "\t\t[NG]"; NG=$((NG + 1)) |
|
fi |
|
NO=$((NO + 1)) |
|
} |
|
|
|
xfail() { # fail test command |
|
echo "test case $NO ($3)... " |
|
if ! (! $@ && echo "\t\t[OK]"); then |
|
echo "\t\t[NG]"; NG=$((NG + 1)) |
|
fi |
|
NO=$((NO + 1)) |
|
} |
|
|
|
echo "Basic command test" |
|
xpass $BOOTCONF $INITRD |
|
|
|
echo "Delete command should success without bootconfig" |
|
xpass $BOOTCONF -d $INITRD |
|
|
|
dd if=/dev/zero of=$INITRD bs=4096 count=1 |
|
echo "key = value;" > $TEMPCONF |
|
bconf_size=$(stat -c %s $TEMPCONF) |
|
initrd_size=$(stat -c %s $INITRD) |
|
|
|
echo "Apply command test" |
|
xpass $BOOTCONF -a $TEMPCONF $INITRD |
|
new_size=$(stat -c %s $INITRD) |
|
|
|
echo "Show command test" |
|
xpass $BOOTCONF $INITRD |
|
|
|
echo "File size check" |
|
total_size=$(expr $bconf_size + $initrd_size + 9 + 12 + $ALIGN - 1 ) |
|
total_size=$(expr $total_size / $ALIGN) |
|
total_size=$(expr $total_size \* $ALIGN) |
|
xpass test $new_size -eq $total_size |
|
|
|
echo "Apply command repeat test" |
|
xpass $BOOTCONF -a $TEMPCONF $INITRD |
|
|
|
echo "File size check" |
|
xpass test $new_size -eq $(stat -c %s $INITRD) |
|
|
|
echo "Delete command check" |
|
xpass $BOOTCONF -d $INITRD |
|
|
|
echo "File size check" |
|
new_size=$(stat -c %s $INITRD) |
|
xpass test $new_size -eq $initrd_size |
|
|
|
echo "No error messge while applying" |
|
dd if=/dev/zero of=$INITRD bs=4096 count=1 |
|
printf " \0\0\0 \0\0\0" >> $INITRD |
|
$BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1 |
|
xfail grep -i "failed" $OUTFILE |
|
xfail grep -i "error" $OUTFILE |
|
|
|
echo "Max node number check" |
|
|
|
echo -n > $TEMPCONF |
|
for i in `seq 1 1024` ; do |
|
echo "node$i" >> $TEMPCONF |
|
done |
|
xpass $BOOTCONF -a $TEMPCONF $INITRD |
|
|
|
echo "badnode" >> $TEMPCONF |
|
xfail $BOOTCONF -a $TEMPCONF $INITRD |
|
|
|
echo "Max filesize check" |
|
|
|
# Max size is 32767 (including terminal byte) |
|
echo -n "data = \"" > $TEMPCONF |
|
dd if=/dev/urandom bs=768 count=32 | base64 -w0 >> $TEMPCONF |
|
echo "\"" >> $TEMPCONF |
|
xfail $BOOTCONF -a $TEMPCONF $INITRD |
|
|
|
truncate -s 32764 $TEMPCONF |
|
echo "\"" >> $TEMPCONF # add 2 bytes + terminal ('\"\n\0') |
|
xpass $BOOTCONF -a $TEMPCONF $INITRD |
|
|
|
echo "Adding same-key values" |
|
cat > $TEMPCONF << EOF |
|
key = bar, baz |
|
key += qux |
|
EOF |
|
echo > $INITRD |
|
|
|
xpass $BOOTCONF -a $TEMPCONF $INITRD |
|
$BOOTCONF $INITRD > $OUTFILE |
|
xpass grep -q "bar" $OUTFILE |
|
xpass grep -q "baz" $OUTFILE |
|
xpass grep -q "qux" $OUTFILE |
|
|
|
echo "Override same-key values" |
|
cat > $TEMPCONF << EOF |
|
key = bar, baz |
|
key := qux |
|
EOF |
|
echo > $INITRD |
|
|
|
xpass $BOOTCONF -a $TEMPCONF $INITRD |
|
$BOOTCONF $INITRD > $OUTFILE |
|
xfail grep -q "bar" $OUTFILE |
|
xfail grep -q "baz" $OUTFILE |
|
xpass grep -q "qux" $OUTFILE |
|
|
|
echo "Double/single quotes test" |
|
echo "key = '\"string\"';" > $TEMPCONF |
|
$BOOTCONF -a $TEMPCONF $INITRD |
|
$BOOTCONF $INITRD > $TEMPCONF |
|
cat $TEMPCONF |
|
xpass grep \'\"string\"\' $TEMPCONF |
|
|
|
echo "Repeat same-key tree" |
|
cat > $TEMPCONF << EOF |
|
foo |
|
bar |
|
foo { buz } |
|
EOF |
|
echo > $INITRD |
|
|
|
xpass $BOOTCONF -a $TEMPCONF $INITRD |
|
$BOOTCONF $INITRD > $OUTFILE |
|
xpass grep -q "bar" $OUTFILE |
|
|
|
|
|
echo "Remove/keep tailing spaces" |
|
cat > $TEMPCONF << EOF |
|
foo = val # comment |
|
bar = "val2 " # comment |
|
EOF |
|
echo > $INITRD |
|
|
|
xpass $BOOTCONF -a $TEMPCONF $INITRD |
|
$BOOTCONF $INITRD > $OUTFILE |
|
xfail grep -q val[[:space:]] $OUTFILE |
|
xpass grep -q val2[[:space:]] $OUTFILE |
|
|
|
echo "=== expected failure cases ===" |
|
for i in samples/bad-* ; do |
|
xfail $BOOTCONF -a $i $INITRD |
|
done |
|
|
|
echo "=== expected success cases ===" |
|
for i in samples/good-* ; do |
|
xpass $BOOTCONF -a $i $INITRD |
|
done |
|
|
|
|
|
echo |
|
echo "=== Summary ===" |
|
echo "# of Passed: $(expr $NO - $NG - 1)" |
|
echo "# of Failed: $NG" |
|
|
|
echo |
|
if [ $NG -eq 0 ]; then |
|
echo "All tests passed" |
|
else |
|
echo "$NG tests failed" |
|
exit 1 |
|
fi
|
|
|