2020-01-10 19:04:07 +03:00
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only
echo "Boot config test script"
2020-03-03 14:24:40 +03:00
if [ -d " $1 " ] ; then
TESTDIR = $1
else
TESTDIR = .
fi
BOOTCONF = ${ TESTDIR } /bootconfig
INITRD = ` mktemp ${ TESTDIR } /initrd-XXXX`
TEMPCONF = ` mktemp ${ TESTDIR } /temp-XXXX.bconf`
OUTFILE = ` mktemp ${ TESTDIR } /tempout-XXXX`
2020-01-10 19:04:07 +03:00
NG = 0
cleanup( ) {
2020-02-21 11:13:52 +03:00
rm -f $INITRD $TEMPCONF $OUTFILE
2020-01-10 19:04:07 +03:00
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 "File size check"
2020-02-20 15:18:42 +03:00
xpass test $new_size -eq $( expr $bconf_size + $initrd_size + 9 + 12)
2020-01-10 19:04:07 +03:00
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
2020-02-09 16:05:13 +03:00
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
2020-01-10 19:04:07 +03:00
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
2020-02-21 11:13:52 +03:00
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
2020-01-10 19:04:07 +03:00
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
if [ $NG -eq 0 ] ; then
echo "All tests passed"
else
echo " $NG tests failed "
fi