File Index
Files and directories
Sign in
FILE

test-bootconfig.sh

File preview with syntax highlighting.

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