github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/inspect_test.go (about) 1 package integration 2 3 import ( 4 "os" 5 "strings" 6 7 . "github.com/containers/libpod/test/utils" 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 ) 11 12 var _ = Describe("Podman inspect", func() { 13 var ( 14 tempdir string 15 err error 16 podmanTest *PodmanTestIntegration 17 ) 18 19 BeforeEach(func() { 20 tempdir, err = CreateTempDirInTempDir() 21 if err != nil { 22 os.Exit(1) 23 } 24 podmanTest = PodmanTestCreate(tempdir) 25 podmanTest.Setup() 26 podmanTest.SeedImages() 27 }) 28 29 AfterEach(func() { 30 podmanTest.Cleanup() 31 f := CurrentGinkgoTestDescription() 32 processTestResult(f) 33 34 }) 35 36 It("podman inspect alpine image", func() { 37 session := podmanTest.Podman([]string{"inspect", "--format=json", ALPINE}) 38 session.WaitWithDefaultTimeout() 39 Expect(session.ExitCode()).To(Equal(0)) 40 Expect(session.IsJSONOutputValid()).To(BeTrue()) 41 imageData := session.InspectImageJSON() 42 Expect(imageData[0].RepoTags[0]).To(Equal("docker.io/library/alpine:latest")) 43 }) 44 45 It("podman inspect bogus container", func() { 46 SkipIfRemote() 47 session := podmanTest.Podman([]string{"inspect", "foobar4321"}) 48 session.WaitWithDefaultTimeout() 49 Expect(session).To(ExitWithError()) 50 }) 51 52 It("podman inspect with GO format", func() { 53 session := podmanTest.Podman([]string{"inspect", "--format", "{{.ID}}", ALPINE}) 54 session.WaitWithDefaultTimeout() 55 Expect(session.ExitCode()).To(Equal(0)) 56 57 result := podmanTest.Podman([]string{"images", "-q", "--no-trunc", ALPINE}) 58 result.WaitWithDefaultTimeout() 59 Expect(session.ExitCode()).To(Equal(0)) 60 Expect(strings.Contains(result.OutputToString(), session.OutputToString())) 61 }) 62 63 It("podman inspect specified type", func() { 64 session := podmanTest.Podman([]string{"inspect", "--type", "image", ALPINE}) 65 session.WaitWithDefaultTimeout() 66 Expect(session.ExitCode()).To(Equal(0)) 67 }) 68 69 It("podman inspect container with GO format for ConmonPidFile", func() { 70 SkipIfRemote() 71 session, ec, _ := podmanTest.RunLsContainer("test1") 72 Expect(ec).To(Equal(0)) 73 74 session = podmanTest.Podman([]string{"inspect", "--format", "{{.ConmonPidFile}}", "test1"}) 75 session.WaitWithDefaultTimeout() 76 Expect(session.ExitCode()).To(Equal(0)) 77 }) 78 79 It("podman inspect container with size", func() { 80 SkipIfRemote() 81 _, ec, _ := podmanTest.RunLsContainer("") 82 Expect(ec).To(Equal(0)) 83 84 result := podmanTest.Podman([]string{"inspect", "--size", "-l"}) 85 result.WaitWithDefaultTimeout() 86 Expect(result.ExitCode()).To(Equal(0)) 87 conData := result.InspectContainerToJSON() 88 Expect(conData[0].SizeRootFs).To(BeNumerically(">", 0)) 89 Expect(*conData[0].SizeRw).To(BeNumerically(">=", 0)) 90 }) 91 92 It("podman inspect container and image", func() { 93 SkipIfRemote() 94 ls, ec, _ := podmanTest.RunLsContainer("") 95 Expect(ec).To(Equal(0)) 96 cid := ls.OutputToString() 97 98 result := podmanTest.Podman([]string{"inspect", "--format={{.ID}}", cid, ALPINE}) 99 result.WaitWithDefaultTimeout() 100 Expect(result.ExitCode()).To(Equal(0)) 101 Expect(len(result.OutputToStringArray())).To(Equal(2)) 102 }) 103 104 It("podman inspect container and filter for Image{ID}", func() { 105 SkipIfRemote() 106 ls, ec, _ := podmanTest.RunLsContainer("") 107 Expect(ec).To(Equal(0)) 108 cid := ls.OutputToString() 109 110 result := podmanTest.Podman([]string{"inspect", "--format={{.ImageID}}", cid}) 111 result.WaitWithDefaultTimeout() 112 Expect(result.ExitCode()).To(Equal(0)) 113 Expect(len(result.OutputToStringArray())).To(Equal(1)) 114 115 result = podmanTest.Podman([]string{"inspect", "--format={{.Image}}", cid}) 116 result.WaitWithDefaultTimeout() 117 Expect(result.ExitCode()).To(Equal(0)) 118 Expect(len(result.OutputToStringArray())).To(Equal(1)) 119 }) 120 121 It("podman inspect container and filter for CreateCommand", func() { 122 SkipIfRemote() 123 ls, ec, _ := podmanTest.RunLsContainer("") 124 Expect(ec).To(Equal(0)) 125 cid := ls.OutputToString() 126 127 result := podmanTest.Podman([]string{"inspect", "--format={{.Config.CreateCommand}}", cid}) 128 result.WaitWithDefaultTimeout() 129 Expect(result.ExitCode()).To(Equal(0)) 130 Expect(len(result.OutputToStringArray())).To(Equal(1)) 131 }) 132 133 It("podman inspect -l with additional input should fail", func() { 134 SkipIfRemote() 135 result := podmanTest.Podman([]string{"inspect", "-l", "1234foobar"}) 136 result.WaitWithDefaultTimeout() 137 Expect(result.ExitCode()).To(Equal(125)) 138 }) 139 140 It("podman inspect with mount filters", func() { 141 SkipIfRemote() 142 143 ctrSession := podmanTest.Podman([]string{"create", "-v", "/tmp:/test1", ALPINE, "top"}) 144 ctrSession.WaitWithDefaultTimeout() 145 Expect(ctrSession.ExitCode()).To(Equal(0)) 146 147 inspectSource := podmanTest.Podman([]string{"inspect", "-l", "--format", "{{(index .Mounts 0).Source}}"}) 148 inspectSource.WaitWithDefaultTimeout() 149 Expect(inspectSource.ExitCode()).To(Equal(0)) 150 Expect(inspectSource.OutputToString()).To(Equal("/tmp")) 151 152 inspectSrc := podmanTest.Podman([]string{"inspect", "-l", "--format", "{{(index .Mounts 0).Src}}"}) 153 inspectSrc.WaitWithDefaultTimeout() 154 Expect(inspectSrc.ExitCode()).To(Equal(0)) 155 Expect(inspectSrc.OutputToString()).To(Equal("/tmp")) 156 157 inspectDestination := podmanTest.Podman([]string{"inspect", "-l", "--format", "{{(index .Mounts 0).Destination}}"}) 158 inspectDestination.WaitWithDefaultTimeout() 159 Expect(inspectDestination.ExitCode()).To(Equal(0)) 160 Expect(inspectDestination.OutputToString()).To(Equal("/test1")) 161 162 inspectDst := podmanTest.Podman([]string{"inspect", "-l", "--format", "{{(index .Mounts 0).Dst}}"}) 163 inspectDst.WaitWithDefaultTimeout() 164 Expect(inspectDst.ExitCode()).To(Equal(0)) 165 Expect(inspectDst.OutputToString()).To(Equal("/test1")) 166 }) 167 168 It("podman inspect shows healthcheck on docker image", func() { 169 pull := podmanTest.Podman([]string{"pull", healthcheck}) 170 pull.WaitWithDefaultTimeout() 171 Expect(pull.ExitCode()).To(BeZero()) 172 173 session := podmanTest.Podman([]string{"inspect", "--format=json", healthcheck}) 174 session.WaitWithDefaultTimeout() 175 imageData := session.InspectImageJSON() 176 Expect(imageData[0].HealthCheck.Timeout).To(BeNumerically("==", 3000000000)) 177 Expect(imageData[0].HealthCheck.Interval).To(BeNumerically("==", 60000000000)) 178 Expect(imageData[0].HealthCheck.Test).To(Equal([]string{"CMD-SHELL", "curl -f http://localhost/ || exit 1"})) 179 }) 180 })