Linux Audio

Check our new training course

Real-Time Linux with PREEMPT_RT training

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