0001
0002
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() {
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() {
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
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
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
0160 bar = "val2 "
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