mirror of
https://github.com/containers/podman.git
synced 2025-05-20 08:36:23 +08:00

Commit 1 of 2. More easy ones: test files that either work with ExitCleanly() or require very, very simple tweaks. Signed-off-by: Ed Santiago <santiago@redhat.com>
222 lines
8.0 KiB
Go
222 lines
8.0 KiB
Go
package integration
|
|
|
|
import (
|
|
"github.com/containers/common/pkg/cgroupv2"
|
|
. "github.com/containers/podman/v4/test/utils"
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Podman update", func() {
|
|
|
|
It("podman update container all options v1", func() {
|
|
SkipIfCgroupV2("testing flags that only work in cgroup v1")
|
|
SkipIfRootless("many of these handlers are not enabled while rootless in CI")
|
|
session := podmanTest.Podman([]string{"run", "-dt", ALPINE})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
ctrID := session.OutputToString()
|
|
|
|
commonArgs := []string{
|
|
"update",
|
|
"--cpus", "5",
|
|
"--cpuset-cpus", "0",
|
|
"--cpu-shares", "123",
|
|
"--cpuset-mems", "0",
|
|
"--memory", "1G",
|
|
"--memory-swap", "2G",
|
|
"--memory-reservation", "2G",
|
|
"--memory-swappiness", "50",
|
|
"--pids-limit", "123", ctrID}
|
|
|
|
session = podmanTest.Podman(commonArgs)
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
// checking cpu quota from --cpus
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/cpu/cpu.cfs_quota_us"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("500000"))
|
|
|
|
// checking cpuset-cpus
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/cpuset/cpuset.cpus"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(Equal("0"))
|
|
|
|
// checking cpuset-mems
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/cpuset/cpuset.mems"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(Equal("0"))
|
|
|
|
// checking memory limit
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/memory/memory.limit_in_bytes"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("1073741824"))
|
|
|
|
// checking memory-swap
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/memory/memory.memsw.limit_in_bytes"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("2147483648"))
|
|
|
|
// checking cpu-shares
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/cpu/cpu.shares"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("123"))
|
|
|
|
// checking pids-limit
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/pids/pids.max"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("123"))
|
|
|
|
})
|
|
|
|
It("podman update container unspecified pid limit", func() {
|
|
SkipIfCgroupV1("testing flags that only work in cgroup v2")
|
|
SkipIfRootless("many of these handlers are not enabled while rootless in CI")
|
|
session := podmanTest.Podman([]string{"run", "-dt", "--pids-limit", "-1", ALPINE})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
ctrID := session.OutputToString()
|
|
|
|
commonArgs := []string{
|
|
"update",
|
|
"--cpus", "5",
|
|
ctrID}
|
|
|
|
session = podmanTest.Podman(commonArgs)
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
ctrID = session.OutputToString()
|
|
|
|
// checking pids-limit was not changed after update when not specified as an option
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/pids.max"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("max"))
|
|
})
|
|
|
|
It("podman update container all options v2", func() {
|
|
SkipIfCgroupV1("testing flags that only work in cgroup v2")
|
|
SkipIfRootless("many of these handlers are not enabled while rootless in CI")
|
|
session := podmanTest.Podman([]string{"run", "-dt", ALPINE})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
ctrID := session.OutputToString()
|
|
|
|
commonArgs := []string{
|
|
"update",
|
|
"--cpus", "5",
|
|
"--cpuset-cpus", "0",
|
|
"--cpu-shares", "123",
|
|
"--cpuset-mems", "0",
|
|
"--memory", "1G",
|
|
"--memory-swap", "2G",
|
|
"--memory-reservation", "2G",
|
|
"--blkio-weight", "123",
|
|
"--device-read-bps", "/dev/zero:10mb",
|
|
"--device-write-bps", "/dev/zero:10mb",
|
|
"--device-read-iops", "/dev/zero:1000",
|
|
"--device-write-iops", "/dev/zero:1000",
|
|
"--pids-limit", "123",
|
|
ctrID}
|
|
|
|
session = podmanTest.Podman(commonArgs)
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
ctrID = session.OutputToString()
|
|
|
|
// checking cpu quota and period
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/cpu.max"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("500000"))
|
|
|
|
// checking blkio weight
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/io.bfq.weight"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("123"))
|
|
|
|
// checking device-read/write-bps/iops
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/io.max"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("rbps=10485760 wbps=10485760 riops=1000 wiops=1000"))
|
|
|
|
// checking cpuset-cpus
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/cpuset.cpus"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(Equal("0"))
|
|
|
|
// checking cpuset-mems
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/cpuset.mems"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(Equal("0"))
|
|
|
|
// checking memory limit
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/memory.max"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("1073741824"))
|
|
|
|
// checking memory-swap
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/memory.swap.max"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("1073741824"))
|
|
|
|
// checking cpu-shares
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/cpu.weight"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("5"))
|
|
|
|
// checking pids-limit
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/pids.max"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("123"))
|
|
})
|
|
|
|
It("podman update keep original resources if not overridden", func() {
|
|
SkipIfRootless("many of these handlers are not enabled while rootless in CI")
|
|
session := podmanTest.Podman([]string{"run", "-dt", "--cpus", "5", ALPINE})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
session = podmanTest.Podman([]string{
|
|
"update",
|
|
"--memory", "1G",
|
|
session.OutputToString(),
|
|
})
|
|
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
ctrID := session.OutputToString()
|
|
|
|
if v2, _ := cgroupv2.Enabled(); v2 {
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/cpu.max"})
|
|
} else {
|
|
session = podmanTest.Podman([]string{"exec", ctrID, "cat", "/sys/fs/cgroup/cpu/cpu.cfs_quota_us"})
|
|
}
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(session.OutputToString()).Should(ContainSubstring("500000"))
|
|
})
|
|
})
|