blob: 56284b98d8f0bc263515543820fb07eafd537b77 [file] [log] [blame]
Masami Hiramatsu081c6532020-01-11 01:04:07 +09001#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0-only
3
4echo "Boot config test script"
5
Masami Hiramatsu306b69d2020-03-03 20:24:40 +09006if [ -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`
Masami Hiramatsu081c6532020-01-11 01:04:07 +090016NG=0
17
18cleanup() {
Masami Hiramatsu5f811c52020-02-21 17:13:52 +090019 rm -f $INITRD $TEMPCONF $OUTFILE
Masami Hiramatsu081c6532020-01-11 01:04:07 +090020 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
Masami Hiramatsu54142512020-06-16 19:14:34 +090058echo "Show command test"
59xpass $BOOTCONF $INITRD
60
Masami Hiramatsu081c6532020-01-11 01:04:07 +090061echo "File size check"
Masami Hiramatsu85c46b72020-02-20 21:18:42 +090062xpass test $new_size -eq $(expr $bconf_size + $initrd_size + 9 + 12)
Masami Hiramatsu081c6532020-01-11 01:04:07 +090063
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
Masami Hiramatsu97378002020-02-09 22:05:13 +090077echo "No error messge while applying"
Masami Hiramatsu97378002020-02-09 22:05:13 +090078dd 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
Masami Hiramatsu97378002020-02-09 22:05:13 +090083
Masami Hiramatsu081c6532020-01-11 01:04:07 +090084echo "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
Masami Hiramatsu5f811c52020-02-21 17:13:52 +0900107echo "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
Masami Hiramatsu81464192020-07-16 01:00:38 +0900120echo "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
Masami Hiramatsu54142512020-06-16 19:14:34 +0900133echo "Double/single quotes test"
134echo "key = '\"string\"';" > $TEMPCONF
135$BOOTCONF -a $TEMPCONF $INITRD
136$BOOTCONF $INITRD > $TEMPCONF
137cat $TEMPCONF
138xpass grep \'\"string\"\' $TEMPCONF
139
Masami Hiramatsu081c6532020-01-11 01:04:07 +0900140echo "=== expected failure cases ==="
141for i in samples/bad-* ; do
142 xfail $BOOTCONF -a $i $INITRD
143done
144
145echo "=== expected success cases ==="
146for i in samples/good-* ; do
147 xpass $BOOTCONF -a $i $INITRD
148done
149
Masami Hiramatsu98d0a682020-05-09 09:58:25 +0900150
151echo
152echo "=== Summary ==="
153echo "# of Passed: $(expr $NO - $NG - 1)"
154echo "# of Failed: $NG"
155
Masami Hiramatsu081c6532020-01-11 01:04:07 +0900156echo
157if [ $NG -eq 0 ]; then
158 echo "All tests passed"
159else
160 echo "$NG tests failed"
Masami Hiramatsu98d0a682020-05-09 09:58:25 +0900161 exit 1
Masami Hiramatsu081c6532020-01-11 01:04:07 +0900162fi