diff --git a/pkg/machine/e2e/config_init_test.go b/pkg/machine/e2e/config_init_test.go index 51dd397159..c0c2b1c89f 100644 --- a/pkg/machine/e2e/config_init_test.go +++ b/pkg/machine/e2e/config_init_test.go @@ -19,16 +19,17 @@ type initMachine struct { --volume-driver string Optional volume driver */ - cpus *uint - diskSize *uint - ignitionPath string - username string - imagePath string - memory *uint - now bool - timezone string - rootful bool - volumes []string + cpus *uint + diskSize *uint + ignitionPath string + username string + imagePath string + memory *uint + now bool + timezone string + rootful bool + volumes []string + userModeNetworking bool cmd []string } @@ -65,6 +66,9 @@ func (i *initMachine) buildCmd(m *machineTestBuilder) []string { if i.rootful { cmd = append(cmd, "--rootful") } + if i.userModeNetworking { + cmd = append(cmd, "--user-mode-networking") + } cmd = append(cmd, m.name) i.cmd = cmd return cmd @@ -118,3 +122,8 @@ func (i *initMachine) withRootful(r bool) *initMachine { i.rootful = r return i } + +func (i *initMachine) withUserModeNetworking(r bool) *initMachine { + i.userModeNetworking = r + return i +} diff --git a/pkg/machine/e2e/config_set_test.go b/pkg/machine/e2e/config_set_test.go index 1ebd97d118..09e71f00f8 100644 --- a/pkg/machine/e2e/config_set_test.go +++ b/pkg/machine/e2e/config_set_test.go @@ -5,10 +5,11 @@ import ( ) type setMachine struct { - cpus *uint - diskSize *uint - memory *uint - rootful bool + cpus *uint + diskSize *uint + memory *uint + rootful bool + userModeNetworking bool cmd []string } @@ -27,6 +28,9 @@ func (i *setMachine) buildCmd(m *machineTestBuilder) []string { if i.rootful { cmd = append(cmd, "--rootful") } + if i.userModeNetworking { + cmd = append(cmd, "--user-mode-networking") + } cmd = append(cmd, m.name) i.cmd = cmd return cmd @@ -50,3 +54,8 @@ func (i *setMachine) withRootful(r bool) *setMachine { i.rootful = r return i } + +func (i *setMachine) withUserModeNetworking(r bool) *setMachine { + i.userModeNetworking = r + return i +} diff --git a/pkg/machine/e2e/config_test.go b/pkg/machine/e2e/config_test.go index 06f9ca9f0b..321d276678 100644 --- a/pkg/machine/e2e/config_test.go +++ b/pkg/machine/e2e/config_test.go @@ -6,6 +6,7 @@ import ( "os" "os/exec" "path/filepath" + "runtime" "strings" "time" @@ -201,3 +202,16 @@ func (matcher *ValidJSONMatcher) FailureMessage(actual interface{}) (message str func (matcher *ValidJSONMatcher) NegatedFailureMessage(actual interface{}) (message string) { return format.Message(actual, "to _not_ be valid JSON") } + +func checkReason(reason string) { + if len(reason) < 5 { + panic("Test must specify a reason to skip") + } +} + +func SkipIfNotWindows(reason string) { + checkReason(reason) + if runtime.GOOS != "windows" { + Skip("[not windows]: " + reason) + } +} diff --git a/pkg/machine/e2e/init_test.go b/pkg/machine/e2e/init_test.go index 9cd3ffa0fd..8d156abc4d 100644 --- a/pkg/machine/e2e/init_test.go +++ b/pkg/machine/e2e/init_test.go @@ -186,7 +186,7 @@ var _ = Describe("podman machine init", func() { }) - It("machine init rootful docker.sock check", func() { + It("machine init rootful with docker.sock check", func() { i := initMachine{} name := randomString() session, err := mb.setName(name).setCmd(i.withImagePath(mb.imagePath).withRootful(true)).run() @@ -198,6 +198,13 @@ var _ = Describe("podman machine init", func() { Expect(err).ToNot(HaveOccurred()) Expect(ssession).Should(Exit(0)) + inspect := new(inspectMachine) + inspect = inspect.withFormat("{{.Rootful}}") + inspectSession, err := mb.setName(name).setCmd(inspect).run() + Expect(err).ToNot(HaveOccurred()) + Expect(inspectSession).To(Exit(0)) + Expect(inspectSession.outputToString()).To(Equal("true")) + ssh2 := sshMachine{} sshSession2, err := mb.setName(name).setCmd(ssh2.withSSHCommand([]string{"readlink /var/run/docker.sock"})).run() Expect(err).ToNot(HaveOccurred()) @@ -205,4 +212,21 @@ var _ = Describe("podman machine init", func() { output := strings.TrimSpace(sshSession2.outputToString()) Expect(output).To(Equal("/run/podman/podman.sock")) }) + + It("init with user mode networking ", func() { + SkipIfNotWindows("setting user mode networking is only honored on Windows") + + i := new(initMachine) + name := randomString() + session, err := mb.setName(name).setCmd(i.withImagePath(mb.imagePath).withUserModeNetworking(true)).run() + Expect(err).ToNot(HaveOccurred()) + Expect(session).To(Exit(0)) + + inspect := new(inspectMachine) + inspect = inspect.withFormat("{{.UserModeNetworking}}") + inspectSession, err := mb.setName(name).setCmd(inspect).run() + Expect(err).ToNot(HaveOccurred()) + Expect(inspectSession).To(Exit(0)) + Expect(inspectSession.outputToString()).To(Equal("true")) + }) }) diff --git a/pkg/machine/e2e/set_test.go b/pkg/machine/e2e/set_test.go index 1dd34e9627..a1f12cdad6 100644 --- a/pkg/machine/e2e/set_test.go +++ b/pkg/machine/e2e/set_test.go @@ -101,7 +101,7 @@ var _ = Describe("podman machine set", func() { Expect(sshSession3.outputToString()).To(ContainSubstring("100 GiB")) }) - It("set rootful, docker sock change", func() { + It("set rootful with docker sock change", func() { name := randomString() i := new(initMachine) session, err := mb.setName(name).setCmd(i.withImagePath(mb.imagePath)).run() @@ -118,6 +118,13 @@ var _ = Describe("podman machine set", func() { Expect(err).ToNot(HaveOccurred()) Expect(startSession).To(Exit(0)) + inspect := new(inspectMachine) + inspect = inspect.withFormat("{{.Rootful}}") + inspectSession, err := mb.setName(name).setCmd(inspect).run() + Expect(err).ToNot(HaveOccurred()) + Expect(inspectSession).To(Exit(0)) + Expect(inspectSession.outputToString()).To(Equal("true")) + ssh2 := sshMachine{} sshSession2, err := mb.setName(name).setCmd(ssh2.withSSHCommand([]string{"readlink /var/run/docker.sock"})).run() Expect(err).ToNot(HaveOccurred()) @@ -125,4 +132,26 @@ var _ = Describe("podman machine set", func() { output := strings.TrimSpace(sshSession2.outputToString()) Expect(output).To(Equal("/run/podman/podman.sock")) }) + + It("set user mode networking", func() { + SkipIfNotWindows("Setting user mode networking is only honored on Windows") + + name := randomString() + i := new(initMachine) + session, err := mb.setName(name).setCmd(i.withImagePath(mb.imagePath)).run() + Expect(err).ToNot(HaveOccurred()) + Expect(session).To(Exit(0)) + + set := setMachine{} + setSession, err := mb.setName(name).setCmd(set.withUserModeNetworking(true)).run() + Expect(err).ToNot(HaveOccurred()) + Expect(setSession).To(Exit(0)) + + inspect := new(inspectMachine) + inspect = inspect.withFormat("{{.UserModeNetworking}}") + inspectSession, err := mb.setName(name).setCmd(inspect).run() + Expect(err).ToNot(HaveOccurred()) + Expect(inspectSession).To(Exit(0)) + Expect(inspectSession.outputToString()).To(Equal("true")) + }) })