1081c6536SMasami Hiramatsu#!/bin/sh 2081c6536SMasami Hiramatsu# SPDX-License-Identifier: GPL-2.0-only 3081c6536SMasami Hiramatsu 4081c6536SMasami Hiramatsuecho "Boot config test script" 5081c6536SMasami Hiramatsu 6306b69dcSMasami Hiramatsuif [ -d "$1" ]; then 7306b69dcSMasami Hiramatsu TESTDIR=$1 8306b69dcSMasami Hiramatsuelse 9306b69dcSMasami Hiramatsu TESTDIR=. 10306b69dcSMasami Hiramatsufi 11306b69dcSMasami HiramatsuBOOTCONF=${TESTDIR}/bootconfig 12306b69dcSMasami Hiramatsu 13306b69dcSMasami HiramatsuINITRD=`mktemp ${TESTDIR}/initrd-XXXX` 14306b69dcSMasami HiramatsuTEMPCONF=`mktemp ${TESTDIR}/temp-XXXX.bconf` 15306b69dcSMasami HiramatsuOUTFILE=`mktemp ${TESTDIR}/tempout-XXXX` 16081c6536SMasami HiramatsuNG=0 17081c6536SMasami Hiramatsu 18081c6536SMasami Hiramatsucleanup() { 195f811c57SMasami Hiramatsu rm -f $INITRD $TEMPCONF $OUTFILE 20081c6536SMasami Hiramatsu exit $NG 21081c6536SMasami Hiramatsu} 22081c6536SMasami Hiramatsu 23081c6536SMasami Hiramatsutrap cleanup EXIT TERM 24081c6536SMasami Hiramatsu 25081c6536SMasami HiramatsuNO=1 26081c6536SMasami Hiramatsu 27081c6536SMasami Hiramatsuxpass() { # pass test command 28081c6536SMasami Hiramatsu echo "test case $NO ($3)... " 29081c6536SMasami Hiramatsu if ! ($@ && echo "\t\t[OK]"); then 30081c6536SMasami Hiramatsu echo "\t\t[NG]"; NG=$((NG + 1)) 31081c6536SMasami Hiramatsu fi 32081c6536SMasami Hiramatsu NO=$((NO + 1)) 33081c6536SMasami Hiramatsu} 34081c6536SMasami Hiramatsu 35081c6536SMasami Hiramatsuxfail() { # fail test command 36081c6536SMasami Hiramatsu echo "test case $NO ($3)... " 37081c6536SMasami Hiramatsu if ! (! $@ && echo "\t\t[OK]"); then 38081c6536SMasami Hiramatsu echo "\t\t[NG]"; NG=$((NG + 1)) 39081c6536SMasami Hiramatsu fi 40081c6536SMasami Hiramatsu NO=$((NO + 1)) 41081c6536SMasami Hiramatsu} 42081c6536SMasami Hiramatsu 43081c6536SMasami Hiramatsuecho "Basic command test" 44081c6536SMasami Hiramatsuxpass $BOOTCONF $INITRD 45081c6536SMasami Hiramatsu 46081c6536SMasami Hiramatsuecho "Delete command should success without bootconfig" 47081c6536SMasami Hiramatsuxpass $BOOTCONF -d $INITRD 48081c6536SMasami Hiramatsu 49081c6536SMasami Hiramatsudd if=/dev/zero of=$INITRD bs=4096 count=1 50081c6536SMasami Hiramatsuecho "key = value;" > $TEMPCONF 51081c6536SMasami Hiramatsubconf_size=$(stat -c %s $TEMPCONF) 52081c6536SMasami Hiramatsuinitrd_size=$(stat -c %s $INITRD) 53081c6536SMasami Hiramatsu 54081c6536SMasami Hiramatsuecho "Apply command test" 55081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 56081c6536SMasami Hiramatsunew_size=$(stat -c %s $INITRD) 57081c6536SMasami Hiramatsu 58081c6536SMasami Hiramatsuecho "File size check" 5985c46b78SMasami Hiramatsuxpass test $new_size -eq $(expr $bconf_size + $initrd_size + 9 + 12) 60081c6536SMasami Hiramatsu 61081c6536SMasami Hiramatsuecho "Apply command repeat test" 62081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 63081c6536SMasami Hiramatsu 64081c6536SMasami Hiramatsuecho "File size check" 65081c6536SMasami Hiramatsuxpass test $new_size -eq $(stat -c %s $INITRD) 66081c6536SMasami Hiramatsu 67081c6536SMasami Hiramatsuecho "Delete command check" 68081c6536SMasami Hiramatsuxpass $BOOTCONF -d $INITRD 69081c6536SMasami Hiramatsu 70081c6536SMasami Hiramatsuecho "File size check" 71081c6536SMasami Hiramatsunew_size=$(stat -c %s $INITRD) 72081c6536SMasami Hiramatsuxpass test $new_size -eq $initrd_size 73081c6536SMasami Hiramatsu 7497378001SMasami Hiramatsuecho "No error messge while applying" 7597378001SMasami Hiramatsudd if=/dev/zero of=$INITRD bs=4096 count=1 7697378001SMasami Hiramatsuprintf " \0\0\0 \0\0\0" >> $INITRD 7797378001SMasami Hiramatsu$BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1 7897378001SMasami Hiramatsuxfail grep -i "failed" $OUTFILE 7997378001SMasami Hiramatsuxfail grep -i "error" $OUTFILE 8097378001SMasami Hiramatsu 81081c6536SMasami Hiramatsuecho "Max node number check" 82081c6536SMasami Hiramatsu 83081c6536SMasami Hiramatsuecho -n > $TEMPCONF 84081c6536SMasami Hiramatsufor i in `seq 1 1024` ; do 85081c6536SMasami Hiramatsu echo "node$i" >> $TEMPCONF 86081c6536SMasami Hiramatsudone 87081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 88081c6536SMasami Hiramatsu 89081c6536SMasami Hiramatsuecho "badnode" >> $TEMPCONF 90081c6536SMasami Hiramatsuxfail $BOOTCONF -a $TEMPCONF $INITRD 91081c6536SMasami Hiramatsu 92081c6536SMasami Hiramatsuecho "Max filesize check" 93081c6536SMasami Hiramatsu 94081c6536SMasami Hiramatsu# Max size is 32767 (including terminal byte) 95081c6536SMasami Hiramatsuecho -n "data = \"" > $TEMPCONF 96081c6536SMasami Hiramatsudd if=/dev/urandom bs=768 count=32 | base64 -w0 >> $TEMPCONF 97081c6536SMasami Hiramatsuecho "\"" >> $TEMPCONF 98081c6536SMasami Hiramatsuxfail $BOOTCONF -a $TEMPCONF $INITRD 99081c6536SMasami Hiramatsu 100081c6536SMasami Hiramatsutruncate -s 32764 $TEMPCONF 101081c6536SMasami Hiramatsuecho "\"" >> $TEMPCONF # add 2 bytes + terminal ('\"\n\0') 102081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 103081c6536SMasami Hiramatsu 1045f811c57SMasami Hiramatsuecho "Adding same-key values" 1055f811c57SMasami Hiramatsucat > $TEMPCONF << EOF 1065f811c57SMasami Hiramatsukey = bar, baz 1075f811c57SMasami Hiramatsukey += qux 1085f811c57SMasami HiramatsuEOF 1095f811c57SMasami Hiramatsuecho > $INITRD 1105f811c57SMasami Hiramatsu 1115f811c57SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 1125f811c57SMasami Hiramatsu$BOOTCONF $INITRD > $OUTFILE 1135f811c57SMasami Hiramatsuxpass grep -q "bar" $OUTFILE 1145f811c57SMasami Hiramatsuxpass grep -q "baz" $OUTFILE 1155f811c57SMasami Hiramatsuxpass grep -q "qux" $OUTFILE 1165f811c57SMasami Hiramatsu 117081c6536SMasami Hiramatsuecho "=== expected failure cases ===" 118081c6536SMasami Hiramatsufor i in samples/bad-* ; do 119081c6536SMasami Hiramatsu xfail $BOOTCONF -a $i $INITRD 120081c6536SMasami Hiramatsudone 121081c6536SMasami Hiramatsu 122081c6536SMasami Hiramatsuecho "=== expected success cases ===" 123081c6536SMasami Hiramatsufor i in samples/good-* ; do 124081c6536SMasami Hiramatsu xpass $BOOTCONF -a $i $INITRD 125081c6536SMasami Hiramatsudone 126081c6536SMasami Hiramatsu 127*98d0a685SMasami Hiramatsu 128*98d0a685SMasami Hiramatsuecho 129*98d0a685SMasami Hiramatsuecho "=== Summary ===" 130*98d0a685SMasami Hiramatsuecho "# of Passed: $(expr $NO - $NG - 1)" 131*98d0a685SMasami Hiramatsuecho "# of Failed: $NG" 132*98d0a685SMasami Hiramatsu 133081c6536SMasami Hiramatsuecho 134081c6536SMasami Hiramatsuif [ $NG -eq 0 ]; then 135081c6536SMasami Hiramatsu echo "All tests passed" 136081c6536SMasami Hiramatsuelse 137081c6536SMasami Hiramatsu echo "$NG tests failed" 138*98d0a685SMasami Hiramatsu exit 1 139081c6536SMasami Hiramatsufi 140