Skip to content

Commit 0f2eb82

Browse files
andre-j3susleokondrashov
authored andcommitted
Convert stargz tests to manual tests
The unit tests for the Firecracker-containerd interface using the stargz snapshotter were too flaky. It's better to run them in a more controlled way. By running them manually, we can clean and restart Firecracker, making the tests less flaky. Signed-off-by: André Jesus <[email protected]>
1 parent 03331f5 commit 0f2eb82

File tree

3 files changed

+32
-26
lines changed

3 files changed

+32
-26
lines changed

ctriface/Makefile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,6 @@ test:
4141
sudo mkdir -m777 -p $(CTRDLOGDIR) && sudo env "PATH=$(PATH)" /usr/local/bin/firecracker-containerd --config /etc/firecracker-containerd/config.toml 1>$(CTRDLOGDIR)/ctriface_log.out 2>$(CTRDLOGDIR)/ctriface_log.err &
4242
sudo env "PATH=$(PATH)" go test $(EXTRATESTFILES) $(EXTRAGOARGS) -args $(WITHUPF)
4343
./../scripts/clean_fcctr.sh
44-
sudo env "PATH=$(PATH)" /usr/local/bin/http-address-resolver &
45-
sudo env "PATH=$(PATH)" /bin/bash -c 'while true; do /usr/local/bin/demux-snapshotter; done' &
46-
sudo mkdir -m777 -p $(CTRDLOGDIR) && sudo env "PATH=$(PATH)" /usr/local/bin/firecracker-containerd --config /etc/firecracker-containerd/config.toml 1>$(CTRDLOGDIR)/ctriface_log.out 2>$(CTRDLOGDIR)/ctriface_log.err &
47-
sudo env "PATH=$(PATH)" go test $(EXTRATESTFILES) $(EXTRAGOARGS) -args $(STARGZ) $(DOCKER_CREDENTIALS)
48-
./../scripts/clean_fcctr.sh
4944

5045
test-man:
5146
./../scripts/clean_fcctr.sh
@@ -67,6 +62,11 @@ test-man:
6762
# Loads the remote snapshot.
6863
sudo env "PATH=$(PATH)" go test $(EXTRAGOARGS) -run TestRemoteSnapLoad
6964
./../scripts/clean_fcctr.sh
65+
sudo env "PATH=$(PATH)" /usr/local/bin/http-address-resolver &
66+
sudo env "PATH=$(PATH)" /bin/bash -c 'while true; do /usr/local/bin/demux-snapshotter; done' &
67+
sudo mkdir -m777 -p $(CTRDLOGDIR) && sudo env "PATH=$(PATH)" /usr/local/bin/firecracker-containerd --config /etc/firecracker-containerd/config.toml 1>$(CTRDLOGDIR)/ctriface_log.out 2>$(CTRDLOGDIR)/ctriface_log.err &
68+
sudo env "PATH=$(PATH)" go test $(EXTRAGOARGS) -run TestSnapLoad -args $(STARGZ) $(DOCKER_CREDENTIALS)
69+
./../scripts/clean_fcctr.sh
7070

7171
test-skip:
7272
sudo mkdir -m777 -p $(CTRDLOGDIR) && sudo env "PATH=$(PATH)" /usr/local/bin/firecracker-containerd --config /etc/firecracker-containerd/config.toml 1>$(CTRDLOGDIR)/ctriface_log_noupf_man_skip.out 2>$(CTRDLOGDIR)/ctriface_log_noupf_man_skip.err &

ctriface/manual_cleanup_test.go

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,24 @@ func TestSnapLoad(t *testing.T) {
6060
defer cancel()
6161

6262
orch := NewOrchestrator(
63-
"devmapper",
63+
*snapshotter,
6464
"",
6565
WithTestModeOn(true),
6666
WithUPF(*isUPFEnabled),
6767
WithLazyMode(*isLazyMode),
68+
WithDockerCredentials(*dockerCredentials),
6869
)
6970

7071
vmID := "1"
7172
revision := "myrev-1"
7273

73-
_, _, err := orch.StartVM(ctx, vmID, testImageName)
74+
_, _, err := orch.StartVM(ctx, vmID, *testImage)
7475
require.NoError(t, err, "Failed to start VM")
7576

7677
err = orch.PauseVM(ctx, vmID)
7778
require.NoError(t, err, "Failed to pause VM")
7879

79-
snap := snapshotting.NewSnapshot(revision, "/fccd/snapshots", testImageName)
80+
snap := snapshotting.NewSnapshot(revision, "/fccd/snapshots", *testImage)
8081
err = snap.CreateSnapDir()
8182
require.NoError(t, err, "Failed to create snapshots directory")
8283

@@ -121,23 +122,24 @@ func TestSnapLoadMultiple(t *testing.T) {
121122
defer cancel()
122123

123124
orch := NewOrchestrator(
124-
"devmapper",
125+
*snapshotter,
125126
"",
126127
WithTestModeOn(true),
127128
WithUPF(*isUPFEnabled),
128129
WithLazyMode(*isLazyMode),
130+
WithDockerCredentials(*dockerCredentials),
129131
)
130132

131133
vmID := "3"
132134
revision := "myrev-3"
133135

134-
_, _, err := orch.StartVM(ctx, vmID, testImageName)
136+
_, _, err := orch.StartVM(ctx, vmID, *testImage)
135137
require.NoError(t, err, "Failed to start VM")
136138

137139
err = orch.PauseVM(ctx, vmID)
138140
require.NoError(t, err, "Failed to pause VM")
139141

140-
snap := snapshotting.NewSnapshot(revision, "/fccd/snapshots", testImageName)
142+
snap := snapshotting.NewSnapshot(revision, "/fccd/snapshots", *testImage)
141143
err = snap.CreateSnapDir()
142144
require.NoError(t, err, "Failed to create snapshots directory")
143145

@@ -196,15 +198,16 @@ func TestParallelSnapLoad(t *testing.T) {
196198
vmIDBase := 6
197199

198200
orch := NewOrchestrator(
199-
"devmapper",
201+
*snapshotter,
200202
"",
201203
WithTestModeOn(true),
202204
WithUPF(*isUPFEnabled),
203205
WithLazyMode(*isLazyMode),
206+
WithDockerCredentials(*dockerCredentials),
204207
)
205208

206209
// Pull image
207-
_, err := orch.getImage(ctx, testImageName)
210+
_, err := orch.getImage(ctx, *testImage)
208211
require.NoError(t, err, "Failed to pull image "+testImageName)
209212

210213
var vmGroup sync.WaitGroup
@@ -215,13 +218,13 @@ func TestParallelSnapLoad(t *testing.T) {
215218
vmID := fmt.Sprintf("%d", i+vmIDBase)
216219
revision := fmt.Sprintf("myrev-%d", i+vmIDBase)
217220

218-
_, _, err := orch.StartVM(ctx, vmID, testImageName)
221+
_, _, err := orch.StartVM(ctx, vmID, *testImage)
219222
require.NoError(t, err, "Failed to start VM, "+vmID)
220223

221224
err = orch.PauseVM(ctx, vmID)
222225
require.NoError(t, err, "Failed to pause VM, "+vmID)
223226

224-
snap := snapshotting.NewSnapshot(revision, "/fccd/snapshots", testImageName)
227+
snap := snapshotting.NewSnapshot(revision, "/fccd/snapshots", *testImage)
225228
err = snap.CreateSnapDir()
226229
require.NoError(t, err, "Failed to create snapshots directory")
227230

@@ -274,15 +277,16 @@ func TestParallelPhasedSnapLoad(t *testing.T) {
274277
vmIDBase := 16
275278

276279
orch := NewOrchestrator(
277-
"devmapper",
280+
*snapshotter,
278281
"",
279282
WithTestModeOn(true),
280283
WithUPF(*isUPFEnabled),
281284
WithLazyMode(*isLazyMode),
285+
WithDockerCredentials(*dockerCredentials),
282286
)
283287

284288
// Pull image
285-
_, err := orch.getImage(ctx, testImageName)
289+
_, err := orch.getImage(ctx, *testImage)
286290
require.NoError(t, err, "Failed to pull image "+testImageName)
287291

288292
{
@@ -292,7 +296,7 @@ func TestParallelPhasedSnapLoad(t *testing.T) {
292296
go func(i int) {
293297
defer vmGroup.Done()
294298
vmID := fmt.Sprintf("%d", i+vmIDBase)
295-
_, _, err := orch.StartVM(ctx, vmID, testImageName)
299+
_, _, err := orch.StartVM(ctx, vmID, *testImage)
296300
require.NoError(t, err, "Failed to start VM, "+vmID)
297301
}(i)
298302
}
@@ -321,7 +325,7 @@ func TestParallelPhasedSnapLoad(t *testing.T) {
321325
defer vmGroup.Done()
322326
vmID := fmt.Sprintf("%d", i+vmIDBase)
323327
revision := fmt.Sprintf("myrev-%d", i+vmIDBase)
324-
snap := snapshotting.NewSnapshot(revision, "/fccd/snapshots", testImageName)
328+
snap := snapshotting.NewSnapshot(revision, "/fccd/snapshots", *testImage)
325329
err = snap.CreateSnapDir()
326330
require.NoError(t, err, "Failed to create snapshots directory")
327331

@@ -356,7 +360,7 @@ func TestParallelPhasedSnapLoad(t *testing.T) {
356360
go func(i int) {
357361
defer vmGroup.Done()
358362
vmID := fmt.Sprintf("%d", i+vmIDBase)
359-
snap := snapshotting.NewSnapshot(vmID, "/fccd/snapshots", testImageName)
363+
snap := snapshotting.NewSnapshot(vmID, "/fccd/snapshots", *testImage)
360364
vmIDInt, _ := strconv.Atoi(vmID)
361365
vmID = strconv.Itoa(vmIDInt + 1)
362366
_, _, err := orch.LoadSnapshot(ctx, vmID, snap)
@@ -420,20 +424,21 @@ func TestRemoteSnapCreate(t *testing.T) {
420424
require.NoError(t, err, "Failed to create remote snapshots directory")
421425

422426
orch := NewOrchestrator(
423-
"devmapper",
427+
*snapshotter,
424428
"",
425429
WithTestModeOn(true),
426430
WithUPF(*isUPFEnabled),
427431
WithLazyMode(*isLazyMode),
432+
WithDockerCredentials(*dockerCredentials),
428433
)
429434

430-
_, _, err = orch.StartVM(ctx, vmID, testImageName)
435+
_, _, err = orch.StartVM(ctx, vmID, *testImage)
431436
require.NoError(t, err, "Failed to start VM")
432437

433438
err = orch.PauseVM(ctx, vmID)
434439
require.NoError(t, err, "Failed to pause VM")
435440

436-
snap := snapshotting.NewSnapshot(revision, remoteSnapshotsDir, testImageName)
441+
snap := snapshotting.NewSnapshot(revision, remoteSnapshotsDir, *testImage)
437442
_ = snap.Cleanup()
438443
err = snap.CreateSnapDir()
439444
require.NoError(t, err, "Failed to create remote snapshots directory")
@@ -473,14 +478,15 @@ func TestRemoteSnapLoad(t *testing.T) {
473478
require.NoError(t, err, "Failed to stat remote snapshots directory")
474479

475480
orch := NewOrchestrator(
476-
"devmapper",
481+
*snapshotter,
477482
"",
478483
WithTestModeOn(true),
479484
WithUPF(*isUPFEnabled),
480485
WithLazyMode(*isLazyMode),
486+
WithDockerCredentials(*dockerCredentials),
481487
)
482488

483-
snap := snapshotting.NewSnapshot(revision, remoteSnapshotsDir, testImageName)
489+
snap := snapshotting.NewSnapshot(revision, remoteSnapshotsDir, *testImage)
484490

485491
_, _, err = orch.LoadSnapshot(ctx, vmID, snap)
486492
require.NoError(t, err, "Failed to load remote snapshot of VM")

scripts/stargz/setup_stargz.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func SetupStargz(sandbox string) error {
3333
if sandbox == "firecracker" {
3434
_, err = utils.ExecVHiveBashScript("scripts/stargz/setup_demux_snapshotter.sh")
3535

36-
bashCmd := `sudo sysctl --quiet -w net.ipv4.conf.all.forwarding=1 && ` +
36+
bashCmd := `sudo sysctl --quiet -w net.ipv4.conf.all.forwarding=1 && ` +
3737
`sudo sysctl --quiet -w net.ipv4.ip_forward=1 && ` +
3838
`sudo sysctl --quiet --system`
3939

0 commit comments

Comments
 (0)