github.com/containers/podman/v4@v4.9.4/pkg/specgen/generate/kube/kube_test.go (about) 1 //go:build !remote 2 // +build !remote 3 4 package kube 5 6 import ( 7 "testing" 8 9 v1 "github.com/containers/podman/v4/pkg/k8s.io/api/core/v1" 10 "github.com/containers/podman/v4/pkg/k8s.io/apimachinery/pkg/util/intstr" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func testPropagation(t *testing.T, propagation v1.MountPropagationMode, expected string) { 15 dest, options, err := parseMountPath("/to", false, &propagation) 16 assert.NoError(t, err) 17 assert.Equal(t, dest, "/to") 18 assert.Contains(t, options, expected) 19 } 20 21 func TestParseMountPathPropagation(t *testing.T) { 22 testPropagation(t, v1.MountPropagationNone, "private") 23 testPropagation(t, v1.MountPropagationHostToContainer, "rslave") 24 testPropagation(t, v1.MountPropagationBidirectional, "rshared") 25 26 prop := v1.MountPropagationMode("SpaceWave") 27 _, _, err := parseMountPath("/to", false, &prop) 28 assert.Error(t, err) 29 30 _, options, err := parseMountPath("/to", false, nil) 31 assert.NoError(t, err) 32 assert.NotContains(t, options, "private") 33 assert.NotContains(t, options, "rslave") 34 assert.NotContains(t, options, "rshared") 35 } 36 37 func TestParseMountPathRO(t *testing.T) { 38 _, options, err := parseMountPath("/to", true, nil) 39 assert.NoError(t, err) 40 assert.Contains(t, options, "ro") 41 42 _, options, err = parseMountPath("/to", false, nil) 43 assert.NoError(t, err) 44 assert.NotContains(t, options, "ro") 45 } 46 47 func TestGetPodPorts(t *testing.T) { 48 c1 := v1.Container{ 49 Name: "container1", 50 Ports: []v1.ContainerPort{{ 51 ContainerPort: 5000, 52 }, { 53 ContainerPort: 5001, 54 HostPort: 5002, 55 }}, 56 } 57 c2 := v1.Container{ 58 Name: "container2", 59 Ports: []v1.ContainerPort{{ 60 HostPort: 5004, 61 }}, 62 } 63 r := getPodPorts([]v1.Container{c1, c2}, false) 64 assert.Equal(t, 2, len(r)) 65 assert.Equal(t, uint16(5001), r[0].ContainerPort) 66 assert.Equal(t, uint16(5002), r[0].HostPort) 67 assert.Equal(t, uint16(5004), r[1].ContainerPort) 68 assert.Equal(t, uint16(5004), r[1].HostPort) 69 70 r = getPodPorts([]v1.Container{c1, c2}, true) 71 assert.Equal(t, 3, len(r)) 72 assert.Equal(t, uint16(5000), r[0].ContainerPort) 73 assert.Equal(t, uint16(5000), r[0].HostPort) 74 assert.Equal(t, uint16(5001), r[1].ContainerPort) 75 assert.Equal(t, uint16(5002), r[1].HostPort) 76 assert.Equal(t, uint16(5004), r[2].ContainerPort) 77 assert.Equal(t, uint16(5004), r[2].HostPort) 78 } 79 80 func TestGetPortNumber(t *testing.T) { 81 portSpec := intstr.IntOrString{Type: intstr.Int, IntVal: 3000, StrVal: "myport"} 82 cp1 := v1.ContainerPort{Name: "myport", ContainerPort: 4000} 83 cp2 := v1.ContainerPort{Name: "myport2", ContainerPort: 5000} 84 i, e := getPortNumber(portSpec, []v1.ContainerPort{cp1, cp2}) 85 assert.NoError(t, e) 86 assert.Equal(t, i, int(portSpec.IntVal)) 87 88 portSpec.Type = intstr.String 89 i, e = getPortNumber(portSpec, []v1.ContainerPort{cp1, cp2}) 90 assert.NoError(t, e) 91 assert.Equal(t, i, 4000) 92 93 portSpec.StrVal = "not_valid" 94 _, e = getPortNumber(portSpec, []v1.ContainerPort{cp1, cp2}) 95 assert.Error(t, e) 96 97 portSpec.StrVal = "6000" 98 i, e = getPortNumber(portSpec, []v1.ContainerPort{cp1, cp2}) 99 assert.NoError(t, e) 100 assert.Equal(t, i, 6000) 101 }