1081c6536SMasami Hiramatsu#!/bin/sh 2081c6536SMasami Hiramatsu# SPDX-License-Identifier: GPL-2.0-only 3081c6536SMasami Hiramatsu 4081c6536SMasami Hiramatsuecho "Boot config test script" 5081c6536SMasami Hiramatsu 6081c6536SMasami HiramatsuBOOTCONF=./bootconfig 7081c6536SMasami HiramatsuINITRD=`mktemp initrd-XXXX` 8081c6536SMasami HiramatsuTEMPCONF=`mktemp temp-XXXX.bconf` 9081c6536SMasami HiramatsuNG=0 10081c6536SMasami Hiramatsu 11081c6536SMasami Hiramatsucleanup() { 12*5f811c57SMasami Hiramatsu rm -f $INITRD $TEMPCONF $OUTFILE 13081c6536SMasami Hiramatsu exit $NG 14081c6536SMasami Hiramatsu} 15081c6536SMasami Hiramatsu 16081c6536SMasami Hiramatsutrap cleanup EXIT TERM 17081c6536SMasami Hiramatsu 18081c6536SMasami HiramatsuNO=1 19081c6536SMasami Hiramatsu 20081c6536SMasami Hiramatsuxpass() { # pass test command 21081c6536SMasami Hiramatsu echo "test case $NO ($3)... " 22081c6536SMasami Hiramatsu if ! ($@ && echo "\t\t[OK]"); then 23081c6536SMasami Hiramatsu echo "\t\t[NG]"; NG=$((NG + 1)) 24081c6536SMasami Hiramatsu fi 25081c6536SMasami Hiramatsu NO=$((NO + 1)) 26081c6536SMasami Hiramatsu} 27081c6536SMasami Hiramatsu 28081c6536SMasami Hiramatsuxfail() { # fail test command 29081c6536SMasami Hiramatsu echo "test case $NO ($3)... " 30081c6536SMasami Hiramatsu if ! (! $@ && echo "\t\t[OK]"); then 31081c6536SMasami Hiramatsu echo "\t\t[NG]"; NG=$((NG + 1)) 32081c6536SMasami Hiramatsu fi 33081c6536SMasami Hiramatsu NO=$((NO + 1)) 34081c6536SMasami Hiramatsu} 35081c6536SMasami Hiramatsu 36081c6536SMasami Hiramatsuecho "Basic command test" 37081c6536SMasami Hiramatsuxpass $BOOTCONF $INITRD 38081c6536SMasami Hiramatsu 39081c6536SMasami Hiramatsuecho "Delete command should success without bootconfig" 40081c6536SMasami Hiramatsuxpass $BOOTCONF -d $INITRD 41081c6536SMasami Hiramatsu 42081c6536SMasami Hiramatsudd if=/dev/zero of=$INITRD bs=4096 count=1 43081c6536SMasami Hiramatsuecho "key = value;" > $TEMPCONF 44081c6536SMasami Hiramatsubconf_size=$(stat -c %s $TEMPCONF) 45081c6536SMasami Hiramatsuinitrd_size=$(stat -c %s $INITRD) 46081c6536SMasami Hiramatsu 47081c6536SMasami Hiramatsuecho "Apply command test" 48081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 49081c6536SMasami Hiramatsunew_size=$(stat -c %s $INITRD) 50081c6536SMasami Hiramatsu 51081c6536SMasami Hiramatsuecho "File size check" 5285c46b78SMasami Hiramatsuxpass test $new_size -eq $(expr $bconf_size + $initrd_size + 9 + 12) 53081c6536SMasami Hiramatsu 54081c6536SMasami Hiramatsuecho "Apply command repeat test" 55081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 56081c6536SMasami Hiramatsu 57081c6536SMasami Hiramatsuecho "File size check" 58081c6536SMasami Hiramatsuxpass test $new_size -eq $(stat -c %s $INITRD) 59081c6536SMasami Hiramatsu 60081c6536SMasami Hiramatsuecho "Delete command check" 61081c6536SMasami Hiramatsuxpass $BOOTCONF -d $INITRD 62081c6536SMasami Hiramatsu 63081c6536SMasami Hiramatsuecho "File size check" 64081c6536SMasami Hiramatsunew_size=$(stat -c %s $INITRD) 65081c6536SMasami Hiramatsuxpass test $new_size -eq $initrd_size 66081c6536SMasami Hiramatsu 6797378001SMasami Hiramatsuecho "No error messge while applying" 6897378001SMasami HiramatsuOUTFILE=`mktemp tempout-XXXX` 6997378001SMasami Hiramatsudd if=/dev/zero of=$INITRD bs=4096 count=1 7097378001SMasami Hiramatsuprintf " \0\0\0 \0\0\0" >> $INITRD 7197378001SMasami Hiramatsu$BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1 7297378001SMasami Hiramatsuxfail grep -i "failed" $OUTFILE 7397378001SMasami Hiramatsuxfail grep -i "error" $OUTFILE 7497378001SMasami Hiramatsu 75081c6536SMasami Hiramatsuecho "Max node number check" 76081c6536SMasami Hiramatsu 77081c6536SMasami Hiramatsuecho -n > $TEMPCONF 78081c6536SMasami Hiramatsufor i in `seq 1 1024` ; do 79081c6536SMasami Hiramatsu echo "node$i" >> $TEMPCONF 80081c6536SMasami Hiramatsudone 81081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 82081c6536SMasami Hiramatsu 83081c6536SMasami Hiramatsuecho "badnode" >> $TEMPCONF 84081c6536SMasami Hiramatsuxfail $BOOTCONF -a $TEMPCONF $INITRD 85081c6536SMasami Hiramatsu 86081c6536SMasami Hiramatsuecho "Max filesize check" 87081c6536SMasami Hiramatsu 88081c6536SMasami Hiramatsu# Max size is 32767 (including terminal byte) 89081c6536SMasami Hiramatsuecho -n "data = \"" > $TEMPCONF 90081c6536SMasami Hiramatsudd if=/dev/urandom bs=768 count=32 | base64 -w0 >> $TEMPCONF 91081c6536SMasami Hiramatsuecho "\"" >> $TEMPCONF 92081c6536SMasami Hiramatsuxfail $BOOTCONF -a $TEMPCONF $INITRD 93081c6536SMasami Hiramatsu 94081c6536SMasami Hiramatsutruncate -s 32764 $TEMPCONF 95081c6536SMasami Hiramatsuecho "\"" >> $TEMPCONF # add 2 bytes + terminal ('\"\n\0') 96081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 97081c6536SMasami Hiramatsu 98*5f811c57SMasami Hiramatsuecho "Adding same-key values" 99*5f811c57SMasami Hiramatsucat > $TEMPCONF << EOF 100*5f811c57SMasami Hiramatsukey = bar, baz 101*5f811c57SMasami Hiramatsukey += qux 102*5f811c57SMasami HiramatsuEOF 103*5f811c57SMasami Hiramatsuecho > $INITRD 104*5f811c57SMasami Hiramatsu 105*5f811c57SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 106*5f811c57SMasami Hiramatsu$BOOTCONF $INITRD > $OUTFILE 107*5f811c57SMasami Hiramatsuxpass grep -q "bar" $OUTFILE 108*5f811c57SMasami Hiramatsuxpass grep -q "baz" $OUTFILE 109*5f811c57SMasami Hiramatsuxpass grep -q "qux" $OUTFILE 110*5f811c57SMasami Hiramatsu 111081c6536SMasami Hiramatsuecho "=== expected failure cases ===" 112081c6536SMasami Hiramatsufor i in samples/bad-* ; do 113081c6536SMasami Hiramatsu xfail $BOOTCONF -a $i $INITRD 114081c6536SMasami Hiramatsudone 115081c6536SMasami Hiramatsu 116081c6536SMasami Hiramatsuecho "=== expected success cases ===" 117081c6536SMasami Hiramatsufor i in samples/good-* ; do 118081c6536SMasami Hiramatsu xpass $BOOTCONF -a $i $INITRD 119081c6536SMasami Hiramatsudone 120081c6536SMasami Hiramatsu 121081c6536SMasami Hiramatsuecho 122081c6536SMasami Hiramatsuif [ $NG -eq 0 ]; then 123081c6536SMasami Hiramatsu echo "All tests passed" 124081c6536SMasami Hiramatsuelse 125081c6536SMasami Hiramatsu echo "$NG tests failed" 126081c6536SMasami Hiramatsufi 127