1 #!/bin/sh 1 #!/bin/sh 2 # SPDX-License-Identifier: GPL-2.0-only 2 # SPDX-License-Identifier: GPL-2.0-only 3 3 4 echo "Boot config test script" 4 echo "Boot config test script" 5 5 6 if [ -d "$1" ]; then !! 6 BOOTCONF=./bootconfig 7 TESTDIR=$1 !! 7 INITRD=`mktemp initrd-XXXX` 8 else !! 8 TEMPCONF=`mktemp temp-XXXX.bconf` 9 TESTDIR=. << 10 fi << 11 BOOTCONF=${TESTDIR}/bootconfig << 12 ALIGN=4 << 13 << 14 INITRD=`mktemp ${TESTDIR}/initrd-XXXX` << 15 TEMPCONF=`mktemp ${TESTDIR}/temp-XXXX.bconf` << 16 OUTFILE=`mktemp ${TESTDIR}/tempout-XXXX` << 17 NG=0 9 NG=0 18 10 19 cleanup() { 11 cleanup() { 20 rm -f $INITRD $TEMPCONF $OUTFILE 12 rm -f $INITRD $TEMPCONF $OUTFILE 21 exit $NG 13 exit $NG 22 } 14 } 23 15 24 trap cleanup EXIT TERM 16 trap cleanup EXIT TERM 25 17 26 NO=1 18 NO=1 27 19 28 xpass() { # pass test command 20 xpass() { # pass test command 29 echo "test case $NO ($*)... " !! 21 echo "test case $NO ($3)... " 30 if ! ($@ && echo "\t\t[OK]"); then 22 if ! ($@ && echo "\t\t[OK]"); then 31 echo "\t\t[NG]"; NG=$((NG + 1)) 23 echo "\t\t[NG]"; NG=$((NG + 1)) 32 fi 24 fi 33 NO=$((NO + 1)) 25 NO=$((NO + 1)) 34 } 26 } 35 27 36 xfail() { # fail test command 28 xfail() { # fail test command 37 echo "test case $NO ($*)... " !! 29 echo "test case $NO ($3)... " 38 if ! (! $@ && echo "\t\t[OK]"); then 30 if ! (! $@ && echo "\t\t[OK]"); then 39 echo "\t\t[NG]"; NG=$((NG + 1)) 31 echo "\t\t[NG]"; NG=$((NG + 1)) 40 fi 32 fi 41 NO=$((NO + 1)) 33 NO=$((NO + 1)) 42 } 34 } 43 35 44 echo "Basic command test" 36 echo "Basic command test" 45 xpass $BOOTCONF $INITRD 37 xpass $BOOTCONF $INITRD 46 38 47 echo "Delete command should success without bo 39 echo "Delete command should success without bootconfig" 48 xpass $BOOTCONF -d $INITRD 40 xpass $BOOTCONF -d $INITRD 49 41 50 dd if=/dev/zero of=$INITRD bs=4096 count=1 42 dd if=/dev/zero of=$INITRD bs=4096 count=1 51 echo "key = value;" > $TEMPCONF 43 echo "key = value;" > $TEMPCONF 52 bconf_size=$(stat -c %s $TEMPCONF) 44 bconf_size=$(stat -c %s $TEMPCONF) 53 initrd_size=$(stat -c %s $INITRD) 45 initrd_size=$(stat -c %s $INITRD) 54 46 55 echo "Apply command test" 47 echo "Apply command test" 56 xpass $BOOTCONF -a $TEMPCONF $INITRD 48 xpass $BOOTCONF -a $TEMPCONF $INITRD 57 new_size=$(stat -c %s $INITRD) 49 new_size=$(stat -c %s $INITRD) 58 50 59 echo "Show command test" << 60 xpass $BOOTCONF $INITRD << 61 << 62 echo "File size check" 51 echo "File size check" 63 total_size=$(expr $bconf_size + $initrd_size + !! 52 xpass test $new_size -eq $(expr $bconf_size + $initrd_size + 9 + 12) 64 total_size=$(expr $total_size / $ALIGN) << 65 total_size=$(expr $total_size \* $ALIGN) << 66 xpass test $new_size -eq $total_size << 67 53 68 echo "Apply command repeat test" 54 echo "Apply command repeat test" 69 xpass $BOOTCONF -a $TEMPCONF $INITRD 55 xpass $BOOTCONF -a $TEMPCONF $INITRD 70 56 71 echo "File size check" 57 echo "File size check" 72 xpass test $new_size -eq $(stat -c %s $INITRD) 58 xpass test $new_size -eq $(stat -c %s $INITRD) 73 59 74 echo "Delete command check" 60 echo "Delete command check" 75 xpass $BOOTCONF -d $INITRD 61 xpass $BOOTCONF -d $INITRD 76 62 77 echo "File size check" 63 echo "File size check" 78 new_size=$(stat -c %s $INITRD) 64 new_size=$(stat -c %s $INITRD) 79 xpass test $new_size -eq $initrd_size 65 xpass test $new_size -eq $initrd_size 80 66 81 echo "No error messge while applying" 67 echo "No error messge while applying" >> 68 OUTFILE=`mktemp tempout-XXXX` 82 dd if=/dev/zero of=$INITRD bs=4096 count=1 69 dd if=/dev/zero of=$INITRD bs=4096 count=1 83 printf " \0\0\0 \0\0\0" >> $INITRD 70 printf " \0\0\0 \0\0\0" >> $INITRD 84 $BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1 71 $BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1 85 xfail grep -i "failed" $OUTFILE 72 xfail grep -i "failed" $OUTFILE 86 xfail grep -i "error" $OUTFILE 73 xfail grep -i "error" $OUTFILE 87 74 88 echo "Max node number check" 75 echo "Max node number check" 89 76 90 awk ' !! 77 echo -n > $TEMPCONF 91 BEGIN { !! 78 for i in `seq 1 1024` ; do 92 for (i = 0; i < 26; i += 1) !! 79 echo "node$i" >> $TEMPCONF 93 printf("%c\n", 65 + i % 26) !! 80 done 94 for (i = 26; i < 8192; i += 1) << 95 printf("%c%c%c\n", 65 + i % 26, 65 + (i << 96 } << 97 ' > $TEMPCONF << 98 xpass $BOOTCONF -a $TEMPCONF $INITRD 81 xpass $BOOTCONF -a $TEMPCONF $INITRD 99 82 100 echo "badnode" >> $TEMPCONF 83 echo "badnode" >> $TEMPCONF 101 xfail $BOOTCONF -a $TEMPCONF $INITRD 84 xfail $BOOTCONF -a $TEMPCONF $INITRD 102 85 103 echo "Max filesize check" 86 echo "Max filesize check" 104 87 105 # Max size is 32767 (including terminal byte) 88 # Max size is 32767 (including terminal byte) 106 echo -n "data = \"" > $TEMPCONF 89 echo -n "data = \"" > $TEMPCONF 107 dd if=/dev/urandom bs=768 count=32 | base64 -w 90 dd if=/dev/urandom bs=768 count=32 | base64 -w0 >> $TEMPCONF 108 echo "\"" >> $TEMPCONF 91 echo "\"" >> $TEMPCONF 109 xfail $BOOTCONF -a $TEMPCONF $INITRD 92 xfail $BOOTCONF -a $TEMPCONF $INITRD 110 93 111 truncate -s 32764 $TEMPCONF 94 truncate -s 32764 $TEMPCONF 112 echo "\"" >> $TEMPCONF # add 2 bytes + termin 95 echo "\"" >> $TEMPCONF # add 2 bytes + terminal ('\"\n\0') 113 xpass $BOOTCONF -a $TEMPCONF $INITRD 96 xpass $BOOTCONF -a $TEMPCONF $INITRD 114 97 115 echo "Adding same-key values" 98 echo "Adding same-key values" 116 cat > $TEMPCONF << EOF 99 cat > $TEMPCONF << EOF 117 key = bar, baz 100 key = bar, baz 118 key += qux 101 key += qux 119 EOF 102 EOF 120 echo > $INITRD 103 echo > $INITRD 121 104 122 xpass $BOOTCONF -a $TEMPCONF $INITRD 105 xpass $BOOTCONF -a $TEMPCONF $INITRD 123 $BOOTCONF $INITRD > $OUTFILE 106 $BOOTCONF $INITRD > $OUTFILE 124 xpass grep -q "bar" $OUTFILE 107 xpass grep -q "bar" $OUTFILE 125 xpass grep -q "baz" $OUTFILE 108 xpass grep -q "baz" $OUTFILE 126 xpass grep -q "qux" $OUTFILE 109 xpass grep -q "qux" $OUTFILE 127 110 128 echo "Override same-key values" << 129 cat > $TEMPCONF << EOF << 130 key = bar, baz << 131 key := qux << 132 EOF << 133 echo > $INITRD << 134 << 135 xpass $BOOTCONF -a $TEMPCONF $INITRD << 136 $BOOTCONF $INITRD > $OUTFILE << 137 xfail grep -q "bar" $OUTFILE << 138 xfail grep -q "baz" $OUTFILE << 139 xpass grep -q "qux" $OUTFILE << 140 << 141 echo "Double/single quotes test" << 142 echo "key = '\"string\"';" > $TEMPCONF << 143 $BOOTCONF -a $TEMPCONF $INITRD << 144 $BOOTCONF $INITRD > $TEMPCONF << 145 cat $TEMPCONF << 146 xpass grep \'\"string\"\' $TEMPCONF << 147 << 148 echo "Repeat same-key tree" << 149 cat > $TEMPCONF << EOF << 150 foo << 151 bar << 152 foo { buz } << 153 EOF << 154 echo > $INITRD << 155 << 156 xpass $BOOTCONF -a $TEMPCONF $INITRD << 157 $BOOTCONF $INITRD > $OUTFILE << 158 xpass grep -q "bar" $OUTFILE << 159 << 160 << 161 echo "Remove/keep tailing spaces" << 162 cat > $TEMPCONF << EOF << 163 foo = val # comment << 164 bar = "val2 " # comment << 165 EOF << 166 echo > $INITRD << 167 << 168 xpass $BOOTCONF -a $TEMPCONF $INITRD << 169 $BOOTCONF $INITRD > $OUTFILE << 170 xfail grep -q val[[:space:]] $OUTFILE << 171 xpass grep -q val2[[:space:]] $OUTFILE << 172 << 173 echo "=== expected failure cases ===" 111 echo "=== expected failure cases ===" 174 for i in samples/bad-* ; do 112 for i in samples/bad-* ; do 175 xfail $BOOTCONF -a $i $INITRD 113 xfail $BOOTCONF -a $i $INITRD 176 done 114 done 177 115 178 echo "=== expected success cases ===" 116 echo "=== expected success cases ===" 179 for i in samples/good-* ; do 117 for i in samples/good-* ; do 180 xpass $BOOTCONF -a $i $INITRD 118 xpass $BOOTCONF -a $i $INITRD 181 done 119 done 182 120 183 << 184 echo << 185 echo "=== Summary ===" << 186 echo "# of Passed: $(expr $NO - $NG - 1)" << 187 echo "# of Failed: $NG" << 188 << 189 echo 121 echo 190 if [ $NG -eq 0 ]; then 122 if [ $NG -eq 0 ]; then 191 echo "All tests passed" 123 echo "All tests passed" 192 else 124 else 193 echo "$NG tests failed" 125 echo "$NG tests failed" 194 exit 1 << 195 fi 126 fi
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.