Skip to content

Commit e2f503f

Browse files
committed
Add builder.AddDisk()
1 parent 9376cce commit e2f503f

File tree

1 file changed

+40
-14
lines changed

1 file changed

+40
-14
lines changed

mantle/kola/tests/ignition/qemufailure.go

+40-14
Original file line numberDiff line numberDiff line change
@@ -132,31 +132,39 @@ func GetTempdir(dirname string) (string, error) {
132132
func bootfsFailure(c cluster.TestCluster) error {
133133
// We can't create files in / due to the immutable bit OSTree creates, so
134134
// this is a convenient way to test Ignition failure.
135+
135136
failConfig, err := conf.EmptyIgnition().Render(conf.FailWarnings)
136137
if err != nil {
137138
return errors.Wrapf(err, "creating empty config")
138139
}
139140

140-
tempDir, err := GetTempdir("tmp")
141+
// Config which adds
142+
fakeConfig, err := conf.EmptyIgnition().Render(conf.FailWarnings)
141143
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+
}
153162
}
154163
// failConfig.AddFile("/notwritable.txt", "Hello world", 0644)
155164

156165
builder := platform.NewQemuBuilder()
157166
defer builder.Close()
158167
builder.SetConfig(failConfig)
159-
160168
err = builder.AddBootDisk(&platform.Disk{
161169
BackingFile: kola.QEMUOptions.DiskImage,
162170
})
@@ -172,14 +180,32 @@ func bootfsFailure(c cluster.TestCluster) error {
172180
}
173181
defer inst.Destroy()
174182

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+
175201
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
176202
defer cancel()
177203

178204
errchan := make(chan error)
179205
go func() {
180206
err := inst.WaitAll(ctx)
181207
if err == nil {
182-
err = fmt.Errorf("Bootfs unexpectedly succeeded")
208+
err = fmt.Errorf("bootfs unexpectedly succeeded")
183209
} else if err == platform.ErrInitramfsEmergency {
184210
// The expected case
185211
err = nil

0 commit comments

Comments
 (0)