github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/top_test.go (about) 1 // +build !remoteclient 2 3 package integration 4 5 import ( 6 "os" 7 8 . "github.com/containers/libpod/test/utils" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 ) 12 13 var _ = Describe("Podman top", func() { 14 var ( 15 tempdir string 16 err error 17 podmanTest *PodmanTestIntegration 18 ) 19 20 BeforeEach(func() { 21 tempdir, err = CreateTempDirInTempDir() 22 if err != nil { 23 os.Exit(1) 24 } 25 podmanTest = PodmanTestCreate(tempdir) 26 podmanTest.Setup() 27 podmanTest.SeedImages() 28 }) 29 30 AfterEach(func() { 31 podmanTest.Cleanup() 32 f := CurrentGinkgoTestDescription() 33 processTestResult(f) 34 35 }) 36 37 It("podman top without container name or id", func() { 38 result := podmanTest.Podman([]string{"top"}) 39 result.WaitWithDefaultTimeout() 40 Expect(result.ExitCode()).To(Equal(125)) 41 }) 42 43 It("podman top on bogus container", func() { 44 result := podmanTest.Podman([]string{"top", "1234"}) 45 result.WaitWithDefaultTimeout() 46 Expect(result.ExitCode()).To(Equal(125)) 47 }) 48 49 It("podman top on non-running container", func() { 50 _, ec, cid := podmanTest.RunLsContainer("") 51 Expect(ec).To(Equal(0)) 52 result := podmanTest.Podman([]string{"top", cid}) 53 result.WaitWithDefaultTimeout() 54 Expect(result.ExitCode()).To(Equal(125)) 55 }) 56 57 It("podman top on container", func() { 58 session := podmanTest.Podman([]string{"run", "-d", ALPINE, "top", "-d", "2"}) 59 session.WaitWithDefaultTimeout() 60 Expect(session.ExitCode()).To(Equal(0)) 61 62 result := podmanTest.Podman([]string{"top", "-l"}) 63 result.WaitWithDefaultTimeout() 64 Expect(result.ExitCode()).To(Equal(0)) 65 Expect(len(result.OutputToStringArray())).To(BeNumerically(">", 1)) 66 }) 67 68 It("podman container top on container", func() { 69 session := podmanTest.Podman([]string{"container", "run", "-d", ALPINE, "top", "-d", "2"}) 70 session.WaitWithDefaultTimeout() 71 Expect(session.ExitCode()).To(Equal(0)) 72 73 result := podmanTest.Podman([]string{"container", "top", "-l"}) 74 result.WaitWithDefaultTimeout() 75 Expect(result.ExitCode()).To(Equal(0)) 76 Expect(len(result.OutputToStringArray())).To(BeNumerically(">", 1)) 77 }) 78 79 It("podman top with options", func() { 80 session := podmanTest.Podman([]string{"run", "-d", ALPINE, "top", "-d", "2"}) 81 session.WaitWithDefaultTimeout() 82 Expect(session.ExitCode()).To(Equal(0)) 83 84 result := podmanTest.Podman([]string{"top", session.OutputToString(), "pid", "%C", "args"}) 85 result.WaitWithDefaultTimeout() 86 Expect(result.ExitCode()).To(Equal(0)) 87 Expect(len(result.OutputToStringArray())).To(BeNumerically(">", 1)) 88 }) 89 90 It("podman top with ps(1) options", func() { 91 session := podmanTest.Podman([]string{"run", "-d", ALPINE, "top", "-d", "2"}) 92 session.WaitWithDefaultTimeout() 93 Expect(session.ExitCode()).To(Equal(0)) 94 95 result := podmanTest.Podman([]string{"top", session.OutputToString(), "aux"}) 96 result.WaitWithDefaultTimeout() 97 Expect(result.ExitCode()).To(Equal(0)) 98 Expect(len(result.OutputToStringArray())).To(BeNumerically(">", 1)) 99 }) 100 101 It("podman top with comma-separated options", func() { 102 session := podmanTest.Podman([]string{"run", "-d", ALPINE, "top", "-d", "2"}) 103 session.WaitWithDefaultTimeout() 104 Expect(session.ExitCode()).To(Equal(0)) 105 106 result := podmanTest.Podman([]string{"top", session.OutputToString(), "user,pid,comm"}) 107 result.WaitWithDefaultTimeout() 108 Expect(result.ExitCode()).To(Equal(0)) 109 Expect(len(result.OutputToStringArray())).To(BeNumerically(">", 1)) 110 }) 111 112 It("podman top on container invalid options", func() { 113 top := podmanTest.RunTopContainer("") 114 top.WaitWithDefaultTimeout() 115 Expect(top.ExitCode()).To(Equal(0)) 116 cid := top.OutputToString() 117 118 // We need to pass -eo to force executing ps in the Alpine container. 119 // Alpines stripped down ps(1) is accepting any kind of weird input in 120 // contrast to others, such that a `ps invalid` will silently ignore 121 // the wrong input and still print the -ef output instead. 122 result := podmanTest.Podman([]string{"top", cid, "-eo", "invalid"}) 123 result.WaitWithDefaultTimeout() 124 Expect(result.ExitCode()).To(Equal(125)) 125 }) 126 127 })