summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/apiv2/30-volumes.at47
-rw-r--r--test/apiv2/python/rest_api/test_v2_0_0_container.py23
-rw-r--r--test/e2e/pod_create_test.go44
-rw-r--r--test/e2e/stats_test.go11
-rw-r--r--test/e2e/system_connection_test.go6
5 files changed, 126 insertions, 5 deletions
diff --git a/test/apiv2/30-volumes.at b/test/apiv2/30-volumes.at
index ed606134a..5feceea7b 100644
--- a/test/apiv2/30-volumes.at
+++ b/test/apiv2/30-volumes.at
@@ -125,11 +125,6 @@ t POST libpod/volumes/prune?filters='{"label":["tes' 500 \
t POST libpod/volumes/prune?filters='{"label":["testlabel"]}' 200
t GET libpod/volumes/json?filters='{"label":["testlabel"]}' 200 length=0
-## Prune volumes
-t POST libpod/volumes/prune 200
-#After prune volumes, there should be no volume existing
-t GET libpod/volumes/json 200 length=0
-
# libpod api: do not use list filters for prune
t POST libpod/volumes/prune?filters='{"name":["anyname"]}' 500 \
.cause="\"name\" is an invalid volume filter"
@@ -146,4 +141,46 @@ t POST volumes/prune?filters='{"driver":["anydriver"]}' 500 \
t POST volumes/prune?filters='{"scope":["anyscope"]}' 500 \
.cause="\"scope\" is an invalid volume filter"
+## Prune volumes using until filter
+t POST libpod/volumes/create \
+ Name=foo5 \
+ Label='{"testuntil":""}' \
+ Options='{"type":"tmpfs","o":"nodev,noexec"}}' \
+ 201 \
+ .Name=foo5 \
+ .Labels.testuntil="" \
+ .Options.type=tmpfs \
+ .Options.o=nodev,noexec
+
+# with date way back in the past, volume should not be deleted
+t POST libpod/volumes/prune?filters='{"until":["500000"]}' 200
+t GET libpod/volumes/json?filters='{"label":["testuntil"]}' 200 length=1
+
+# with date far in the future, volume should be deleted
+t POST libpod/volumes/prune?filters='{"until":["5000000000"]}' 200
+t GET libpod/volumes/json?filters='{"label":["testuntil"]}' 200 length=0
+
+t POST libpod/volumes/create \
+ Name=foo6 \
+ Label='{"testuntilcompat":""}' \
+ Options='{"type":"tmpfs","o":"nodev,noexec"}}' \
+ 201 \
+ .Name=foo6 \
+ .Labels.testuntilcompat="" \
+ .Options.type=tmpfs \
+ .Options.o=nodev,noexec
+
+# with date way back in the past, volume should not be deleted (compat api)
+t POST volumes/prune?filters='{"until":["500000"]}' 200
+t GET libpod/volumes/json?filters='{"label":["testuntilcompat"]}' 200 length=1
+
+# with date far in the future, volume should be deleted (compat api)
+t POST volumes/prune?filters='{"until":["5000000000"]}' 200
+t GET libpod/volumes/json?filters='{"label":["testuntilcompat"]}' 200 length=0
+
+## Prune volumes
+t POST libpod/volumes/prune 200
+#After prune volumes, there should be no volume existing
+t GET libpod/volumes/json 200 length=0
+
# vim: filetype=sh
diff --git a/test/apiv2/python/rest_api/test_v2_0_0_container.py b/test/apiv2/python/rest_api/test_v2_0_0_container.py
index b4b3af2df..2fab4aeb9 100644
--- a/test/apiv2/python/rest_api/test_v2_0_0_container.py
+++ b/test/apiv2/python/rest_api/test_v2_0_0_container.py
@@ -14,6 +14,13 @@ class ContainerTestCase(APITestCase):
obj = r.json()
self.assertEqual(len(obj), 1)
+ def test_list_filters(self):
+ r = requests.get(self.podman_url + "/v1.40/containers/json?filters%3D%7B%22status%22%3A%5B%22running%22%5D%7D")
+ self.assertEqual(r.status_code, 200, r.text)
+ payload = r.json()
+ containerAmnt = len(payload)
+ self.assertGreater(containerAmnt, 0)
+
def test_list_all(self):
r = requests.get(self.uri("/containers/json?all=true"))
self.assertEqual(r.status_code, 200, r.text)
@@ -25,6 +32,22 @@ class ContainerTestCase(APITestCase):
self.assertId(r.content)
_ = parse(r.json()["Created"])
+ r = requests.post(
+ self.podman_url + "/v1.40/containers/create?name=topcontainer",
+ json={"Cmd": ["top"], "Image": "alpine:latest"},
+ )
+ self.assertEqual(r.status_code, 201, r.text)
+ payload = r.json()
+ container_id = payload["Id"]
+ self.assertIsNotNone(container_id)
+
+ r = requests.get(self.podman_url + f"/v1.40/containers/{payload['Id']}/json")
+ self.assertEqual(r.status_code, 200, r.text)
+ self.assertId(r.content)
+ out = r.json()
+ state = out["State"]["Health"]
+ self.assertIsInstance(state, dict)
+
def test_stats(self):
r = requests.get(self.uri(self.resolve_container("/containers/{}/stats?stream=false")))
self.assertIn(r.status_code, (200, 409), r.text)
diff --git a/test/e2e/pod_create_test.go b/test/e2e/pod_create_test.go
index a70d9f13f..e437c98e6 100644
--- a/test/e2e/pod_create_test.go
+++ b/test/e2e/pod_create_test.go
@@ -5,9 +5,12 @@ import (
"io/ioutil"
"os"
"path/filepath"
+ "strconv"
"strings"
+ "github.com/containers/common/pkg/sysinfo"
"github.com/containers/podman/v3/pkg/rootless"
+ "github.com/containers/podman/v3/pkg/util"
. "github.com/containers/podman/v3/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
@@ -515,4 +518,45 @@ ENTRYPOINT ["sleep","99999"]
Expect(create.ExitCode()).To(BeZero())
})
+ It("podman pod create --cpus", func() {
+ podName := "testPod"
+ numCPU := float64(sysinfo.NumCPU())
+ period, quota := util.CoresToPeriodAndQuota(numCPU)
+ numCPUStr := strconv.Itoa(int(numCPU))
+ podCreate := podmanTest.Podman([]string{"pod", "create", "--cpus", numCPUStr, "--name", podName})
+ podCreate.WaitWithDefaultTimeout()
+ Expect(podCreate.ExitCode()).To(Equal(0))
+
+ contCreate := podmanTest.Podman([]string{"container", "create", "--pod", podName, "alpine"})
+ contCreate.WaitWithDefaultTimeout()
+ Expect(podCreate.ExitCode()).To(Equal(0))
+
+ podInspect := podmanTest.Podman([]string{"pod", "inspect", podName})
+ podInspect.WaitWithDefaultTimeout()
+ Expect(podInspect.ExitCode()).To(Equal(0))
+ podJSON := podInspect.InspectPodToJSON()
+ Expect(podJSON.CPUPeriod).To(Equal(period))
+ Expect(podJSON.CPUQuota).To(Equal(quota))
+ })
+
+ It("podman pod create --cpuset-cpus", func() {
+ podName := "testPod"
+ ctrName := "testCtr"
+ numCPU := float64(sysinfo.NumCPU())
+ numCPUStr := strconv.Itoa(int(numCPU))
+ in := "0-" + numCPUStr
+ podCreate := podmanTest.Podman([]string{"pod", "create", "--cpuset-cpus", in, "--name", podName})
+ podCreate.WaitWithDefaultTimeout()
+ Expect(podCreate.ExitCode()).To(Equal(0))
+
+ contCreate := podmanTest.Podman([]string{"container", "create", "--name", ctrName, "--pod", podName, "alpine"})
+ contCreate.WaitWithDefaultTimeout()
+ Expect(podCreate.ExitCode()).To(Equal(0))
+
+ podInspect := podmanTest.Podman([]string{"pod", "inspect", podName})
+ podInspect.WaitWithDefaultTimeout()
+ Expect(podInspect.ExitCode()).To(Equal(0))
+ podJSON := podInspect.InspectPodToJSON()
+ Expect(podJSON.CPUSetCPUs).To(Equal(in))
+ })
})
diff --git a/test/e2e/stats_test.go b/test/e2e/stats_test.go
index 2218d72b5..7ab3dabc9 100644
--- a/test/e2e/stats_test.go
+++ b/test/e2e/stats_test.go
@@ -83,6 +83,17 @@ var _ = Describe("Podman stats", func() {
Expect(session.ExitCode()).To(Equal(0))
})
+ It("podman stats only output CPU data", func() {
+ session := podmanTest.RunTopContainer("")
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"stats", "--all", "--no-stream", "--format", "\"{{.ID}} {{.UpTime}} {{.AVGCPU}}\""})
+ session.WaitWithDefaultTimeout()
+ Expect(session.LineInOutputContains("UpTime")).To(BeTrue())
+ Expect(session.LineInOutputContains("AVGCPU")).To(BeTrue())
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
It("podman stats with json output", func() {
var found bool
session := podmanTest.RunTopContainer("")
diff --git a/test/e2e/system_connection_test.go b/test/e2e/system_connection_test.go
index 4697cf860..7c922a648 100644
--- a/test/e2e/system_connection_test.go
+++ b/test/e2e/system_connection_test.go
@@ -147,6 +147,12 @@ var _ = Describe("podman system connection", func() {
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
Expect(session.Out).Should(Say("Name *Identity *URI"))
+
+ cmd = []string{"system", "connection", "list", "--format", "{{.Name}}"}
+ session = podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+ Expect(session.OutputToString()).Should(Equal("devl* qe"))
})
It("failed default", func() {