Blame view

tools/bootconfig/test-bootconfig.sh 3.9 KB
081c65360   Masami Hiramatsu   tools: bootconfig...
1
2
3
4
  #!/bin/sh
  # SPDX-License-Identifier: GPL-2.0-only
  
  echo "Boot config test script"
306b69dce   Masami Hiramatsu   bootconfig: Suppo...
5
6
7
8
9
10
  if [ -d "$1" ]; then
    TESTDIR=$1
  else
    TESTDIR=.
  fi
  BOOTCONF=${TESTDIR}/bootconfig
e1cef2d4c   Masami Hiramatsu   tools/bootconfig:...
11
  ALIGN=4
306b69dce   Masami Hiramatsu   bootconfig: Suppo...
12
13
14
15
  
  INITRD=`mktemp ${TESTDIR}/initrd-XXXX`
  TEMPCONF=`mktemp ${TESTDIR}/temp-XXXX.bconf`
  OUTFILE=`mktemp ${TESTDIR}/tempout-XXXX`
081c65360   Masami Hiramatsu   tools: bootconfig...
16
17
18
  NG=0
  
  cleanup() {
5f811c57c   Masami Hiramatsu   bootconfig: Add a...
19
    rm -f $INITRD $TEMPCONF $OUTFILE
081c65360   Masami Hiramatsu   tools: bootconfig...
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    exit $NG
  }
  
  trap cleanup EXIT TERM
  
  NO=1
  
  xpass() { # pass test command
    echo "test case $NO ($3)... "
    if ! ($@ && echo "\t\t[OK]"); then
       echo "\t\t[NG]"; NG=$((NG + 1))
    fi
    NO=$((NO + 1))
  }
  
  xfail() { # fail test command
    echo "test case $NO ($3)... "
    if ! (! $@ && echo "\t\t[OK]"); then
       echo "\t\t[NG]"; NG=$((NG + 1))
    fi
    NO=$((NO + 1))
  }
  
  echo "Basic command test"
  xpass $BOOTCONF $INITRD
  
  echo "Delete command should success without bootconfig"
  xpass $BOOTCONF -d $INITRD
  
  dd if=/dev/zero of=$INITRD bs=4096 count=1
  echo "key = value;" > $TEMPCONF
  bconf_size=$(stat -c %s $TEMPCONF)
  initrd_size=$(stat -c %s $INITRD)
  
  echo "Apply command test"
  xpass $BOOTCONF -a $TEMPCONF $INITRD
  new_size=$(stat -c %s $INITRD)
5414251aa   Masami Hiramatsu   tools/bootconfig:...
57
58
  echo "Show command test"
  xpass $BOOTCONF $INITRD
081c65360   Masami Hiramatsu   tools: bootconfig...
59
  echo "File size check"
e1cef2d4c   Masami Hiramatsu   tools/bootconfig:...
60
61
62
63
  total_size=$(expr $bconf_size + $initrd_size + 9 + 12 + $ALIGN - 1 )
  total_size=$(expr $total_size / $ALIGN)
  total_size=$(expr $total_size \* $ALIGN)
  xpass test $new_size -eq $total_size
081c65360   Masami Hiramatsu   tools: bootconfig...
64
65
66
67
68
69
70
71
72
73
74
75
76
  
  echo "Apply command repeat test"
  xpass $BOOTCONF -a $TEMPCONF $INITRD
  
  echo "File size check"
  xpass test $new_size -eq $(stat -c %s $INITRD)
  
  echo "Delete command check"
  xpass $BOOTCONF -d $INITRD
  
  echo "File size check"
  new_size=$(stat -c %s $INITRD)
  xpass test $new_size -eq $initrd_size
973780011   Masami Hiramatsu   tools/bootconfig:...
77
  echo "No error messge while applying"
973780011   Masami Hiramatsu   tools/bootconfig:...
78
79
80
81
82
  dd if=/dev/zero of=$INITRD bs=4096 count=1
  printf " \0\0\0 \0\0\0" >> $INITRD
  $BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1
  xfail grep -i "failed" $OUTFILE
  xfail grep -i "error" $OUTFILE
973780011   Masami Hiramatsu   tools/bootconfig:...
83

081c65360   Masami Hiramatsu   tools: bootconfig...
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
  echo "Max node number check"
  
  echo -n > $TEMPCONF
  for i in `seq 1 1024` ; do
     echo "node$i" >> $TEMPCONF
  done
  xpass $BOOTCONF -a $TEMPCONF $INITRD
  
  echo "badnode" >> $TEMPCONF
  xfail $BOOTCONF -a $TEMPCONF $INITRD
  
  echo "Max filesize check"
  
  # Max size is 32767 (including terminal byte)
  echo -n "data = \"" > $TEMPCONF
  dd if=/dev/urandom bs=768 count=32 | base64 -w0 >> $TEMPCONF
  echo "\"" >> $TEMPCONF
  xfail $BOOTCONF -a $TEMPCONF $INITRD
  
  truncate -s 32764 $TEMPCONF
  echo "\"" >> $TEMPCONF	# add 2 bytes + terminal ('\"
  \0')
  xpass $BOOTCONF -a $TEMPCONF $INITRD
5f811c57c   Masami Hiramatsu   bootconfig: Add a...
107
108
109
110
111
112
113
114
115
116
117
118
  echo "Adding same-key values"
  cat > $TEMPCONF << EOF
  key = bar, baz
  key += qux
  EOF
  echo > $INITRD
  
  xpass $BOOTCONF -a $TEMPCONF $INITRD
  $BOOTCONF $INITRD > $OUTFILE
  xpass grep -q "bar" $OUTFILE
  xpass grep -q "baz" $OUTFILE
  xpass grep -q "qux" $OUTFILE
814641928   Masami Hiramatsu   tools/bootconfig:...
119
120
121
122
123
124
125
126
127
128
129
130
  echo "Override same-key values"
  cat > $TEMPCONF << EOF
  key = bar, baz
  key := qux
  EOF
  echo > $INITRD
  
  xpass $BOOTCONF -a $TEMPCONF $INITRD
  $BOOTCONF $INITRD > $OUTFILE
  xfail grep -q "bar" $OUTFILE
  xfail grep -q "baz" $OUTFILE
  xpass grep -q "qux" $OUTFILE
5414251aa   Masami Hiramatsu   tools/bootconfig:...
131
132
133
134
135
136
  echo "Double/single quotes test"
  echo "key = '\"string\"';" > $TEMPCONF
  $BOOTCONF -a $TEMPCONF $INITRD
  $BOOTCONF $INITRD > $TEMPCONF
  cat $TEMPCONF
  xpass grep \'\"string\"\' $TEMPCONF
1d210c166   Masami Hiramatsu   tools/bootconfig:...
137
138
139
140
141
142
143
144
145
146
147
  echo "Repeat same-key tree"
  cat > $TEMPCONF << EOF
  foo
  bar
  foo { buz }
  EOF
  echo > $INITRD
  
  xpass $BOOTCONF -a $TEMPCONF $INITRD
  $BOOTCONF $INITRD > $OUTFILE
  xpass grep -q "bar" $OUTFILE
2f5fb5556   Masami Hiramatsu   tools/bootconfig:...
148
149
150
151
152
153
154
155
156
157
158
159
  
  echo "Remove/keep tailing spaces"
  cat > $TEMPCONF << EOF
  foo = val     # comment
  bar = "val2 " # comment
  EOF
  echo > $INITRD
  
  xpass $BOOTCONF -a $TEMPCONF $INITRD
  $BOOTCONF $INITRD > $OUTFILE
  xfail grep -q val[[:space:]] $OUTFILE
  xpass grep -q val2[[:space:]] $OUTFILE
081c65360   Masami Hiramatsu   tools: bootconfig...
160
161
162
163
164
165
166
167
168
  echo "=== expected failure cases ==="
  for i in samples/bad-* ; do
    xfail $BOOTCONF -a $i $INITRD
  done
  
  echo "=== expected success cases ==="
  for i in samples/good-* ; do
    xpass $BOOTCONF -a $i $INITRD
  done
98d0a685c   Masami Hiramatsu   tools/bootconfig:...
169
170
171
172
173
  
  echo
  echo "=== Summary ==="
  echo "# of Passed: $(expr $NO - $NG - 1)"
  echo "# of Failed: $NG"
081c65360   Masami Hiramatsu   tools: bootconfig...
174
175
176
177
178
  echo
  if [ $NG -eq 0 ]; then
  	echo "All tests passed"
  else
  	echo "$NG tests failed"
98d0a685c   Masami Hiramatsu   tools/bootconfig:...
179
  	exit 1
081c65360   Masami Hiramatsu   tools: bootconfig...
180
  fi