github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/pod_ps_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"sort"
     7  
     8  	. "github.com/containers/libpod/test/utils"
     9  	. "github.com/onsi/ginkgo"
    10  	. "github.com/onsi/gomega"
    11  )
    12  
    13  var _ = Describe("Podman ps", 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.CleanupPod()
    32  		f := CurrentGinkgoTestDescription()
    33  		processTestResult(f)
    34  
    35  	})
    36  
    37  	It("podman pod ps no pods", func() {
    38  		session := podmanTest.Podman([]string{"pod", "ps"})
    39  		session.WaitWithDefaultTimeout()
    40  		Expect(session.ExitCode()).To(Equal(0))
    41  	})
    42  
    43  	It("podman pod ps default", func() {
    44  		_, ec, podid := podmanTest.CreatePod("")
    45  		Expect(ec).To(Equal(0))
    46  
    47  		session := podmanTest.RunTopContainerInPod("", podid)
    48  		session.WaitWithDefaultTimeout()
    49  		Expect(session.ExitCode()).To(Equal(0))
    50  
    51  		result := podmanTest.Podman([]string{"pod", "ps"})
    52  		result.WaitWithDefaultTimeout()
    53  		Expect(result.ExitCode()).To(Equal(0))
    54  		Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0))
    55  	})
    56  
    57  	It("podman pod ps quiet flag", func() {
    58  		_, ec, podid := podmanTest.CreatePod("")
    59  		Expect(ec).To(Equal(0))
    60  
    61  		_, ec, _ = podmanTest.RunLsContainerInPod("", podid)
    62  		Expect(ec).To(Equal(0))
    63  
    64  		result := podmanTest.Podman([]string{"pod", "ps", "-q"})
    65  		result.WaitWithDefaultTimeout()
    66  		Expect(result.ExitCode()).To(Equal(0))
    67  		Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0))
    68  		Expect(podid).To(ContainSubstring(result.OutputToStringArray()[0]))
    69  	})
    70  
    71  	It("podman pod ps no-trunc", func() {
    72  		_, ec, podid := podmanTest.CreatePod("")
    73  		Expect(ec).To(Equal(0))
    74  
    75  		_, ec2, _ := podmanTest.RunLsContainerInPod("", podid)
    76  		Expect(ec2).To(Equal(0))
    77  
    78  		result := podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc"})
    79  		result.WaitWithDefaultTimeout()
    80  		Expect(result.ExitCode()).To(Equal(0))
    81  		Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0))
    82  		Expect(podid).To(Equal(result.OutputToStringArray()[0]))
    83  	})
    84  
    85  	It("podman pod ps latest", func() {
    86  		_, ec, podid1 := podmanTest.CreatePod("")
    87  		Expect(ec).To(Equal(0))
    88  
    89  		_, ec2, podid2 := podmanTest.CreatePod("")
    90  		Expect(ec2).To(Equal(0))
    91  
    92  		result := podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--latest"})
    93  		result.WaitWithDefaultTimeout()
    94  		Expect(result.ExitCode()).To(Equal(0))
    95  		Expect(result.OutputToString()).To(ContainSubstring(podid2))
    96  		Expect(result.OutputToString()).To(Not(ContainSubstring(podid1)))
    97  	})
    98  	It("podman pod ps id filter flag", func() {
    99  		_, ec, podid := podmanTest.CreatePod("")
   100  		Expect(ec).To(Equal(0))
   101  
   102  		result := podmanTest.Podman([]string{"pod", "ps", "--filter", fmt.Sprintf("id=%s", podid)})
   103  		result.WaitWithDefaultTimeout()
   104  		Expect(result.ExitCode()).To(Equal(0))
   105  	})
   106  
   107  	It("podman pod ps mutually exclusive flags", func() {
   108  		session := podmanTest.Podman([]string{"pod", "ps", "-q", "--format", "{{.ID}}"})
   109  		session.WaitWithDefaultTimeout()
   110  		Expect(session).To(ExitWithError())
   111  
   112  	})
   113  
   114  	It("podman pod ps --sort by name", func() {
   115  		_, ec, _ := podmanTest.CreatePod("")
   116  		Expect(ec).To(Equal(0))
   117  
   118  		_, ec2, _ := podmanTest.CreatePod("")
   119  		Expect(ec2).To(Equal(0))
   120  
   121  		_, ec3, _ := podmanTest.CreatePod("")
   122  		Expect(ec3).To(Equal(0))
   123  
   124  		session := podmanTest.Podman([]string{"pod", "ps", "--sort=name", "--format", "{{.Name}}"})
   125  
   126  		session.WaitWithDefaultTimeout()
   127  		Expect(session.ExitCode()).To(Equal(0))
   128  
   129  		sortedArr := session.OutputToStringArray()
   130  
   131  		Expect(sort.SliceIsSorted(sortedArr, func(i, j int) bool { return sortedArr[i] < sortedArr[j] })).To(BeTrue())
   132  	})
   133  
   134  	It("podman pod ps --ctr-names", func() {
   135  		_, ec, podid := podmanTest.CreatePod("")
   136  		Expect(ec).To(Equal(0))
   137  
   138  		session := podmanTest.RunTopContainerInPod("test1", podid)
   139  		session.WaitWithDefaultTimeout()
   140  		Expect(session.ExitCode()).To(Equal(0))
   141  
   142  		_, ec, _ = podmanTest.RunLsContainerInPod("test2", podid)
   143  		Expect(ec).To(Equal(0))
   144  
   145  		session = podmanTest.Podman([]string{"pod", "ps", "--format={{.ContainerInfo}}", "--ctr-names"})
   146  		session.WaitWithDefaultTimeout()
   147  		Expect(session.ExitCode()).To(Equal(0))
   148  		Expect(session.OutputToString()).To(ContainSubstring("test1"))
   149  		Expect(session.OutputToString()).To(ContainSubstring("test2"))
   150  	})
   151  
   152  	It("podman pod ps filter ctr attributes", func() {
   153  		_, ec, podid1 := podmanTest.CreatePod("")
   154  		Expect(ec).To(Equal(0))
   155  
   156  		session := podmanTest.RunTopContainerInPod("test1", podid1)
   157  		session.WaitWithDefaultTimeout()
   158  		Expect(session.ExitCode()).To(Equal(0))
   159  
   160  		_, ec2, podid2 := podmanTest.CreatePod("")
   161  		Expect(ec2).To(Equal(0))
   162  
   163  		_, ec3, cid := podmanTest.RunLsContainerInPod("test2", podid2)
   164  		Expect(ec3).To(Equal(0))
   165  
   166  		session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-names=test1"})
   167  		session.WaitWithDefaultTimeout()
   168  		Expect(session.ExitCode()).To(Equal(0))
   169  		Expect(session.OutputToString()).To(ContainSubstring(podid1))
   170  		Expect(session.OutputToString()).To(Not(ContainSubstring(podid2)))
   171  
   172  		session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", fmt.Sprintf("ctr-ids=%s", cid)})
   173  		session.WaitWithDefaultTimeout()
   174  		Expect(session.ExitCode()).To(Equal(0))
   175  		Expect(session.OutputToString()).To(ContainSubstring(podid2))
   176  		Expect(session.OutputToString()).To(Not(ContainSubstring(podid1)))
   177  
   178  		_, ec3, podid3 := podmanTest.CreatePod("")
   179  		Expect(ec3).To(Equal(0))
   180  
   181  		session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-number=1"})
   182  		session.WaitWithDefaultTimeout()
   183  		Expect(session.ExitCode()).To(Equal(0))
   184  		Expect(session.OutputToString()).To(ContainSubstring(podid1))
   185  		Expect(session.OutputToString()).To(ContainSubstring(podid2))
   186  		Expect(session.OutputToString()).To(Not(ContainSubstring(podid3)))
   187  
   188  		session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-status=running"})
   189  		session.WaitWithDefaultTimeout()
   190  		Expect(session.ExitCode()).To(Equal(0))
   191  		Expect(session.OutputToString()).To(ContainSubstring(podid1))
   192  		Expect(session.OutputToString()).To(Not(ContainSubstring(podid2)))
   193  		Expect(session.OutputToString()).To(Not(ContainSubstring(podid3)))
   194  
   195  		session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-status=exited"})
   196  		session.WaitWithDefaultTimeout()
   197  		Expect(session.ExitCode()).To(Equal(0))
   198  		Expect(session.OutputToString()).To(ContainSubstring(podid2))
   199  		Expect(session.OutputToString()).To(Not(ContainSubstring(podid1)))
   200  		Expect(session.OutputToString()).To(Not(ContainSubstring(podid3)))
   201  
   202  		session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-status=created"})
   203  		session.WaitWithDefaultTimeout()
   204  		Expect(session.ExitCode()).To(Equal(0))
   205  		Expect(session.OutputToString()).To(BeEmpty())
   206  	})
   207  
   208  	It("podman pod ps filter labels", func() {
   209  		_, ec, podid1 := podmanTest.CreatePod("")
   210  		Expect(ec).To(Equal(0))
   211  
   212  		_, ec, podid2 := podmanTest.CreatePodWithLabels("", map[string]string{
   213  			"io.podman.test.label": "value1",
   214  			"io.podman.test.key":   "irrelevant-value",
   215  		})
   216  		Expect(ec).To(Equal(0))
   217  
   218  		_, ec, podid3 := podmanTest.CreatePodWithLabels("", map[string]string{
   219  			"io.podman.test.label": "value2",
   220  		})
   221  		Expect(ec).To(Equal(0))
   222  
   223  		session := podmanTest.Podman([]string{"pod", "ps", "--no-trunc", "--filter", "label=io.podman.test.key", "--filter", "label=io.podman.test.label=value1"})
   224  		session.WaitWithDefaultTimeout()
   225  		Expect(session.ExitCode()).To(Equal(0))
   226  		Expect(session.OutputToString()).To(Not(ContainSubstring(podid1)))
   227  		Expect(session.OutputToString()).To(ContainSubstring(podid2))
   228  		Expect(session.OutputToString()).To(Not(ContainSubstring(podid3)))
   229  	})
   230  })