1*081c6536SMasami Hiramatsu#!/bin/sh 2*081c6536SMasami Hiramatsu# SPDX-License-Identifier: GPL-2.0-only 3*081c6536SMasami Hiramatsu 4*081c6536SMasami Hiramatsuecho "Boot config test script" 5*081c6536SMasami Hiramatsu 6*081c6536SMasami HiramatsuBOOTCONF=./bootconfig 7*081c6536SMasami HiramatsuINITRD=`mktemp initrd-XXXX` 8*081c6536SMasami HiramatsuTEMPCONF=`mktemp temp-XXXX.bconf` 9*081c6536SMasami HiramatsuNG=0 10*081c6536SMasami Hiramatsu 11*081c6536SMasami Hiramatsucleanup() { 12*081c6536SMasami Hiramatsu rm -f $INITRD $TEMPCONF 13*081c6536SMasami Hiramatsu exit $NG 14*081c6536SMasami Hiramatsu} 15*081c6536SMasami Hiramatsu 16*081c6536SMasami Hiramatsutrap cleanup EXIT TERM 17*081c6536SMasami Hiramatsu 18*081c6536SMasami HiramatsuNO=1 19*081c6536SMasami Hiramatsu 20*081c6536SMasami Hiramatsuxpass() { # pass test command 21*081c6536SMasami Hiramatsu echo "test case $NO ($3)... " 22*081c6536SMasami Hiramatsu if ! ($@ && echo "\t\t[OK]"); then 23*081c6536SMasami Hiramatsu echo "\t\t[NG]"; NG=$((NG + 1)) 24*081c6536SMasami Hiramatsu fi 25*081c6536SMasami Hiramatsu NO=$((NO + 1)) 26*081c6536SMasami Hiramatsu} 27*081c6536SMasami Hiramatsu 28*081c6536SMasami Hiramatsuxfail() { # fail test command 29*081c6536SMasami Hiramatsu echo "test case $NO ($3)... " 30*081c6536SMasami Hiramatsu if ! (! $@ && echo "\t\t[OK]"); then 31*081c6536SMasami Hiramatsu echo "\t\t[NG]"; NG=$((NG + 1)) 32*081c6536SMasami Hiramatsu fi 33*081c6536SMasami Hiramatsu NO=$((NO + 1)) 34*081c6536SMasami Hiramatsu} 35*081c6536SMasami Hiramatsu 36*081c6536SMasami Hiramatsuecho "Basic command test" 37*081c6536SMasami Hiramatsuxpass $BOOTCONF $INITRD 38*081c6536SMasami Hiramatsu 39*081c6536SMasami Hiramatsuecho "Delete command should success without bootconfig" 40*081c6536SMasami Hiramatsuxpass $BOOTCONF -d $INITRD 41*081c6536SMasami Hiramatsu 42*081c6536SMasami Hiramatsudd if=/dev/zero of=$INITRD bs=4096 count=1 43*081c6536SMasami Hiramatsuecho "key = value;" > $TEMPCONF 44*081c6536SMasami Hiramatsubconf_size=$(stat -c %s $TEMPCONF) 45*081c6536SMasami Hiramatsuinitrd_size=$(stat -c %s $INITRD) 46*081c6536SMasami Hiramatsu 47*081c6536SMasami Hiramatsuecho "Apply command test" 48*081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 49*081c6536SMasami Hiramatsunew_size=$(stat -c %s $INITRD) 50*081c6536SMasami Hiramatsu 51*081c6536SMasami Hiramatsuecho "File size check" 52*081c6536SMasami Hiramatsuxpass test $new_size -eq $(expr $bconf_size + $initrd_size + 9) 53*081c6536SMasami Hiramatsu 54*081c6536SMasami Hiramatsuecho "Apply command repeat test" 55*081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 56*081c6536SMasami Hiramatsu 57*081c6536SMasami Hiramatsuecho "File size check" 58*081c6536SMasami Hiramatsuxpass test $new_size -eq $(stat -c %s $INITRD) 59*081c6536SMasami Hiramatsu 60*081c6536SMasami Hiramatsuecho "Delete command check" 61*081c6536SMasami Hiramatsuxpass $BOOTCONF -d $INITRD 62*081c6536SMasami Hiramatsu 63*081c6536SMasami Hiramatsuecho "File size check" 64*081c6536SMasami Hiramatsunew_size=$(stat -c %s $INITRD) 65*081c6536SMasami Hiramatsuxpass test $new_size -eq $initrd_size 66*081c6536SMasami Hiramatsu 67*081c6536SMasami Hiramatsuecho "Max node number check" 68*081c6536SMasami Hiramatsu 69*081c6536SMasami Hiramatsuecho -n > $TEMPCONF 70*081c6536SMasami Hiramatsufor i in `seq 1 1024` ; do 71*081c6536SMasami Hiramatsu echo "node$i" >> $TEMPCONF 72*081c6536SMasami Hiramatsudone 73*081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 74*081c6536SMasami Hiramatsu 75*081c6536SMasami Hiramatsuecho "badnode" >> $TEMPCONF 76*081c6536SMasami Hiramatsuxfail $BOOTCONF -a $TEMPCONF $INITRD 77*081c6536SMasami Hiramatsu 78*081c6536SMasami Hiramatsuecho "Max filesize check" 79*081c6536SMasami Hiramatsu 80*081c6536SMasami Hiramatsu# Max size is 32767 (including terminal byte) 81*081c6536SMasami Hiramatsuecho -n "data = \"" > $TEMPCONF 82*081c6536SMasami Hiramatsudd if=/dev/urandom bs=768 count=32 | base64 -w0 >> $TEMPCONF 83*081c6536SMasami Hiramatsuecho "\"" >> $TEMPCONF 84*081c6536SMasami Hiramatsuxfail $BOOTCONF -a $TEMPCONF $INITRD 85*081c6536SMasami Hiramatsu 86*081c6536SMasami Hiramatsutruncate -s 32764 $TEMPCONF 87*081c6536SMasami Hiramatsuecho "\"" >> $TEMPCONF # add 2 bytes + terminal ('\"\n\0') 88*081c6536SMasami Hiramatsuxpass $BOOTCONF -a $TEMPCONF $INITRD 89*081c6536SMasami Hiramatsu 90*081c6536SMasami Hiramatsuecho "=== expected failure cases ===" 91*081c6536SMasami Hiramatsufor i in samples/bad-* ; do 92*081c6536SMasami Hiramatsu xfail $BOOTCONF -a $i $INITRD 93*081c6536SMasami Hiramatsudone 94*081c6536SMasami Hiramatsu 95*081c6536SMasami Hiramatsuecho "=== expected success cases ===" 96*081c6536SMasami Hiramatsufor i in samples/good-* ; do 97*081c6536SMasami Hiramatsu xpass $BOOTCONF -a $i $INITRD 98*081c6536SMasami Hiramatsudone 99*081c6536SMasami Hiramatsu 100*081c6536SMasami Hiramatsuecho 101*081c6536SMasami Hiramatsuif [ $NG -eq 0 ]; then 102*081c6536SMasami Hiramatsu echo "All tests passed" 103*081c6536SMasami Hiramatsuelse 104*081c6536SMasami Hiramatsu echo "$NG tests failed" 105*081c6536SMasami Hiramatsufi 106