Signed-off-by: Derek McGowan <derek@mcg.dev>
| ... | ... |
@@ -72,12 +72,6 @@ if [ "$DOCKER_EXPERIMENTAL" ]; then |
| 72 | 72 |
fi |
| 73 | 73 |
|
| 74 | 74 |
dockerd="dockerd" |
| 75 |
-if [ -f "/sys/fs/cgroup/cgroup.controllers" ]; then |
|
| 76 |
- if [ -z "$TEST_IGNORE_CGROUP_CHECK" ] && [ -z "$TEST_SKIP_INTEGRATION_CLI" ]; then |
|
| 77 |
- echo >&2 '# cgroup v2 requires TEST_SKIP_INTEGRATION_CLI to be set' |
|
| 78 |
- exit 1 |
|
| 79 |
- fi |
|
| 80 |
-fi |
|
| 81 | 75 |
|
| 82 | 76 |
if [ -n "$DOCKER_ROOTLESS" ]; then |
| 83 | 77 |
if [ -z "$TEST_SKIP_INTEGRATION_CLI" ]; then |
| ... | ... |
@@ -25,6 +25,7 @@ var expectedNetworkInterfaceStats = strings.Split("rx_bytes rx_dropped rx_errors
|
| 25 | 25 |
|
| 26 | 26 |
func (s *DockerAPISuite) TestAPIStatsNoStreamGetCpu(c *testing.T) {
|
| 27 | 27 |
skip.If(c, RuntimeIsWindowsContainerd(), "FIXME: Broken on Windows + containerd combination") |
| 28 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 28 | 29 |
out := cli.DockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "while true;usleep 100; do echo 'Hello'; done").Stdout() |
| 29 | 30 |
id := strings.TrimSpace(out) |
| 30 | 31 |
cli.WaitRun(c, id) |
| ... | ... |
@@ -3949,6 +3949,7 @@ func (s *DockerCLIBuildSuite) TestBuildEmptyStringVolume(c *testing.T) {
|
| 3949 | 3949 |
|
| 3950 | 3950 |
func (s *DockerCLIBuildSuite) TestBuildContainerWithCgroupParent(c *testing.T) {
|
| 3951 | 3951 |
testRequires(c, testEnv.IsLocalDaemon, DaemonIsLinux) |
| 3952 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 3952 | 3953 |
|
| 3953 | 3954 |
cgroupParent := "test" |
| 3954 | 3955 |
data, err := os.ReadFile("/proc/self/cgroup")
|
| ... | ... |
@@ -1619,6 +1619,7 @@ func (s *DockerDaemonSuite) TestDaemonRestartContainerLinksRestart(c *testing.T) |
| 1619 | 1619 |
|
| 1620 | 1620 |
func (s *DockerDaemonSuite) TestDaemonCgroupParent(c *testing.T) {
|
| 1621 | 1621 |
testRequires(c, DaemonIsLinux) |
| 1622 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 1622 | 1623 |
|
| 1623 | 1624 |
cgroupParent := "test" |
| 1624 | 1625 |
name := "cgroup-test" |
| ... | ... |
@@ -3209,6 +3209,7 @@ func (s *DockerCLIRunSuite) TestRunWithUlimits(c *testing.T) {
|
| 3209 | 3209 |
func (s *DockerCLIRunSuite) TestRunContainerWithCgroupParent(c *testing.T) {
|
| 3210 | 3210 |
// Not applicable on Windows as uses Unix specific functionality |
| 3211 | 3211 |
testRequires(c, DaemonIsLinux) |
| 3212 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 3212 | 3213 |
|
| 3213 | 3214 |
// cgroup-parent relative path |
| 3214 | 3215 |
testRunContainerWithCgroupParent(c, "test", "cgroup-test") |
| ... | ... |
@@ -3244,6 +3245,7 @@ func testRunContainerWithCgroupParent(c *testing.T, cgroupParent, name string) {
|
| 3244 | 3244 |
func (s *DockerCLIRunSuite) TestRunInvalidCgroupParent(c *testing.T) {
|
| 3245 | 3245 |
// Not applicable on Windows as uses Unix specific functionality |
| 3246 | 3246 |
testRequires(c, DaemonIsLinux) |
| 3247 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 3247 | 3248 |
|
| 3248 | 3249 |
testRunInvalidCgroupParent(c, "../../../../../../../../SHOULD_NOT_EXIST", "SHOULD_NOT_EXIST", "cgroup-invalid-test") |
| 3249 | 3250 |
|
| ... | ... |
@@ -3284,6 +3286,7 @@ func (s *DockerCLIRunSuite) TestRunContainerWithCgroupMountRO(c *testing.T) {
|
| 3284 | 3284 |
// Not applicable on Windows as uses Unix specific functionality |
| 3285 | 3285 |
// --read-only + userns has remount issues |
| 3286 | 3286 |
testRequires(c, DaemonIsLinux, NotUserNamespace) |
| 3287 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 3287 | 3288 |
|
| 3288 | 3289 |
filename := "/sys/fs/cgroup/devices/test123" |
| 3289 | 3290 |
out, _, err := dockerCmdWithError("run", "busybox", "touch", filename)
|
| ... | ... |
@@ -4433,6 +4436,7 @@ func (s *DockerCLIRunSuite) TestRunHostnameInHostMode(c *testing.T) {
|
| 4433 | 4433 |
|
| 4434 | 4434 |
func (s *DockerCLIRunSuite) TestRunAddDeviceCgroupRule(c *testing.T) {
|
| 4435 | 4435 |
testRequires(c, DaemonIsLinux) |
| 4436 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 4436 | 4437 |
|
| 4437 | 4438 |
const deviceRule = "c 7:128 rwm" |
| 4438 | 4439 |
|
| ... | ... |
@@ -26,6 +26,7 @@ import ( |
| 26 | 26 |
"gotest.tools/v3/assert" |
| 27 | 27 |
is "gotest.tools/v3/assert/cmp" |
| 28 | 28 |
"gotest.tools/v3/icmd" |
| 29 |
+ "gotest.tools/v3/skip" |
|
| 29 | 30 |
) |
| 30 | 31 |
|
| 31 | 32 |
// #6509 |
| ... | ... |
@@ -453,6 +454,7 @@ func (s *DockerCLIRunSuite) TestRunAttachInvalidDetachKeySequencePreserved(c *te |
| 453 | 453 |
// "test" should be printed |
| 454 | 454 |
func (s *DockerCLIRunSuite) TestRunWithCPUQuota(c *testing.T) {
|
| 455 | 455 |
testRequires(c, cpuCfsQuota) |
| 456 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 456 | 457 |
|
| 457 | 458 |
const file = "/sys/fs/cgroup/cpu/cpu.cfs_quota_us" |
| 458 | 459 |
out := cli.DockerCmd(c, "run", "--cpu-quota", "8000", "--name", "test", "busybox", "cat", file).Combined() |
| ... | ... |
@@ -464,6 +466,7 @@ func (s *DockerCLIRunSuite) TestRunWithCPUQuota(c *testing.T) {
|
| 464 | 464 |
|
| 465 | 465 |
func (s *DockerCLIRunSuite) TestRunWithCpuPeriod(c *testing.T) {
|
| 466 | 466 |
testRequires(c, cpuCfsPeriod) |
| 467 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 467 | 468 |
|
| 468 | 469 |
const file = "/sys/fs/cgroup/cpu/cpu.cfs_period_us" |
| 469 | 470 |
out := cli.DockerCmd(c, "run", "--cpu-period", "50000", "--name", "test", "busybox", "cat", file).Combined() |
| ... | ... |
@@ -494,6 +497,7 @@ func (s *DockerCLIRunSuite) TestRunWithInvalidCpuPeriod(c *testing.T) {
|
| 494 | 494 |
|
| 495 | 495 |
func (s *DockerCLIRunSuite) TestRunWithCPUShares(c *testing.T) {
|
| 496 | 496 |
testRequires(c, cpuShare) |
| 497 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 497 | 498 |
|
| 498 | 499 |
const file = "/sys/fs/cgroup/cpu/cpu.shares" |
| 499 | 500 |
out := cli.DockerCmd(c, "run", "--cpu-shares", "1000", "--name", "test", "busybox", "cat", file).Combined() |
| ... | ... |
@@ -514,6 +518,7 @@ func (s *DockerCLIRunSuite) TestRunEchoStdoutWithCPUSharesAndMemoryLimit(c *test |
| 514 | 514 |
|
| 515 | 515 |
func (s *DockerCLIRunSuite) TestRunWithCpusetCpus(c *testing.T) {
|
| 516 | 516 |
testRequires(c, cgroupCpuset) |
| 517 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 517 | 518 |
|
| 518 | 519 |
const file = "/sys/fs/cgroup/cpuset/cpuset.cpus" |
| 519 | 520 |
out := cli.DockerCmd(c, "run", "--cpuset-cpus", "0", "--name", "test", "busybox", "cat", file).Combined() |
| ... | ... |
@@ -525,6 +530,7 @@ func (s *DockerCLIRunSuite) TestRunWithCpusetCpus(c *testing.T) {
|
| 525 | 525 |
|
| 526 | 526 |
func (s *DockerCLIRunSuite) TestRunWithCpusetMems(c *testing.T) {
|
| 527 | 527 |
testRequires(c, cgroupCpuset) |
| 528 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 528 | 529 |
|
| 529 | 530 |
const file = "/sys/fs/cgroup/cpuset/cpuset.mems" |
| 530 | 531 |
out := cli.DockerCmd(c, "run", "--cpuset-mems", "0", "--name", "test", "busybox", "cat", file).Combined() |
| ... | ... |
@@ -536,6 +542,7 @@ func (s *DockerCLIRunSuite) TestRunWithCpusetMems(c *testing.T) {
|
| 536 | 536 |
|
| 537 | 537 |
func (s *DockerCLIRunSuite) TestRunWithBlkioWeight(c *testing.T) {
|
| 538 | 538 |
testRequires(c, blkioWeight) |
| 539 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 539 | 540 |
|
| 540 | 541 |
const file = "/sys/fs/cgroup/blkio/blkio.weight" |
| 541 | 542 |
out := cli.DockerCmd(c, "run", "--blkio-weight", "300", "--name", "test", "busybox", "cat", file).Combined() |
| ... | ... |
@@ -547,6 +554,7 @@ func (s *DockerCLIRunSuite) TestRunWithBlkioWeight(c *testing.T) {
|
| 547 | 547 |
|
| 548 | 548 |
func (s *DockerCLIRunSuite) TestRunWithInvalidBlkioWeight(c *testing.T) {
|
| 549 | 549 |
testRequires(c, blkioWeight) |
| 550 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 550 | 551 |
out, _, err := dockerCmdWithError("run", "--blkio-weight", "5", "busybox", "true")
|
| 551 | 552 |
assert.ErrorContains(c, err, "", out) |
| 552 | 553 |
expected := "Range of blkio weight is from 10 to 1000" |
| ... | ... |
@@ -605,6 +613,7 @@ func (s *DockerCLIRunSuite) TestRunOOMExitCode(c *testing.T) {
|
| 605 | 605 |
|
| 606 | 606 |
func (s *DockerCLIRunSuite) TestRunWithMemoryLimit(c *testing.T) {
|
| 607 | 607 |
testRequires(c, memoryLimitSupport) |
| 608 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 608 | 609 |
|
| 609 | 610 |
const file = "/sys/fs/cgroup/memory/memory.limit_in_bytes" |
| 610 | 611 |
cli.DockerCmd(c, "run", "-m", "32M", "--name", "test", "busybox", "cat", file).Assert(c, icmd.Expected{
|
| ... | ... |
@@ -649,6 +658,7 @@ func (s *DockerCLIRunSuite) TestRunWithSwappinessInvalid(c *testing.T) {
|
| 649 | 649 |
|
| 650 | 650 |
func (s *DockerCLIRunSuite) TestRunWithMemoryReservation(c *testing.T) {
|
| 651 | 651 |
testRequires(c, testEnv.IsLocalDaemon, memoryReservationSupport) |
| 652 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 652 | 653 |
|
| 653 | 654 |
const file = "/sys/fs/cgroup/memory/memory.soft_limit_in_bytes" |
| 654 | 655 |
out := cli.DockerCmd(c, "run", "--memory-reservation", "200M", "--name", "test", "busybox", "cat", file).Combined() |
| ... | ... |
@@ -1364,6 +1374,7 @@ func (s *DockerCLIRunSuite) TestRunDeviceSymlink(c *testing.T) {
|
| 1364 | 1364 |
// TestRunPIDsLimit makes sure the pids cgroup is set with --pids-limit |
| 1365 | 1365 |
func (s *DockerCLIRunSuite) TestRunPIDsLimit(c *testing.T) {
|
| 1366 | 1366 |
testRequires(c, testEnv.IsLocalDaemon, pidsLimit) |
| 1367 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 1367 | 1368 |
|
| 1368 | 1369 |
const file = "/sys/fs/cgroup/pids/pids.max" |
| 1369 | 1370 |
out := cli.DockerCmd(c, "run", "--name", "skittles", "--pids-limit", "4", "busybox", "cat", file).Combined() |
| ... | ... |
@@ -1375,6 +1386,7 @@ func (s *DockerCLIRunSuite) TestRunPIDsLimit(c *testing.T) {
|
| 1375 | 1375 |
|
| 1376 | 1376 |
func (s *DockerCLIRunSuite) TestRunPrivilegedAllowedDevices(c *testing.T) {
|
| 1377 | 1377 |
testRequires(c, DaemonIsLinux, NotUserNamespace) |
| 1378 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 1378 | 1379 |
|
| 1379 | 1380 |
const file = "/sys/fs/cgroup/devices/devices.list" |
| 1380 | 1381 |
out := cli.DockerCmd(c, "run", "--privileged", "busybox", "cat", file).Combined() |
| ... | ... |
@@ -1529,6 +1541,7 @@ func (s *DockerDaemonSuite) TestRunWithDaemonDefaultSeccompProfile(c *testing.T) |
| 1529 | 1529 |
|
| 1530 | 1530 |
func (s *DockerCLIRunSuite) TestRunWithNanoCPUs(c *testing.T) {
|
| 1531 | 1531 |
testRequires(c, cpuCfsQuota, cpuCfsPeriod) |
| 1532 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 1532 | 1533 |
|
| 1533 | 1534 |
const file1 = "/sys/fs/cgroup/cpu/cpu.cfs_quota_us" |
| 1534 | 1535 |
const file2 = "/sys/fs/cgroup/cpu/cpu.cfs_period_us" |
| ... | ... |
@@ -19,6 +19,7 @@ import ( |
| 19 | 19 |
"github.com/docker/docker/testutil/request" |
| 20 | 20 |
"gotest.tools/v3/assert" |
| 21 | 21 |
is "gotest.tools/v3/assert/cmp" |
| 22 |
+ "gotest.tools/v3/skip" |
|
| 22 | 23 |
) |
| 23 | 24 |
|
| 24 | 25 |
func (s *DockerCLIUpdateSuite) TearDownTest(ctx context.Context, c *testing.T) {
|
| ... | ... |
@@ -32,6 +33,7 @@ func (s *DockerCLIUpdateSuite) OnTimeout(c *testing.T) {
|
| 32 | 32 |
func (s *DockerCLIUpdateSuite) TestUpdateRunningContainer(c *testing.T) {
|
| 33 | 33 |
testRequires(c, DaemonIsLinux) |
| 34 | 34 |
testRequires(c, memoryLimitSupport) |
| 35 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 35 | 36 |
|
| 36 | 37 |
const name = "test-update-container" |
| 37 | 38 |
cli.DockerCmd(c, "run", "-d", "--name", name, "-m", "300M", "busybox", "top") |
| ... | ... |
@@ -47,6 +49,7 @@ func (s *DockerCLIUpdateSuite) TestUpdateRunningContainer(c *testing.T) {
|
| 47 | 47 |
func (s *DockerCLIUpdateSuite) TestUpdateRunningContainerWithRestart(c *testing.T) {
|
| 48 | 48 |
testRequires(c, DaemonIsLinux) |
| 49 | 49 |
testRequires(c, memoryLimitSupport) |
| 50 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 50 | 51 |
|
| 51 | 52 |
const name = "test-update-container" |
| 52 | 53 |
cli.DockerCmd(c, "run", "-d", "--name", name, "-m", "300M", "busybox", "top") |
| ... | ... |
@@ -63,6 +66,7 @@ func (s *DockerCLIUpdateSuite) TestUpdateRunningContainerWithRestart(c *testing. |
| 63 | 63 |
func (s *DockerCLIUpdateSuite) TestUpdateStoppedContainer(c *testing.T) {
|
| 64 | 64 |
testRequires(c, DaemonIsLinux) |
| 65 | 65 |
testRequires(c, memoryLimitSupport) |
| 66 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 66 | 67 |
|
| 67 | 68 |
const name = "test-update-container" |
| 68 | 69 |
const file = "/sys/fs/cgroup/memory/memory.limit_in_bytes" |
| ... | ... |
@@ -78,6 +82,7 @@ func (s *DockerCLIUpdateSuite) TestUpdateStoppedContainer(c *testing.T) {
|
| 78 | 78 |
func (s *DockerCLIUpdateSuite) TestUpdatePausedContainer(c *testing.T) {
|
| 79 | 79 |
testRequires(c, DaemonIsLinux) |
| 80 | 80 |
testRequires(c, cpuShare) |
| 81 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 81 | 82 |
|
| 82 | 83 |
const name = "test-update-container" |
| 83 | 84 |
cli.DockerCmd(c, "run", "-d", "--name", name, "--cpu-shares", "1000", "busybox", "top") |
| ... | ... |
@@ -96,6 +101,7 @@ func (s *DockerCLIUpdateSuite) TestUpdateWithUntouchedFields(c *testing.T) {
|
| 96 | 96 |
testRequires(c, DaemonIsLinux) |
| 97 | 97 |
testRequires(c, memoryLimitSupport) |
| 98 | 98 |
testRequires(c, cpuShare) |
| 99 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 99 | 100 |
|
| 100 | 101 |
const name = "test-update-container" |
| 101 | 102 |
cli.DockerCmd(c, "run", "-d", "--name", name, "-m", "300M", "--cpu-shares", "800", "busybox", "top") |
| ... | ... |
@@ -136,6 +142,7 @@ func (s *DockerCLIUpdateSuite) TestUpdateSwapMemoryOnly(c *testing.T) {
|
| 136 | 136 |
testRequires(c, DaemonIsLinux) |
| 137 | 137 |
testRequires(c, memoryLimitSupport) |
| 138 | 138 |
testRequires(c, swapMemorySupport) |
| 139 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 139 | 140 |
|
| 140 | 141 |
const name = "test-update-container" |
| 141 | 142 |
cli.DockerCmd(c, "run", "-d", "--name", name, "--memory", "300M", "--memory-swap", "500M", "busybox", "top") |
| ... | ... |
@@ -152,6 +159,7 @@ func (s *DockerCLIUpdateSuite) TestUpdateInvalidSwapMemory(c *testing.T) {
|
| 152 | 152 |
testRequires(c, DaemonIsLinux) |
| 153 | 153 |
testRequires(c, memoryLimitSupport) |
| 154 | 154 |
testRequires(c, swapMemorySupport) |
| 155 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 155 | 156 |
|
| 156 | 157 |
const name = "test-update-container" |
| 157 | 158 |
cli.DockerCmd(c, "run", "-d", "--name", name, "--memory", "300M", "--memory-swap", "500M", "busybox", "top") |
| ... | ... |
@@ -245,6 +253,7 @@ func (s *DockerCLIUpdateSuite) TestUpdateNotAffectMonitorRestartPolicy(c *testin |
| 245 | 245 |
|
| 246 | 246 |
func (s *DockerCLIUpdateSuite) TestUpdateWithNanoCPUs(c *testing.T) {
|
| 247 | 247 |
testRequires(c, cpuCfsQuota, cpuCfsPeriod) |
| 248 |
+ skip.If(c, onlyCgroupsv2(), "FIXME: cgroupsV2 not supported yet") |
|
| 248 | 249 |
|
| 249 | 250 |
const file1 = "/sys/fs/cgroup/cpu/cpu.cfs_quota_us" |
| 250 | 251 |
const file2 = "/sys/fs/cgroup/cpu/cpu.cfs_period_us" |
| ... | ... |
@@ -6,6 +6,7 @@ import ( |
| 6 | 6 |
"os" |
| 7 | 7 |
"strings" |
| 8 | 8 |
|
| 9 |
+ "github.com/containerd/cgroups/v3" |
|
| 9 | 10 |
"github.com/docker/docker/pkg/sysinfo" |
| 10 | 11 |
) |
| 11 | 12 |
|
| ... | ... |
@@ -68,6 +69,11 @@ func bridgeNfIptables() bool {
|
| 68 | 68 |
return err == nil && strings.TrimSpace(string(content)) == "1" |
| 69 | 69 |
} |
| 70 | 70 |
|
| 71 |
+func onlyCgroupsv2() bool {
|
|
| 72 |
+ // Only check for unified, cgroup v1 tests can run under other modes |
|
| 73 |
+ return cgroups.Mode() == cgroups.Unified |
|
| 74 |
+} |
|
| 75 |
+ |
|
| 71 | 76 |
func unprivilegedUsernsClone() bool {
|
| 72 | 77 |
content, err := os.ReadFile("/proc/sys/kernel/unprivileged_userns_clone")
|
| 73 | 78 |
return err != nil || !strings.Contains(string(content), "0") |