@@ -132,31 +132,39 @@ func GetTempdir(dirname string) (string, error) {
132
132
func bootfsFailure (c cluster.TestCluster ) error {
133
133
// We can't create files in / due to the immutable bit OSTree creates, so
134
134
// this is a convenient way to test Ignition failure.
135
+
135
136
failConfig , err := conf .EmptyIgnition ().Render (conf .FailWarnings )
136
137
if err != nil {
137
138
return errors .Wrapf (err , "creating empty config" )
138
139
}
139
140
140
- tempDir , err := GetTempdir ("tmp" )
141
+ // Config which adds
142
+ fakeConfig , err := conf .EmptyIgnition ().Render (conf .FailWarnings )
141
143
if err != nil {
142
- fmt .Println ("Error getting temp directory:" , err )
143
- }
144
- fmt .Println ("Temp directory:" , tempDir )
145
- cmd := exec .Command (tempDir , "-c" , fmt .Sprintf (`set -euo pipefail;
146
- truncate -s 1G fakeboot
147
- mkfs.ext4 -L boot fakeboot
148
- ` ))
149
- cmd .Stdout = os .Stdout
150
- cmd .Stderr = os .Stderr
151
- if err := cmd .Run (); err != nil {
152
- c .Fatal (err )
144
+ return errors .Wrapf (err , "creating empty config" )
145
+ } else {
146
+
147
+ tempDir , err := GetTempdir ("tmp" )
148
+ if err != nil {
149
+ fmt .Println ("Error getting temp directory:" , err )
150
+ }
151
+ fmt .Println ("Temp directory:" , tempDir )
152
+ cmd := exec .Command ("/bin/bash" , "-c" , fmt .Sprintf (`set -euo pipefail;
153
+ mkdir -p %s
154
+ truncate -s 1G fakeboot
155
+ mkfs.ext4 -L boot fakeboot
156
+ ` , tempDir ))
157
+ cmd .Stdout = os .Stdout
158
+ cmd .Stderr = os .Stderr
159
+ if err := cmd .Run (); err != nil {
160
+ c .Fatal (err )
161
+ }
153
162
}
154
163
// failConfig.AddFile("/notwritable.txt", "Hello world", 0644)
155
164
156
165
builder := platform .NewQemuBuilder ()
157
166
defer builder .Close ()
158
167
builder .SetConfig (failConfig )
159
-
160
168
err = builder .AddBootDisk (& platform.Disk {
161
169
BackingFile : kola .QEMUOptions .DiskImage ,
162
170
})
@@ -172,14 +180,32 @@ func bootfsFailure(c cluster.TestCluster) error {
172
180
}
173
181
defer inst .Destroy ()
174
182
183
+ builder2 := platform .NewQemuBuilder ()
184
+ defer builder2 .Close ()
185
+ builder2 .SetConfig (fakeConfig ) // how to fakeboot?
186
+ err = builder2 .AddDisk (& platform.Disk {
187
+ BackingFile : kola .QEMUOptions .DiskImage ,
188
+ })
189
+
190
+ if err != nil {
191
+ return err
192
+ }
193
+ builder2 .MemoryMiB = 1024
194
+ builder2 .Firmware = kola .QEMUOptions .Firmware
195
+ inst2 , err := builder2 .Exec ()
196
+ if err != nil {
197
+ return err
198
+ }
199
+ defer inst2 .Destroy ()
200
+
175
201
ctx , cancel := context .WithTimeout (context .Background (), 2 * time .Minute )
176
202
defer cancel ()
177
203
178
204
errchan := make (chan error )
179
205
go func () {
180
206
err := inst .WaitAll (ctx )
181
207
if err == nil {
182
- err = fmt .Errorf ("Bootfs unexpectedly succeeded" )
208
+ err = fmt .Errorf ("bootfs unexpectedly succeeded" )
183
209
} else if err == platform .ErrInitramfsEmergency {
184
210
// The expected case
185
211
err = nil
0 commit comments