123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #!/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 ($*)... "
- 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 ($*)... "
- 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"
- awk '
- BEGIN {
- for (i = 0; i < 26; i += 1)
- printf("%c\n", 65 + i % 26)
- for (i = 26; i < 8192; i += 1)
- printf("%c%c%c\n", 65 + i % 26, 65 + (i / 26) % 26, 65 + (i / 26 / 26))
- }
- ' > $TEMPCONF
- 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
|