Fix mount tests

Signed-off-by: Itxaka <itxaka@spectrocloud.com>
This commit is contained in:
Itxaka
2023-02-09 16:43:12 +01:00
parent c1ddd58377
commit 7430d6d9a9

View File

@@ -2,6 +2,9 @@ package mount_test
import ( import (
"context" "context"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"os"
"time" "time"
"github.com/kairos-io/immucore/pkg/mount" "github.com/kairos-io/immucore/pkg/mount"
@@ -15,30 +18,46 @@ var _ = Describe("mounting immutable setup", func() {
BeforeEach(func() { BeforeEach(func() {
g = herd.DAG() g = herd.DAG()
Expect(g).ToNot(BeNil())
}) })
Context("simple invocation", func() { Context("simple invocation", func() {
It("mounts base overlay, attempt to mount oem, and updates the fstab", func() { It("mounts base overlay, attempt to mount oem, and updates the fstab", func() {
s := &mount.State{Rootdir: "/"} s := &mount.State{
Logger: log.Output(zerolog.ConsoleWriter{Out: os.Stderr}).With().Logger(),
Rootdir: "/",
TargetImage: "/cOS/myimage.img",
TargetLabel: "COS_LABEL",
MountRoot: true,
}
s.Register(g) err := s.Register(g)
Expect(err).ToNot(HaveOccurred())
dag := g.Analyze() dag := g.Analyze()
Expect(len(dag)).To(Equal(7), s.WriteDAG(g)) // Expect 3 layers Expect(len(dag)).To(Equal(9), s.WriteDAG(g))
Expect(len(dag[0])).To(Equal(1), s.WriteDAG(g)) // 1 Item for each layer, as are tight deps Expect(len(dag[0])).To(Equal(2), s.WriteDAG(g))
Expect(len(dag[1])).To(Equal(1), s.WriteDAG(g)) Expect(len(dag[1])).To(Equal(1), s.WriteDAG(g))
Expect(len(dag[2])).To(Equal(1), s.WriteDAG(g)) Expect(len(dag[2])).To(Equal(1), s.WriteDAG(g))
Expect(len(dag[4])).To(Equal(2), s.WriteDAG(g)) Expect(len(dag[3])).To(Equal(1), s.WriteDAG(g))
Expect(len(dag[4])).To(Equal(1), s.WriteDAG(g))
Expect(len(dag[5])).To(Equal(1), s.WriteDAG(g))
Expect(len(dag[6])).To(Equal(2), s.WriteDAG(g))
Expect(len(dag[7])).To(Equal(1), s.WriteDAG(g))
Expect(len(dag[8])).To(Equal(1), s.WriteDAG(g))
Expect(dag[0][0].Name).To(Equal("mount-base-overlay"), s.WriteDAG(g)) Expect(dag[0][0].Name).To(Or(Equal("mount-base-overlay"), Equal("mount-state")), s.WriteDAG(g))
Expect(dag[1][0].Name).To(Equal("mount-oem"), s.WriteDAG(g)) Expect(dag[0][1].Name).To(Or(Equal("mount-base-overlay"), Equal("mount-state")), s.WriteDAG(g))
Expect(dag[2][0].Name).To(Equal("rootfs-hook"), s.WriteDAG(g)) Expect(dag[1][0].Name).To(Equal("discover-state"), s.WriteDAG(g))
Expect(dag[3][0].Name).To(Equal("load-config"), s.WriteDAG(g)) Expect(dag[2][0].Name).To(Equal("mount-root"), s.WriteDAG(g))
Expect(dag[4][0].Name).To(Or(Equal("overlay-mount"), Equal("custom-mount")), s.WriteDAG(g)) Expect(dag[3][0].Name).To(Equal("mount-oem"), s.WriteDAG(g))
Expect(dag[4][1].Name).To(Or(Equal("overlay-mount"), Equal("custom-mount")), s.WriteDAG(g)) Expect(dag[4][0].Name).To(Equal("rootfs-hook"), s.WriteDAG(g))
Expect(dag[5][0].Name).To(Equal("mount-bind"), s.WriteDAG(g)) Expect(dag[5][0].Name).To(Equal("load-config"), s.WriteDAG(g))
Expect(dag[6][0].Name).To(Equal("write-fstab"), s.WriteDAG(g)) Expect(dag[6][0].Name).To(Or(Equal("overlay-mount"), Equal("custom-mount")), s.WriteDAG(g))
Expect(dag[6][1].Name).To(Or(Equal("overlay-mount"), Equal("custom-mount")), s.WriteDAG(g))
Expect(dag[7][0].Name).To(Equal("mount-bind"), s.WriteDAG(g))
Expect(dag[8][0].Name).To(Equal("write-fstab"), s.WriteDAG(g))
}) })
It("mounts base overlay, attempt to mount oem, and updates the fstab", func() { It("mounts base overlay, attempt to mount oem, and updates the fstab", func() {
@@ -72,7 +91,7 @@ var _ = Describe("mounting immutable setup", func() {
It("mounts all", func() { It("mounts all", func() {
s := &mount.State{Rootdir: "/", MountRoot: true, s := &mount.State{Rootdir: "/", MountRoot: true,
OverlayDir: []string{"/etc"}, OverlayDirs: []string{"/etc"},
BindMounts: []string{"/etc/kubernetes"}, BindMounts: []string{"/etc/kubernetes"},
CustomMounts: map[string]string{"COS_PERSISTENT": "/usr/local"}} CustomMounts: map[string]string{"COS_PERSISTENT": "/usr/local"}}
@@ -103,7 +122,7 @@ var _ = Describe("mounting immutable setup", func() {
It("Mountop timeouts", func() { It("Mountop timeouts", func() {
s := &mount.State{} s := &mount.State{}
f := s.MountOP("", "", "", []string{}, 1*time.Second) f := s.MountOP("/dev/doesntexist", "/tmp", "", []string{}, 1*time.Second)
err := f(context.Background()) err := f(context.Background())
Expect(err).To(HaveOccurred()) Expect(err).To(HaveOccurred())
Expect(err.Error()).To(ContainSubstring("exhausted")) Expect(err.Error()).To(ContainSubstring("exhausted"))