Skip to content

Commit 3c6acce

Browse files
committed
import1: fix TestImport* cleanup
TestImport functions create some artefacts under /var/lib/machines which require "machinectl remove" invocation to clean up. Unfortunately, Import operations are async, meaning we either have to listen to transfer events to ensure they are completed, or just sleep for some time. Since this is a test I'd like to keep things simple. Signed-off-by: Kir Kolyshkin <[email protected]>
1 parent 9f51dd8 commit 3c6acce

File tree

1 file changed

+37
-14
lines changed

1 file changed

+37
-14
lines changed

import1/dbus_test.go

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,46 @@ import (
1818
"log"
1919
"net/http"
2020
"os"
21+
"os/exec"
2122
"path/filepath"
2223
"strings"
2324
"testing"
25+
"time"
2426
)
2527

2628
const (
2729
importPrefix = "importd-test-"
2830
)
2931

32+
func cleanupImport(t *testing.T, name string) {
33+
t.Cleanup(func() {
34+
var (
35+
out []byte
36+
err error
37+
dur = 500 * time.Millisecond
38+
)
39+
for range 5 {
40+
time.Sleep(dur)
41+
out, err = exec.Command("machinectl", "remove", name).CombinedOutput()
42+
if err == nil {
43+
return
44+
}
45+
dur *= 2
46+
}
47+
t.Fatalf("machinectl remove %s failed: %v\noutput: %s", name, err, out)
48+
})
49+
}
50+
3051
func TestImportTar(t *testing.T) {
3152
conn, err := New()
3253
if err != nil {
3354
t.Fatal(err)
3455
}
3556

36-
f, err := os.Open(findFixture("image.tar.xz", t))
37-
if err != nil {
38-
t.Fatal(err)
39-
}
40-
41-
_, err = conn.ImportTar(f, importPrefix+"ImportTar", true, true)
57+
f := openFixture(t, "image.tar.xz")
58+
name := importPrefix + "ImportTar"
59+
cleanupImport(t, name)
60+
_, err = conn.ImportTar(f, name, true, true)
4261
if err != nil {
4362
t.Fatal(err)
4463
}
@@ -50,12 +69,10 @@ func TestImportRaw(t *testing.T) {
5069
t.Fatal(err)
5170
}
5271

53-
f, err := os.Open(findFixture("image.raw.xz", t))
54-
if err != nil {
55-
t.Fatal(err)
56-
}
57-
58-
_, err = conn.ImportRaw(f, importPrefix+"ImportRaw", true, true)
72+
f := openFixture(t, "image.raw.xz")
73+
name := importPrefix + "ImportRaw"
74+
cleanupImport(t, name)
75+
_, err = conn.ImportRaw(f, name, true, true)
5976
if err != nil {
6077
t.Fatal(err)
6178
}
@@ -150,12 +167,18 @@ func TestListAndCancelTransfers(t *testing.T) {
150167
}
151168
}
152169

153-
func findFixture(target string, t *testing.T) string {
170+
func openFixture(t *testing.T, target string) *os.File {
154171
abs, err := filepath.Abs("../fixtures/" + target)
155172
if err != nil {
156173
t.Fatal(err)
157174
}
158-
return abs
175+
176+
f, err := os.Open(abs)
177+
if err != nil {
178+
t.Fatal(err)
179+
}
180+
181+
return f
159182
}
160183

161184
func init() {

0 commit comments

Comments
 (0)