Skip to content

Commit ddf5791

Browse files
committed
Adjust unit tests of ToPack based on the refactoring
Adjust the unit tests according to the changes that have been made in ToPack during the refactoring. Signed-off-by: Charalampos Mainas <cmainas@nubificus.co.uk>
1 parent 3084363 commit ddf5791

File tree

1 file changed

+97
-119
lines changed

1 file changed

+97
-119
lines changed

hops/package_test.go

Lines changed: 97 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,57 @@ import (
2626
"github.com/stretchr/testify/require"
2727
)
2828

29+
func TestPackHandleKernel(t *testing.T) {
30+
t.Run("Local", func(t *testing.T) {
31+
p := Platform{
32+
Framework: "rumprun",
33+
Monitor: "qemu",
34+
}
35+
r := Rootfs{}
36+
k := Kernel{
37+
From: "local",
38+
Path: "kernel",
39+
}
40+
f := NewGeneric(p, r)
41+
42+
e, err := handleKernel(f, "context", "mon", k)
43+
require.NoError(t, err)
44+
require.NotNil(t, e)
45+
require.Equal(t, k.From, e.SourceRef)
46+
require.Equal(t, k.Path, e.FilePath)
47+
def, err := e.SourceState.Marshal(context.TODO())
48+
require.NoError(t, err)
49+
_, arr := parseDef(t, def.Def)
50+
require.Equal(t, 2, len(arr))
51+
s := arr[0].Op.(*pb.Op_Source).Source
52+
require.Equal(t, "local://context", s.Identifier)
53+
})
54+
t.Run("Registry", func(t *testing.T) {
55+
p := Platform{
56+
Framework: "rumprun",
57+
Monitor: "qemu",
58+
}
59+
r := Rootfs{}
60+
k := Kernel{
61+
From: "harbor.nbfc.io/foo",
62+
Path: "kernel",
63+
}
64+
f := NewGeneric(p, r)
65+
66+
e, err := handleKernel(f, "context", "mon", k)
67+
require.NoError(t, err)
68+
require.NotNil(t, e)
69+
require.Equal(t, k.From, e.SourceRef)
70+
require.Equal(t, k.Path, e.FilePath)
71+
def, err := e.SourceState.Marshal(context.TODO())
72+
require.NoError(t, err)
73+
_, arr := parseDef(t, def.Def)
74+
require.Equal(t, 2, len(arr))
75+
s := arr[0].Op.(*pb.Op_Source).Source
76+
require.Equal(t, "docker-image://harbor.nbfc.io/foo:latest", s.Identifier)
77+
})
78+
}
79+
2980
func TestPackToPack(t *testing.T) {
3081
t.Run("Kernel local rootfs none", func(t *testing.T) {
3182
hops := &Hops{
@@ -100,58 +151,6 @@ func TestPackToPack(t *testing.T) {
100151
s := arr[0].Op.(*pb.Op_Source).Source
101152
require.Equal(t, "docker-image://harbor.nbfc.io/foo:latest", s.Identifier)
102153
})
103-
t.Run("Kernel local rootfs local initrd type none", func(t *testing.T) {
104-
hops := &Hops{
105-
Platform: Platform{
106-
Framework: "linux",
107-
Monitor: "qemu",
108-
},
109-
Kernel: Kernel{
110-
From: "local",
111-
Path: "kernel",
112-
},
113-
Rootfs: Rootfs{
114-
From: "local",
115-
Path: "rootfs",
116-
},
117-
Cmd: "cmd",
118-
}
119-
i, err := ToPack(hops, "context")
120-
require.NoError(t, err)
121-
require.NotNil(t, i)
122-
require.Equal(t, "false", i.Annots["com.urunc.unikernel.mountRootfs"])
123-
require.Equal(t, hops.Platform.Framework, i.Annots["com.urunc.unikernel.unikernelType"])
124-
require.Equal(t, hops.Platform.Monitor, i.Annots["com.urunc.unikernel.hypervisor"])
125-
require.Equal(t, hops.Cmd, i.Annots["com.urunc.unikernel.cmdline"])
126-
require.Equal(t, DefaultKernelPath, i.Annots["com.urunc.unikernel.binary"])
127-
require.Empty(t, i.Annots["com.urunc.unikernel.initrd"])
128-
require.Empty(t, i.Annots["com.urunc.unikernel.unikernelVersion"])
129-
require.Empty(t, i.Annots["com.urunc.unikernel.blkMntPoint"])
130-
require.Empty(t, i.Annots["com.urunc.unikernel.block"])
131-
require.Equal(t, 2, len(i.Copies))
132-
kc := i.Copies[0]
133-
require.Equal(t, DefaultKernelPath, kc.DstPath)
134-
require.Equal(t, hops.Kernel.Path, kc.SrcPath)
135-
kcDef, err := kc.SrcState.Marshal(context.TODO())
136-
require.NoError(t, err)
137-
_, kcArr := parseDef(t, kcDef.Def)
138-
require.Equal(t, 2, len(kcArr))
139-
kcs := kcArr[0].Op.(*pb.Op_Source).Source
140-
require.Equal(t, "local://context", kcs.Identifier)
141-
rc := i.Copies[1]
142-
require.Equal(t, DefaultRootfsPath, rc.DstPath)
143-
require.Equal(t, hops.Rootfs.Path, rc.SrcPath)
144-
rcDef, err := rc.SrcState.Marshal(context.TODO())
145-
require.NoError(t, err)
146-
_, rcArr := parseDef(t, rcDef.Def)
147-
require.Equal(t, 2, len(rcArr))
148-
rcs := rcArr[0].Op.(*pb.Op_Source).Source
149-
require.Equal(t, "local://context", rcs.Identifier)
150-
def, err := i.Base.Marshal(context.TODO())
151-
require.NoError(t, err)
152-
_, arr := parseDef(t, def.Def)
153-
require.Equal(t, 0, len(arr))
154-
})
155154
t.Run("Kernel local rootfs local initrd type none implies initrd", func(t *testing.T) {
156155
hops := &Hops{
157156
Platform: Platform{
@@ -258,7 +257,7 @@ func TestPackToPack(t *testing.T) {
258257
_, arr := parseDef(t, def.Def)
259258
require.Equal(t, 0, len(arr))
260259
})
261-
t.Run("Kernel local rootfs remote type initrd ", func(t *testing.T) {
260+
t.Run("Kernel local rootfs remote type initrd", func(t *testing.T) {
262261
hops := &Hops{
263262
Platform: Platform{
264263
Framework: "linux",
@@ -283,11 +282,11 @@ func TestPackToPack(t *testing.T) {
283282
require.Equal(t, hops.Platform.Monitor, i.Annots["com.urunc.unikernel.hypervisor"])
284283
require.Equal(t, hops.Cmd, i.Annots["com.urunc.unikernel.cmdline"])
285284
require.Equal(t, DefaultKernelPath, i.Annots["com.urunc.unikernel.binary"])
286-
require.Equal(t, DefaultRootfsPath, i.Annots["com.urunc.unikernel.initrd"])
285+
require.Equal(t, hops.Rootfs.Path, i.Annots["com.urunc.unikernel.initrd"])
287286
require.Empty(t, i.Annots["com.urunc.unikernel.unikernelVersion"])
288287
require.Empty(t, i.Annots["com.urunc.unikernel.blkMntPoint"])
289288
require.Empty(t, i.Annots["com.urunc.unikernel.block"])
290-
require.Equal(t, 2, len(i.Copies))
289+
require.Equal(t, 1, len(i.Copies))
291290
kc := i.Copies[0]
292291
require.Equal(t, DefaultKernelPath, kc.DstPath)
293292
require.Equal(t, hops.Kernel.Path, kc.SrcPath)
@@ -297,22 +296,15 @@ func TestPackToPack(t *testing.T) {
297296
require.Equal(t, 2, len(kcArr))
298297
kcs := kcArr[0].Op.(*pb.Op_Source).Source
299298
require.Equal(t, "local://context", kcs.Identifier)
300-
rc := i.Copies[1]
301-
require.Equal(t, DefaultRootfsPath, rc.DstPath)
302-
require.Equal(t, hops.Rootfs.Path, rc.SrcPath)
303-
rcDef, err := rc.SrcState.Marshal(context.TODO())
304-
require.NoError(t, err)
305-
_, rcArr := parseDef(t, rcDef.Def)
306-
require.Equal(t, 2, len(rcArr))
307-
rcs := rcArr[0].Op.(*pb.Op_Source).Source
308-
require.Equal(t, "docker-image://harbor.nbfc.io/foo:latest", rcs.Identifier)
309299
def, err := i.Base.Marshal(context.TODO())
310300
require.NoError(t, err)
311301
_, arr := parseDef(t, def.Def)
312-
require.Equal(t, 0, len(arr))
302+
require.Equal(t, 2, len(arr))
303+
sb := arr[0].Op.(*pb.Op_Source).Source
304+
require.Equal(t, "docker-image://harbor.nbfc.io/foo:latest", sb.Identifier)
313305
})
314306
// nolint: dupl
315-
t.Run("Kernel local rootfs remote type none implies raw ", func(t *testing.T) {
307+
t.Run("Kernel local rootfs remote type none implies raw", func(t *testing.T) {
316308
hops := &Hops{
317309
Platform: Platform{
318310
Framework: "linux",
@@ -384,7 +376,7 @@ func TestPackToPack(t *testing.T) {
384376
require.Empty(t, i.Annots["com.urunc.unikernel.unikernelVersion"])
385377
require.Empty(t, i.Annots["com.urunc.unikernel.blkMntPoint"])
386378
require.Empty(t, i.Annots["com.urunc.unikernel.block"])
387-
require.Equal(t, 1, len(i.Copies))
379+
require.Equal(t, 2, len(i.Copies))
388380
kc := i.Copies[0]
389381
require.Equal(t, DefaultKernelPath, kc.DstPath)
390382
require.Equal(t, hops.Kernel.Path, kc.SrcPath)
@@ -394,17 +386,24 @@ func TestPackToPack(t *testing.T) {
394386
require.Equal(t, 2, len(kcArr))
395387
kcs := kcArr[0].Op.(*pb.Op_Source).Source
396388
require.Equal(t, "local://context", kcs.Identifier)
397-
def, err := i.Base.Marshal(context.TODO())
398-
require.NoError(t, err)
399-
m, arr := parseDef(t, def.Def)
389+
rc := i.Copies[1]
390+
require.Equal(t, DefaultRootfsPath, rc.DstPath)
391+
require.Equal(t, DefaultRootfsPath, rc.SrcPath)
392+
rcDef, err := rc.SrcState.Marshal(context.TODO())
393+
require.NoError(t, err)
394+
rm, rcArr := parseDef(t, rcDef.Def)
400395
// It should the same as TestUnikraftCreateRootfs
401-
require.Equal(t, 7, len(arr))
402-
last := arr[len(arr)-1]
396+
require.Equal(t, 7, len(rcArr))
397+
last := rcArr[len(rcArr)-1]
403398
require.Equal(t, 1, len(last.Inputs))
404399
lastInputDgst := last.Inputs[0].Digest
405-
require.Equal(t, m[lastInputDgst], arr[5])
406-
e := arr[5]
400+
require.Equal(t, rm[lastInputDgst], rcArr[5])
401+
e := rcArr[5]
407402
require.Equal(t, 3, len(e.Inputs))
403+
def, err := i.Base.Marshal(context.TODO())
404+
require.NoError(t, err)
405+
_, arr := parseDef(t, def.Def)
406+
require.Equal(t, 0, len(arr))
408407
})
409408
t.Run("Kernel local rootfs scratch type none implies raw with include", func(t *testing.T) {
410409
hops := &Hops{
@@ -457,7 +456,7 @@ func TestPackToPack(t *testing.T) {
457456
t.Run("Kernel registry rootfs local initrd type none", func(t *testing.T) {
458457
hops := &Hops{
459458
Platform: Platform{
460-
Framework: "linux",
459+
Framework: "unikraft",
461460
Monitor: "qemu",
462461
},
463462
Kernel: Kernel{
@@ -478,7 +477,7 @@ func TestPackToPack(t *testing.T) {
478477
require.Equal(t, hops.Platform.Monitor, i.Annots["com.urunc.unikernel.hypervisor"])
479478
require.Equal(t, hops.Cmd, i.Annots["com.urunc.unikernel.cmdline"])
480479
require.Equal(t, hops.Kernel.Path, i.Annots["com.urunc.unikernel.binary"])
481-
require.Empty(t, i.Annots["com.urunc.unikernel.initrd"])
480+
require.Equal(t, DefaultRootfsPath, i.Annots["com.urunc.unikernel.initrd"])
482481
require.Empty(t, i.Annots["com.urunc.unikernel.unikernelVersion"])
483482
require.Empty(t, i.Annots["com.urunc.unikernel.blkMntPoint"])
484483
require.Empty(t, i.Annots["com.urunc.unikernel.block"])
@@ -499,7 +498,7 @@ func TestPackToPack(t *testing.T) {
499498
s := arr[0].Op.(*pb.Op_Source).Source
500499
require.Equal(t, "docker-image://harbor.nbfc.io/foo:latest", s.Identifier)
501500
})
502-
t.Run("Kernel remote rootfs remote type initrd ", func(t *testing.T) {
501+
t.Run("Kernel remote rootfs remote type initrd", func(t *testing.T) {
503502
hops := &Hops{
504503
Platform: Platform{
505504
Framework: "linux",
@@ -523,21 +522,21 @@ func TestPackToPack(t *testing.T) {
523522
require.Equal(t, hops.Platform.Framework, i.Annots["com.urunc.unikernel.unikernelType"])
524523
require.Equal(t, hops.Platform.Monitor, i.Annots["com.urunc.unikernel.hypervisor"])
525524
require.Equal(t, hops.Cmd, i.Annots["com.urunc.unikernel.cmdline"])
526-
require.Equal(t, hops.Kernel.Path, i.Annots["com.urunc.unikernel.binary"])
527-
require.Equal(t, DefaultRootfsPath, i.Annots["com.urunc.unikernel.initrd"])
525+
require.Equal(t, DefaultKernelPath, i.Annots["com.urunc.unikernel.binary"])
526+
require.Equal(t, hops.Rootfs.Path, i.Annots["com.urunc.unikernel.initrd"])
528527
require.Empty(t, i.Annots["com.urunc.unikernel.unikernelVersion"])
529528
require.Empty(t, i.Annots["com.urunc.unikernel.blkMntPoint"])
530529
require.Empty(t, i.Annots["com.urunc.unikernel.block"])
531530
require.Equal(t, 1, len(i.Copies))
532-
rc := i.Copies[0]
533-
require.Equal(t, DefaultRootfsPath, rc.DstPath)
534-
require.Equal(t, hops.Rootfs.Path, rc.SrcPath)
535-
rcDef, err := rc.SrcState.Marshal(context.TODO())
531+
kc := i.Copies[0]
532+
require.Equal(t, DefaultKernelPath, kc.DstPath)
533+
require.Equal(t, hops.Kernel.Path, kc.SrcPath)
534+
kcDef, err := kc.SrcState.Marshal(context.TODO())
536535
require.NoError(t, err)
537-
_, rcArr := parseDef(t, rcDef.Def)
538-
require.Equal(t, 2, len(rcArr))
539-
rcs := rcArr[0].Op.(*pb.Op_Source).Source
540-
require.Equal(t, "docker-image://harbor.nbfc.io/foo:latest", rcs.Identifier)
536+
_, kcArr := parseDef(t, kcDef.Def)
537+
require.Equal(t, 2, len(kcArr))
538+
kcs := kcArr[0].Op.(*pb.Op_Source).Source
539+
require.Equal(t, "docker-image://harbor.nbfc.io/foo:latest", kcs.Identifier)
541540
def, err := i.Base.Marshal(context.TODO())
542541
require.NoError(t, err)
543542
_, arr := parseDef(t, def.Def)
@@ -613,24 +612,18 @@ func TestPackToPack(t *testing.T) {
613612
require.Equal(t, hops.Platform.Framework, i.Annots["com.urunc.unikernel.unikernelType"])
614613
require.Equal(t, hops.Platform.Monitor, i.Annots["com.urunc.unikernel.hypervisor"])
615614
require.Equal(t, hops.Cmd, i.Annots["com.urunc.unikernel.cmdline"])
616-
require.Equal(t, DefaultKernelPath, i.Annots["com.urunc.unikernel.binary"])
615+
require.Equal(t, hops.Kernel.Path, i.Annots["com.urunc.unikernel.binary"])
617616
require.Equal(t, DefaultRootfsPath, i.Annots["com.urunc.unikernel.initrd"])
618617
require.Empty(t, i.Annots["com.urunc.unikernel.unikernelVersion"])
619618
require.Empty(t, i.Annots["com.urunc.unikernel.blkMntPoint"])
620619
require.Empty(t, i.Annots["com.urunc.unikernel.block"])
621620
require.Equal(t, 1, len(i.Copies))
622-
kc := i.Copies[0]
623-
require.Equal(t, DefaultKernelPath, kc.DstPath)
624-
require.Equal(t, hops.Kernel.Path, kc.SrcPath)
625-
kcDef, err := kc.SrcState.Marshal(context.TODO())
626-
require.NoError(t, err)
627-
_, kcArr := parseDef(t, kcDef.Def)
628-
require.Equal(t, 2, len(kcArr))
629-
kcs := kcArr[0].Op.(*pb.Op_Source).Source
630-
require.Equal(t, "docker-image://harbor.nbfc.io/bar:latest", kcs.Identifier)
631-
def, err := i.Base.Marshal(context.TODO())
621+
rc := i.Copies[0]
622+
require.Equal(t, DefaultRootfsPath, rc.DstPath)
623+
require.Equal(t, DefaultRootfsPath, rc.SrcPath)
624+
rcDef, err := rc.SrcState.Marshal(context.TODO())
632625
require.NoError(t, err)
633-
m, arr := parseDef(t, def.Def)
626+
m, arr := parseDef(t, rcDef.Def)
634627
// It should the same as TestUnikraftCreateRootfs
635628
require.Equal(t, 7, len(arr))
636629
last := arr[len(arr)-1]
@@ -639,6 +632,11 @@ func TestPackToPack(t *testing.T) {
639632
require.Equal(t, m[lastInputDgst], arr[5])
640633
e := arr[5]
641634
require.Equal(t, 3, len(e.Inputs))
635+
def, err := i.Base.Marshal(context.TODO())
636+
_, arr = parseDef(t, def.Def)
637+
require.Equal(t, 2, len(arr))
638+
s := arr[0].Op.(*pb.Op_Source).Source
639+
require.Equal(t, "docker-image://harbor.nbfc.io/bar:latest", s.Identifier)
642640
})
643641
t.Run("Invalid rootfs type unsupported", func(t *testing.T) {
644642
hops := &Hops{
@@ -661,26 +659,6 @@ func TestPackToPack(t *testing.T) {
661659
require.ErrorContains(t, err, "Cannot build foo")
662660
require.Nil(t, i)
663661
})
664-
t.Run("Invalid rootfs from scratch and path", func(t *testing.T) {
665-
hops := &Hops{
666-
Platform: Platform{
667-
Framework: "rumprun",
668-
Monitor: "qemu",
669-
},
670-
Kernel: Kernel{
671-
From: "local",
672-
Path: "kernel",
673-
},
674-
Rootfs: Rootfs{
675-
From: "scratch",
676-
Path: "kernel",
677-
},
678-
Cmd: "cmd",
679-
}
680-
i, err := ToPack(hops, "context")
681-
require.ErrorContains(t, err, "invalid combination of from")
682-
require.Nil(t, i)
683-
})
684662
// TODO: Resume below test when a new framework that does not support
685663
// raw rootfs is introduced (e.g. Mewz, Rumprun)
686664
// t.Run("Invalid rootfs from registry implies unsupported raw rootfs type", func(t *testing.T) {

0 commit comments

Comments
 (0)