Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/sh
0002 # SPDX-License-Identifier: GPL-2.0-only
0003 
0004 echo "Boot config test script"
0005 
0006 if [ -d "$1" ]; then
0007   TESTDIR=$1
0008 else
0009   TESTDIR=.
0010 fi
0011 BOOTCONF=${TESTDIR}/bootconfig
0012 ALIGN=4
0013 
0014 INITRD=`mktemp ${TESTDIR}/initrd-XXXX`
0015 TEMPCONF=`mktemp ${TESTDIR}/temp-XXXX.bconf`
0016 OUTFILE=`mktemp ${TESTDIR}/tempout-XXXX`
0017 NG=0
0018 
0019 cleanup() {
0020   rm -f $INITRD $TEMPCONF $OUTFILE
0021   exit $NG
0022 }
0023 
0024 trap cleanup EXIT TERM
0025 
0026 NO=1
0027 
0028 xpass() { # pass test command
0029   echo "test case $NO ($*)... "
0030   if ! ($@ && echo "\t\t[OK]"); then
0031      echo "\t\t[NG]"; NG=$((NG + 1))
0032   fi
0033   NO=$((NO + 1))
0034 }
0035 
0036 xfail() { # fail test command
0037   echo "test case $NO ($*)... "
0038   if ! (! $@ && echo "\t\t[OK]"); then
0039      echo "\t\t[NG]"; NG=$((NG + 1))
0040   fi
0041   NO=$((NO + 1))
0042 }
0043 
0044 echo "Basic command test"
0045 xpass $BOOTCONF $INITRD
0046 
0047 echo "Delete command should success without bootconfig"
0048 xpass $BOOTCONF -d $INITRD
0049 
0050 dd if=/dev/zero of=$INITRD bs=4096 count=1
0051 echo "key = value;" > $TEMPCONF
0052 bconf_size=$(stat -c %s $TEMPCONF)
0053 initrd_size=$(stat -c %s $INITRD)
0054 
0055 echo "Apply command test"
0056 xpass $BOOTCONF -a $TEMPCONF $INITRD
0057 new_size=$(stat -c %s $INITRD)
0058 
0059 echo "Show command test"
0060 xpass $BOOTCONF $INITRD
0061 
0062 echo "File size check"
0063 total_size=$(expr $bconf_size + $initrd_size + 9 + 12 + $ALIGN - 1 )
0064 total_size=$(expr $total_size / $ALIGN)
0065 total_size=$(expr $total_size \* $ALIGN)
0066 xpass test $new_size -eq $total_size
0067 
0068 echo "Apply command repeat test"
0069 xpass $BOOTCONF -a $TEMPCONF $INITRD
0070 
0071 echo "File size check"
0072 xpass test $new_size -eq $(stat -c %s $INITRD)
0073 
0074 echo "Delete command check"
0075 xpass $BOOTCONF -d $INITRD
0076 
0077 echo "File size check"
0078 new_size=$(stat -c %s $INITRD)
0079 xpass test $new_size -eq $initrd_size
0080 
0081 echo "No error messge while applying"
0082 dd if=/dev/zero of=$INITRD bs=4096 count=1
0083 printf " \0\0\0 \0\0\0" >> $INITRD
0084 $BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1
0085 xfail grep -i "failed" $OUTFILE
0086 xfail grep -i "error" $OUTFILE
0087 
0088 echo "Max node number check"
0089 
0090 echo -n > $TEMPCONF
0091 for i in `seq 1 1024` ; do
0092    echo "node$i" >> $TEMPCONF
0093 done
0094 xpass $BOOTCONF -a $TEMPCONF $INITRD
0095 
0096 echo "badnode" >> $TEMPCONF
0097 xfail $BOOTCONF -a $TEMPCONF $INITRD
0098 
0099 echo "Max filesize check"
0100 
0101 # Max size is 32767 (including terminal byte)
0102 echo -n "data = \"" > $TEMPCONF
0103 dd if=/dev/urandom bs=768 count=32 | base64 -w0 >> $TEMPCONF
0104 echo "\"" >> $TEMPCONF
0105 xfail $BOOTCONF -a $TEMPCONF $INITRD
0106 
0107 truncate -s 32764 $TEMPCONF
0108 echo "\"" >> $TEMPCONF  # add 2 bytes + terminal ('\"\n\0')
0109 xpass $BOOTCONF -a $TEMPCONF $INITRD
0110 
0111 echo "Adding same-key values"
0112 cat > $TEMPCONF << EOF
0113 key = bar, baz
0114 key += qux
0115 EOF
0116 echo > $INITRD
0117 
0118 xpass $BOOTCONF -a $TEMPCONF $INITRD
0119 $BOOTCONF $INITRD > $OUTFILE
0120 xpass grep -q "bar" $OUTFILE
0121 xpass grep -q "baz" $OUTFILE
0122 xpass grep -q "qux" $OUTFILE
0123 
0124 echo "Override same-key values"
0125 cat > $TEMPCONF << EOF
0126 key = bar, baz
0127 key := qux
0128 EOF
0129 echo > $INITRD
0130 
0131 xpass $BOOTCONF -a $TEMPCONF $INITRD
0132 $BOOTCONF $INITRD > $OUTFILE
0133 xfail grep -q "bar" $OUTFILE
0134 xfail grep -q "baz" $OUTFILE
0135 xpass grep -q "qux" $OUTFILE
0136 
0137 echo "Double/single quotes test"
0138 echo "key = '\"string\"';" > $TEMPCONF
0139 $BOOTCONF -a $TEMPCONF $INITRD
0140 $BOOTCONF $INITRD > $TEMPCONF
0141 cat $TEMPCONF
0142 xpass grep \'\"string\"\' $TEMPCONF
0143 
0144 echo "Repeat same-key tree"
0145 cat > $TEMPCONF << EOF
0146 foo
0147 bar
0148 foo { buz }
0149 EOF
0150 echo > $INITRD
0151 
0152 xpass $BOOTCONF -a $TEMPCONF $INITRD
0153 $BOOTCONF $INITRD > $OUTFILE
0154 xpass grep -q "bar" $OUTFILE
0155 
0156 
0157 echo "Remove/keep tailing spaces"
0158 cat > $TEMPCONF << EOF
0159 foo = val     # comment
0160 bar = "val2 " # comment
0161 EOF
0162 echo > $INITRD
0163 
0164 xpass $BOOTCONF -a $TEMPCONF $INITRD
0165 $BOOTCONF $INITRD > $OUTFILE
0166 xfail grep -q val[[:space:]] $OUTFILE
0167 xpass grep -q val2[[:space:]] $OUTFILE
0168 
0169 echo "=== expected failure cases ==="
0170 for i in samples/bad-* ; do
0171   xfail $BOOTCONF -a $i $INITRD
0172 done
0173 
0174 echo "=== expected success cases ==="
0175 for i in samples/good-* ; do
0176   xpass $BOOTCONF -a $i $INITRD
0177 done
0178 
0179 
0180 echo
0181 echo "=== Summary ==="
0182 echo "# of Passed: $(expr $NO - $NG - 1)"
0183 echo "# of Failed: $NG"
0184 
0185 echo
0186 if [ $NG -eq 0 ]; then
0187         echo "All tests passed"
0188 else
0189         echo "$NG tests failed"
0190         exit 1
0191 fi