github.com/AbhinandanKurakure/podman/v3@v3.4.10/test/e2e/pod_stats_test.go (about)

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