0x1949 Team - FAZEMRX - MANAGER
Edit File: test-bootconfig.sh
#!/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