196 lines · bash
1#!/bin/sh2# SPDX-License-Identifier: GPL-2.0-only3 4echo "Boot config test script"5 6if [ -d "$1" ]; then7 TESTDIR=$18else9 TESTDIR=.10fi11BOOTCONF=${TESTDIR}/bootconfig12ALIGN=413 14INITRD=`mktemp ${TESTDIR}/initrd-XXXX`15TEMPCONF=`mktemp ${TESTDIR}/temp-XXXX.bconf`16OUTFILE=`mktemp ${TESTDIR}/tempout-XXXX`17NG=018 19cleanup() {20 rm -f $INITRD $TEMPCONF $OUTFILE21 exit $NG22}23 24trap cleanup EXIT TERM25 26NO=127 28xpass() { # pass test command29 echo "test case $NO ($*)... "30 if ! ($@ && echo "\t\t[OK]"); then31 echo "\t\t[NG]"; NG=$((NG + 1))32 fi33 NO=$((NO + 1))34}35 36xfail() { # fail test command37 echo "test case $NO ($*)... "38 if ! (! $@ && echo "\t\t[OK]"); then39 echo "\t\t[NG]"; NG=$((NG + 1))40 fi41 NO=$((NO + 1))42}43 44echo "Basic command test"45xpass $BOOTCONF $INITRD46 47echo "Delete command should success without bootconfig"48xpass $BOOTCONF -d $INITRD49 50dd if=/dev/zero of=$INITRD bs=4096 count=151echo "key = value;" > $TEMPCONF52bconf_size=$(stat -c %s $TEMPCONF)53initrd_size=$(stat -c %s $INITRD)54 55echo "Apply command test"56xpass $BOOTCONF -a $TEMPCONF $INITRD57new_size=$(stat -c %s $INITRD)58 59echo "Show command test"60xpass $BOOTCONF $INITRD61 62echo "File size check"63total_size=$(expr $bconf_size + $initrd_size + 9 + 12 + $ALIGN - 1 )64total_size=$(expr $total_size / $ALIGN)65total_size=$(expr $total_size \* $ALIGN)66xpass test $new_size -eq $total_size67 68echo "Apply command repeat test"69xpass $BOOTCONF -a $TEMPCONF $INITRD70 71echo "File size check"72xpass test $new_size -eq $(stat -c %s $INITRD)73 74echo "Delete command check"75xpass $BOOTCONF -d $INITRD76 77echo "File size check"78new_size=$(stat -c %s $INITRD)79xpass test $new_size -eq $initrd_size80 81echo "No error messge while applying"82dd if=/dev/zero of=$INITRD bs=4096 count=183printf " \0\0\0 \0\0\0" >> $INITRD84$BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&185xfail grep -i "failed" $OUTFILE86xfail grep -i "error" $OUTFILE87 88echo "Max node number check"89 90awk '91BEGIN {92 for (i = 0; i < 26; i += 1)93 printf("%c\n", 65 + i % 26)94 for (i = 26; i < 8192; i += 1)95 printf("%c%c%c\n", 65 + i % 26, 65 + (i / 26) % 26, 65 + (i / 26 / 26))96}97' > $TEMPCONF98xpass $BOOTCONF -a $TEMPCONF $INITRD99 100echo "badnode" >> $TEMPCONF101xfail $BOOTCONF -a $TEMPCONF $INITRD102 103echo "Max filesize check"104 105# Max size is 32767 (including terminal byte)106echo -n "data = \"" > $TEMPCONF107dd if=/dev/urandom bs=768 count=32 | base64 -w0 >> $TEMPCONF108echo "\"" >> $TEMPCONF109xfail $BOOTCONF -a $TEMPCONF $INITRD110 111truncate -s 32764 $TEMPCONF112echo "\"" >> $TEMPCONF # add 2 bytes + terminal ('\"\n\0')113xpass $BOOTCONF -a $TEMPCONF $INITRD114 115echo "Adding same-key values"116cat > $TEMPCONF << EOF117key = bar, baz118key += qux119EOF120echo > $INITRD121 122xpass $BOOTCONF -a $TEMPCONF $INITRD123$BOOTCONF $INITRD > $OUTFILE124xpass grep -q "bar" $OUTFILE125xpass grep -q "baz" $OUTFILE126xpass grep -q "qux" $OUTFILE127 128echo "Override same-key values"129cat > $TEMPCONF << EOF130key = bar, baz131key := qux132EOF133echo > $INITRD134 135xpass $BOOTCONF -a $TEMPCONF $INITRD136$BOOTCONF $INITRD > $OUTFILE137xfail grep -q "bar" $OUTFILE138xfail grep -q "baz" $OUTFILE139xpass grep -q "qux" $OUTFILE140 141echo "Double/single quotes test"142echo "key = '\"string\"';" > $TEMPCONF143$BOOTCONF -a $TEMPCONF $INITRD144$BOOTCONF $INITRD > $TEMPCONF145cat $TEMPCONF146xpass grep \'\"string\"\' $TEMPCONF147 148echo "Repeat same-key tree"149cat > $TEMPCONF << EOF150foo151bar152foo { buz }153EOF154echo > $INITRD155 156xpass $BOOTCONF -a $TEMPCONF $INITRD157$BOOTCONF $INITRD > $OUTFILE158xpass grep -q "bar" $OUTFILE159 160 161echo "Remove/keep tailing spaces"162cat > $TEMPCONF << EOF163foo = val # comment164bar = "val2 " # comment165EOF166echo > $INITRD167 168xpass $BOOTCONF -a $TEMPCONF $INITRD169$BOOTCONF $INITRD > $OUTFILE170xfail grep -q val[[:space:]] $OUTFILE171xpass grep -q val2[[:space:]] $OUTFILE172 173echo "=== expected failure cases ==="174for i in samples/bad-* ; do175 xfail $BOOTCONF -a $i $INITRD176done177 178echo "=== expected success cases ==="179for i in samples/good-* ; do180 xpass $BOOTCONF -a $i $INITRD181done182 183 184echo185echo "=== Summary ==="186echo "# of Passed: $(expr $NO - $NG - 1)"187echo "# of Failed: $NG"188 189echo190if [ $NG -eq 0 ]; then191 echo "All tests passed"192else193 echo "$NG tests failed"194 exit 1195fi196