Skip to content

Commit 7bd3c46

Browse files
committed
Add iface tests
1 parent 1e09660 commit 7bd3c46

File tree

7 files changed

+138
-70
lines changed

7 files changed

+138
-70
lines changed

ctriface/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ EXTRAGOARGS:=-v -race -cover
2424
EXTRATESTFILES:=iface_test.go iface.go orch_options.go orch.go
2525
BENCHFILES:=bench_test.go iface.go orch_options.go orch.go
2626
WITHUPF:=-upf
27+
WITHFULLLOCAL:=-fulllocal
2728
WITHLAZY:=-lazy
2829
GOBENCH:=-v -timeout 1500s
2930
CTRDLOGDIR:=/tmp/ctrd-logs
@@ -33,6 +34,7 @@ test:
3334
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 &
3435
sudo env "PATH=$(PATH)" go test $(EXTRATESTFILES) $(EXTRAGOARGS)
3536
sudo env "PATH=$(PATH)" go test $(EXTRATESTFILES) $(EXTRAGOARGS) -args $(WITHUPF)
37+
sudo env "PATH=$(PATH)" go test $(EXTRATESTFILES) $(EXTRAGOARGS) -args $(WITHFULLLOCAL)
3638
./../scripts/clean_fcctr.sh
3739

3840
test-man:

ctriface/failing_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,18 +62,20 @@ func TestStartSnapStop(t *testing.T) {
6262
)
6363

6464
vmID := "2"
65-
revisionID := "myrev-2"
6665

6766
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, false, false)
6867
require.NoError(t, err, "Failed to start VM")
6968

7069
err = orch.PauseVM(ctx, vmID)
7170
require.NoError(t, err, "Failed to pause VM")
7271

73-
snap := snapshotting.NewSnapshot(revisionID, "/fccd/snapshots", TestImageName, 0, 0, false)
72+
snap := snapshotting.NewSnapshot(vmID, "/fccd/snapshots", TestImageName, 256, 1, false)
7473
err = orch.CreateSnapshot(ctx, vmID, snap, false)
7574
require.NoError(t, err, "Failed to create snapshot of VM")
7675

76+
err = orch.OffloadVM(ctx, vmID, false)
77+
require.NoError(t, err, "Failed to offload VM")
78+
7779
_, _, err = orch.LoadSnapshot(ctx, vmID, snap, false)
7880
require.NoError(t, err, "Failed to load snapshot of VM")
7981

ctriface/iface.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,6 @@ const (
5858
TestImageName = "ghcr.io/ease-lab/helloworld:var_workload"
5959
)
6060

61-
// TODO: isFullLocql param for all functions
62-
6361
// StartVM Boots a VM if it does not exist
6462
func (o *Orchestrator) StartVM(ctx context.Context, vmID, imageName string, memSizeMib ,vCPUCount uint32, trackDirtyPages, isFullLocal bool) (_ *StartVMResponse, _ *metrics.Metric, retErr error) {
6563
var (

ctriface/iface_test.go

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ import (
4040
// TODO: Make it impossible to use lazy mode without UPF
4141
var (
4242
isUPFEnabled = flag.Bool("upf", false, "Set UPF enabled")
43+
isFullLocal = flag.Bool("fulllocal", false, "Set full local snapshots")
44+
isSparseSnaps = flag.Bool("sparsesnaps", false, "Use sparse snapshots")
4345
isLazyMode = flag.Bool("lazy", false, "Set lazy serving on or off")
4446
//nolint:deadcode,unused,varcheck
4547
isWithCache = flag.Bool("withCache", false, "Do not drop the cache before measurements")
@@ -72,22 +74,25 @@ func TestPauseSnapResume(t *testing.T) {
7274
)
7375

7476
vmID := "4"
75-
revisionID := "myrev-4"
77+
snapId := vmID
78+
if *isFullLocal {
79+
snapId = "myrev-4"
80+
}
7681

77-
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, false, false)
82+
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, *isSparseSnaps, *isFullLocal)
7883
require.NoError(t, err, "Failed to start VM")
7984

8085
err = orch.PauseVM(ctx, vmID)
8186
require.NoError(t, err, "Failed to pause VM")
8287

83-
snap := snapshotting.NewSnapshot(revisionID, "/fccd/snapshots", TestImageName, 0, 0, false)
84-
err = orch.CreateSnapshot(ctx, vmID, snap, false)
88+
snap := snapshotting.NewSnapshot(snapId, "/fccd/snapshots", TestImageName, 256, 1, *isSparseSnaps)
89+
err = orch.CreateSnapshot(ctx, vmID, snap, *isFullLocal)
8590
require.NoError(t, err, "Failed to create snapshot of VM")
8691

8792
_, err = orch.ResumeVM(ctx, vmID)
8893
require.NoError(t, err, "Failed to resume VM")
8994

90-
err = orch.StopSingleVM(ctx, vmID, false)
95+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
9196
require.NoError(t, err, "Failed to stop VM")
9297

9398
orch.Cleanup()
@@ -121,10 +126,10 @@ func TestStartStopSerial(t *testing.T) {
121126

122127
vmID := "5"
123128

124-
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, false, false)
129+
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, *isSparseSnaps, *isFullLocal)
125130
require.NoError(t, err, "Failed to start VM")
126131

127-
err = orch.StopSingleVM(ctx, vmID, false)
132+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
128133
require.NoError(t, err, "Failed to stop VM")
129134

130135
orch.Cleanup()
@@ -158,7 +163,7 @@ func TestPauseResumeSerial(t *testing.T) {
158163

159164
vmID := "6"
160165

161-
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, false, false)
166+
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, *isSparseSnaps, *isFullLocal)
162167
require.NoError(t, err, "Failed to start VM")
163168

164169
err = orch.PauseVM(ctx, vmID)
@@ -167,7 +172,7 @@ func TestPauseResumeSerial(t *testing.T) {
167172
_, err = orch.ResumeVM(ctx, vmID)
168173
require.NoError(t, err, "Failed to resume VM")
169174

170-
err = orch.StopSingleVM(ctx, vmID, false)
175+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
171176
require.NoError(t, err, "Failed to stop VM")
172177

173178
orch.Cleanup()
@@ -211,7 +216,7 @@ func TestStartStopParallel(t *testing.T) {
211216
go func(i int) {
212217
defer vmGroup.Done()
213218
vmID := fmt.Sprintf("%d", i)
214-
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, false, false)
219+
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, *isSparseSnaps, *isFullLocal)
215220
require.NoError(t, err, "Failed to start VM "+vmID)
216221
}(i)
217222
}
@@ -225,7 +230,7 @@ func TestStartStopParallel(t *testing.T) {
225230
go func(i int) {
226231
defer vmGroup.Done()
227232
vmID := fmt.Sprintf("%d", i)
228-
err := orch.StopSingleVM(ctx, vmID, false)
233+
err := orch.StopSingleVM(ctx, vmID, *isFullLocal)
229234
require.NoError(t, err, "Failed to stop VM "+vmID)
230235
}(i)
231236
}
@@ -273,7 +278,7 @@ func TestPauseResumeParallel(t *testing.T) {
273278
go func(i int) {
274279
defer vmGroup.Done()
275280
vmID := fmt.Sprintf("%d", i)
276-
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, false, false)
281+
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, *isSparseSnaps, *isFullLocal)
277282
require.NoError(t, err, "Failed to start VM")
278283
}(i)
279284
}
@@ -315,7 +320,7 @@ func TestPauseResumeParallel(t *testing.T) {
315320
go func(i int) {
316321
defer vmGroup.Done()
317322
vmID := fmt.Sprintf("%d", i)
318-
err := orch.StopSingleVM(ctx, vmID, false)
323+
err := orch.StopSingleVM(ctx, vmID, *isFullLocal)
319324
require.NoError(t, err, "Failed to stop VM")
320325
}(i)
321326
}

ctriface/manual_cleanup_test.go

Lines changed: 112 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -66,27 +66,41 @@ func TestSnapLoad(t *testing.T) {
6666
)
6767

6868
vmID := "1"
69-
revisionID := "myrev-1"
69+
snapId := vmID
70+
if *isFullLocal {
71+
snapId = "myrev-1"
72+
}
7073

71-
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, false, false)
74+
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, *isSparseSnaps, *isFullLocal)
7275
require.NoError(t, err, "Failed to start VM")
7376

7477
err = orch.PauseVM(ctx, vmID)
7578
require.NoError(t, err, "Failed to pause VM")
7679

77-
snap := snapshotting.NewSnapshot(revisionID, "/fccd/snapshots", TestImageName, 0, 0, false)
78-
err = orch.CreateSnapshot(ctx, vmID, snap, false)
80+
snap := snapshotting.NewSnapshot(snapId, "/fccd/snapshots", TestImageName, 256, 1, *isSparseSnaps)
81+
err = orch.CreateSnapshot(ctx, vmID, snap, *isFullLocal)
7982
require.NoError(t, err, "Failed to create snapshot of VM")
8083

8184
_, err = orch.ResumeVM(ctx, vmID)
8285
require.NoError(t, err, "Failed to resume VM")
8386

84-
_, _, err = orch.LoadSnapshot(ctx, vmID, snap, false)
87+
if *isFullLocal {
88+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
89+
require.NoError(t, err, "Failed to stop VM")
90+
} else {
91+
err = orch.OffloadVM(ctx, vmID, *isFullLocal)
92+
require.NoError(t, err, "Failed to offload VM")
93+
}
94+
95+
_, _, err = orch.LoadSnapshot(ctx, vmID, snap, *isFullLocal)
8596
require.NoError(t, err, "Failed to load snapshot of VM")
8697

8798
_, err = orch.ResumeVM(ctx, vmID)
8899
require.NoError(t, err, "Failed to resume VM")
89100

101+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
102+
require.NoError(t, err, "Failed to stop VM")
103+
90104
orch.Cleanup()
91105
}
92106

@@ -118,30 +132,52 @@ func TestSnapLoadMultiple(t *testing.T) {
118132
)
119133

120134
vmID := "3"
121-
revisionID := "myrev-3"
135+
snapId := vmID
136+
if *isFullLocal {
137+
snapId = "myrev-3"
138+
}
122139

123-
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, false, false)
140+
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, *isSparseSnaps, *isFullLocal)
124141
require.NoError(t, err, "Failed to start VM")
125142

126143
err = orch.PauseVM(ctx, vmID)
127144
require.NoError(t, err, "Failed to pause VM")
128145

129-
snap := snapshotting.NewSnapshot(revisionID, "/fccd/snapshots", TestImageName, 0, 0,false)
130-
err = orch.CreateSnapshot(ctx, vmID, snap, false)
146+
snap := snapshotting.NewSnapshot(snapId, "/fccd/snapshots", TestImageName, 256, 1, *isSparseSnaps)
147+
err = orch.CreateSnapshot(ctx, vmID, snap, *isFullLocal)
131148
require.NoError(t, err, "Failed to create snapshot of VM")
132149

133-
_, _, err = orch.LoadSnapshot(ctx, vmID, snap, false)
150+
if *isFullLocal {
151+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
152+
require.NoError(t, err, "Failed to stop VM")
153+
} else {
154+
err = orch.OffloadVM(ctx, vmID, *isFullLocal)
155+
require.NoError(t, err, "Failed to offload VM")
156+
}
157+
158+
_, _, err = orch.LoadSnapshot(ctx, vmID, snap, *isFullLocal)
134159
require.NoError(t, err, "Failed to load snapshot of VM")
135160

136161
_, err = orch.ResumeVM(ctx, vmID)
137162
require.NoError(t, err, "Failed to resume VM")
138163

139-
_, _, err = orch.LoadSnapshot(ctx, vmID, snap, false)
164+
if *isFullLocal {
165+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
166+
require.NoError(t, err, "Failed to stop VM")
167+
} else {
168+
err = orch.OffloadVM(ctx, vmID, *isFullLocal)
169+
require.NoError(t, err, "Failed to offload VM")
170+
}
171+
172+
_, _, err = orch.LoadSnapshot(ctx, vmID, snap, *isFullLocal)
140173
require.NoError(t, err, "Failed to load snapshot of VM")
141174

142175
_, err = orch.ResumeVM(ctx, vmID)
143176
require.NoError(t, err, "Failed to resume VM, ")
144177

178+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
179+
require.NoError(t, err, "Failed to stop VM")
180+
145181
orch.Cleanup()
146182
}
147183

@@ -185,23 +221,37 @@ func TestParallelSnapLoad(t *testing.T) {
185221
go func(i int) {
186222
defer vmGroup.Done()
187223
vmID := fmt.Sprintf("%d", i+vmIDBase)
188-
revisionID := fmt.Sprintf("myrev-%d", i+vmIDBase)
224+
snapId := vmID
225+
if *isFullLocal {
226+
snapId = fmt.Sprintf("myrev-%d", i+vmIDBase)
227+
}
189228

190-
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, false, false)
229+
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, *isSparseSnaps, *isFullLocal)
191230
require.NoError(t, err, "Failed to start VM, "+vmID)
192231

193232
err = orch.PauseVM(ctx, vmID)
194233
require.NoError(t, err, "Failed to pause VM, "+vmID)
195234

196-
snap := snapshotting.NewSnapshot(revisionID, "/fccd/snapshots", TestImageName, 0, 0, false)
197-
err = orch.CreateSnapshot(ctx, vmID, snap, false)
235+
snap := snapshotting.NewSnapshot(snapId, "/fccd/snapshots", TestImageName, 256, 1, *isSparseSnaps)
236+
err = orch.CreateSnapshot(ctx, vmID, snap, *isFullLocal)
198237
require.NoError(t, err, "Failed to create snapshot of VM, "+vmID)
199238

200-
_, _, err = orch.LoadSnapshot(ctx, vmID, snap, false)
239+
if *isFullLocal {
240+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
241+
require.NoError(t, err, "Failed to stop VM, "+vmID)
242+
} else {
243+
err = orch.OffloadVM(ctx, vmID, *isFullLocal)
244+
require.NoError(t, err, "Failed to offload VM, "+vmID)
245+
}
246+
247+
_, _, err = orch.LoadSnapshot(ctx, vmID, snap, *isFullLocal)
201248
require.NoError(t, err, "Failed to load snapshot of VM, "+vmID)
202249

203250
_, err = orch.ResumeVM(ctx, vmID)
204251
require.NoError(t, err, "Failed to resume VM, "+vmID)
252+
253+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
254+
require.NoError(t, err, "Failed to stop VM, "+vmID)
205255
}(i)
206256
}
207257
vmGroup.Wait()
@@ -250,7 +300,7 @@ func TestParallelPhasedSnapLoad(t *testing.T) {
250300
go func(i int) {
251301
defer vmGroup.Done()
252302
vmID := fmt.Sprintf("%d", i+vmIDBase)
253-
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, false, false)
303+
_, _, err := orch.StartVM(ctx, vmID, TestImageName, 256, 1, *isSparseSnaps, *isFullLocal)
254304
require.NoError(t, err, "Failed to start VM, "+vmID)
255305
}(i)
256306
}
@@ -278,9 +328,12 @@ func TestParallelPhasedSnapLoad(t *testing.T) {
278328
go func(i int) {
279329
defer vmGroup.Done()
280330
vmID := fmt.Sprintf("%d", i+vmIDBase)
281-
revisionID := fmt.Sprintf("myrev-%d", i+vmIDBase)
282-
snap := snapshotting.NewSnapshot(revisionID, "/fccd/snapshots", TestImageName, 0, 0, false)
283-
err = orch.CreateSnapshot(ctx, vmID, snap, false)
331+
snapId := vmID
332+
if *isFullLocal {
333+
snapId = fmt.Sprintf("myrev-%d", i+vmIDBase)
334+
}
335+
snap := snapshotting.NewSnapshot(snapId, "/fccd/snapshots", TestImageName, 256, 1, *isSparseSnaps)
336+
err = orch.CreateSnapshot(ctx, vmID, snap, *isFullLocal)
284337
require.NoError(t, err, "Failed to create snapshot of VM, "+vmID)
285338
}(i)
286339
}
@@ -294,9 +347,31 @@ func TestParallelPhasedSnapLoad(t *testing.T) {
294347
go func(i int) {
295348
defer vmGroup.Done()
296349
vmID := fmt.Sprintf("%d", i+vmIDBase)
297-
revisionID := fmt.Sprintf("myrev-%d", i+vmIDBase)
298-
snap := snapshotting.NewSnapshot(revisionID, "/fccd/snapshots", TestImageName, 0, 0, false)
299-
_, _, err := orch.LoadSnapshot(ctx, vmID, snap, false)
350+
if *isFullLocal {
351+
err = orch.StopSingleVM(ctx, vmID, *isFullLocal)
352+
require.NoError(t, err, "Failed to stop VM, "+vmID)
353+
} else {
354+
err = orch.OffloadVM(ctx, vmID, *isFullLocal)
355+
require.NoError(t, err, "Failed to offload VM, "+vmID)
356+
}
357+
}(i)
358+
}
359+
vmGroup.Wait()
360+
}
361+
362+
{
363+
var vmGroup sync.WaitGroup
364+
for i := 0; i < vmNum; i++ {
365+
vmGroup.Add(1)
366+
go func(i int) {
367+
defer vmGroup.Done()
368+
vmID := fmt.Sprintf("%d", i+vmIDBase)
369+
snapId := vmID
370+
if *isFullLocal {
371+
snapId = fmt.Sprintf("myrev-%d", i+vmIDBase)
372+
}
373+
snap := snapshotting.NewSnapshot(snapId, "/fccd/snapshots", TestImageName, 256, 1, *isSparseSnaps)
374+
_, _, err := orch.LoadSnapshot(ctx, vmID, snap, *isFullLocal)
300375
require.NoError(t, err, "Failed to load snapshot of VM, "+vmID)
301376
}(i)
302377
}
@@ -317,5 +392,19 @@ func TestParallelPhasedSnapLoad(t *testing.T) {
317392
vmGroup.Wait()
318393
}
319394

395+
{
396+
var vmGroup sync.WaitGroup
397+
for i := 0; i < vmNum; i++ {
398+
vmGroup.Add(1)
399+
go func(i int) {
400+
defer vmGroup.Done()
401+
vmID := fmt.Sprintf("%d", i+vmIDBase)
402+
err := orch.StopSingleVM(ctx, vmID, *isFullLocal)
403+
require.NoError(t, err, "Failed to stop VM, "+vmID)
404+
}(i)
405+
}
406+
vmGroup.Wait()
407+
}
408+
320409
orch.Cleanup()
321410
}

0 commit comments

Comments
 (0)