github.com/containers/podman/v4@v4.9.4/test/e2e/pod_stats_test.go (about)

     1  package integration
     2  
     3  import (
     4  	. "github.com/containers/podman/v4/test/utils"
     5  	. "github.com/onsi/ginkgo/v2"
     6  	. "github.com/onsi/gomega"
     7  	. "github.com/onsi/gomega/gexec"
     8  )
     9  
    10  var _ = Describe("Podman pod stats", func() {
    11  
    12  	BeforeEach(func() {
    13  		SkipIfRootlessCgroupsV1("Tests fail with both CGv1 + required --cgroup-manager=cgroupfs")
    14  		if isContainerized() {
    15  			SkipIfCgroupV1("All tests fail Error: unable to load cgroup at ...: cgroup deleted")
    16  		}
    17  	})
    18  
    19  	It("podman pod stats should run with no pods", func() {
    20  		session := podmanTest.Podman([]string{"pod", "stats", "--no-stream"})
    21  		session.WaitWithDefaultTimeout()
    22  		Expect(session).Should(ExitCleanly())
    23  	})
    24  
    25  	It("podman pod stats with a bogus pod", func() {
    26  		session := podmanTest.Podman([]string{"pod", "stats", "foobar"})
    27  		session.WaitWithDefaultTimeout()
    28  		Expect(session).Should(Exit(125))
    29  	})
    30  
    31  	It("podman pod stats on a specific running pod", func() {
    32  		_, ec, podid := podmanTest.CreatePod(nil)
    33  		Expect(ec).To(Equal(0))
    34  
    35  		session := podmanTest.RunTopContainerInPod("", podid)
    36  		session.WaitWithDefaultTimeout()
    37  		Expect(session).Should(ExitCleanly())
    38  
    39  		session = podmanTest.RunTopContainerInPod("", podid)
    40  		session.WaitWithDefaultTimeout()
    41  		Expect(session).Should(ExitCleanly())
    42  
    43  		stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", podid})
    44  		stats.WaitWithDefaultTimeout()
    45  		Expect(stats).Should(ExitCleanly())
    46  	})
    47  
    48  	It("podman pod stats on a specific running pod with shortID", func() {
    49  		_, ec, podid := podmanTest.CreatePod(nil)
    50  		Expect(ec).To(Equal(0))
    51  
    52  		session := podmanTest.RunTopContainerInPod("", podid)
    53  		session.WaitWithDefaultTimeout()
    54  		Expect(session).Should(ExitCleanly())
    55  
    56  		session = podmanTest.RunTopContainerInPod("", podid)
    57  		session.WaitWithDefaultTimeout()
    58  		Expect(session).Should(ExitCleanly())
    59  
    60  		stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", podid[:5]})
    61  		stats.WaitWithDefaultTimeout()
    62  		Expect(stats).Should(ExitCleanly())
    63  	})
    64  
    65  	It("podman pod stats on a specific running pod with name", func() {
    66  		_, ec, podid := podmanTest.CreatePod(map[string][]string{"--name": {"test"}})
    67  		Expect(ec).To(Equal(0))
    68  
    69  		session := podmanTest.RunTopContainerInPod("", podid)
    70  		session.WaitWithDefaultTimeout()
    71  		Expect(session).Should(ExitCleanly())
    72  
    73  		session = podmanTest.RunTopContainerInPod("", podid)
    74  		session.WaitWithDefaultTimeout()
    75  		Expect(session).Should(ExitCleanly())
    76  
    77  		stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", "test"})
    78  		stats.WaitWithDefaultTimeout()
    79  		Expect(stats).Should(ExitCleanly())
    80  	})
    81  
    82  	It("podman pod stats on running pods", func() {
    83  		_, ec, podid := podmanTest.CreatePod(nil)
    84  		Expect(ec).To(Equal(0))
    85  
    86  		session := podmanTest.RunTopContainerInPod("", podid)
    87  		session.WaitWithDefaultTimeout()
    88  		Expect(session).Should(ExitCleanly())
    89  
    90  		session = podmanTest.RunTopContainerInPod("", podid)
    91  		session.WaitWithDefaultTimeout()
    92  		Expect(session).Should(ExitCleanly())
    93  
    94  		stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream"})
    95  		stats.WaitWithDefaultTimeout()
    96  		Expect(stats).Should(ExitCleanly())
    97  	})
    98  
    99  	It("podman pod stats on all pods", func() {
   100  		_, ec, podid := podmanTest.CreatePod(nil)
   101  		Expect(ec).To(Equal(0))
   102  
   103  		session := podmanTest.RunTopContainerInPod("", podid)
   104  		session.WaitWithDefaultTimeout()
   105  		Expect(session).Should(ExitCleanly())
   106  
   107  		session = podmanTest.RunTopContainerInPod("", podid)
   108  		session.WaitWithDefaultTimeout()
   109  		Expect(session).Should(ExitCleanly())
   110  
   111  		stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", "-a"})
   112  		stats.WaitWithDefaultTimeout()
   113  		Expect(stats).Should(ExitCleanly())
   114  	})
   115  
   116  	It("podman pod stats with json output", func() {
   117  		_, ec, podid := podmanTest.CreatePod(nil)
   118  		Expect(ec).To(Equal(0))
   119  
   120  		session := podmanTest.RunTopContainerInPod("", podid)
   121  		session.WaitWithDefaultTimeout()
   122  		Expect(session).Should(ExitCleanly())
   123  
   124  		session = podmanTest.RunTopContainerInPod("", podid)
   125  		session.WaitWithDefaultTimeout()
   126  		Expect(session).Should(ExitCleanly())
   127  
   128  		stats := podmanTest.Podman([]string{"pod", "stats", "--format", "json", "--no-stream", "-a"})
   129  		stats.WaitWithDefaultTimeout()
   130  		Expect(stats).Should(ExitCleanly())
   131  		Expect(stats.OutputToString()).To(BeValidJSON())
   132  	})
   133  	It("podman pod stats with GO template", func() {
   134  		_, ec, podid := podmanTest.CreatePod(nil)
   135  		Expect(ec).To(Equal(0))
   136  
   137  		session := podmanTest.RunTopContainerInPod("", podid)
   138  		session.WaitWithDefaultTimeout()
   139  		Expect(session).Should(ExitCleanly())
   140  		stats := podmanTest.Podman([]string{"pod", "stats", "-a", "--no-reset", "--no-stream", "--format", "table {{.CID}} {{.Pod}} {{.Mem}} {{.MemUsage}} {{.CPU}} {{.NetIO}} {{.BlockIO}} {{.PIDS}} {{.Pod}}"})
   141  		stats.WaitWithDefaultTimeout()
   142  		Expect(stats).To(ExitCleanly())
   143  	})
   144  
   145  	It("podman pod stats with invalid GO template", func() {
   146  		_, ec, podid := podmanTest.CreatePod(nil)
   147  		Expect(ec).To(Equal(0))
   148  
   149  		session := podmanTest.RunTopContainerInPod("", podid)
   150  		session.WaitWithDefaultTimeout()
   151  		Expect(session).Should(ExitCleanly())
   152  		stats := podmanTest.Podman([]string{"pod", "stats", "-a", "--no-reset", "--no-stream", "--format", "\"table {{.ID}} \""})
   153  		stats.WaitWithDefaultTimeout()
   154  		Expect(stats).To(ExitWithError())
   155  	})
   156  
   157  	It("podman pod stats on net=host post", func() {
   158  		SkipIfRootless("--net=host not supported for rootless pods at present")
   159  		podName := "testPod"
   160  		podCreate := podmanTest.Podman([]string{"pod", "create", "--net=host", "--name", podName})
   161  		podCreate.WaitWithDefaultTimeout()
   162  		Expect(podCreate).Should(ExitCleanly())
   163  
   164  		ctrRun := podmanTest.Podman([]string{"run", "-d", "--pod", podName, ALPINE, "top"})
   165  		ctrRun.WaitWithDefaultTimeout()
   166  		Expect(ctrRun).Should(ExitCleanly())
   167  
   168  		stats := podmanTest.Podman([]string{"pod", "stats", "--format", "json", "--no-stream", podName})
   169  		stats.WaitWithDefaultTimeout()
   170  		Expect(stats).Should(ExitCleanly())
   171  		Expect(stats.OutputToString()).To(BeValidJSON())
   172  	})
   173  })