diff --git a/test/jdk/jdk/internal/platform/cgroup/TestCgroupMetrics.java b/test/jdk/jdk/internal/platform/cgroup/TestCgroupMetrics.java index d1f2c3932fb..a25f31da397 100644 --- a/test/jdk/jdk/internal/platform/cgroup/TestCgroupMetrics.java +++ b/test/jdk/jdk/internal/platform/cgroup/TestCgroupMetrics.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,16 +36,7 @@ public class TestCgroupMetrics { public static void main(String[] args) throws Exception { - // If cgroups is not configured, report success. - Metrics metrics = Metrics.systemMetrics(); - if (metrics == null) { - System.out.println("TEST PASSED!!!"); - return; - } - - MetricsTester metricsTester = new MetricsTester(); - metricsTester.testAll(metrics); - System.out.println("TEST PASSED!!!"); + MetricsTester.main(args); } } diff --git a/test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java b/test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java index f1fc22e5e9b..854d24b2279 100644 --- a/test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java +++ b/test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -55,6 +55,7 @@ public static void main(String[] args) throws Exception { opts.addDockerOpts("--memory=256m"); opts.addJavaOpts("-cp", "/test-classes/"); opts.addJavaOpts("--add-exports", "java.base/jdk.internal.platform=ALL-UNNAMED"); + opts.addClassOptions("-incontainer"); DockerTestUtils.dockerRunJava(opts).shouldHaveExitValue(0).shouldContain("TEST PASSED!!!"); } finally { DockerTestUtils.removeDockerImage(imageName); diff --git a/test/lib/jdk/test/lib/containers/cgroup/MetricsTester.java b/test/lib/jdk/test/lib/containers/cgroup/MetricsTester.java index 168f5bb29c6..a6eff3d237a 100644 --- a/test/lib/jdk/test/lib/containers/cgroup/MetricsTester.java +++ b/test/lib/jdk/test/lib/containers/cgroup/MetricsTester.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Red Hat Inc. + * Copyright (c) 2020, 2022, Red Hat Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -52,14 +52,22 @@ private static CgroupMetricsTester createInstance(Metrics m) { } } - public void testAll(Metrics m) throws Exception { + private void testAll(Metrics m, boolean inContainer) throws Exception { CgroupMetricsTester tester = createInstance(m); tester.testCpuAccounting(); tester.testCpuConsumption(); tester.testCpuSchedulingMetrics(); tester.testCpuSets(); - tester.testMemorySubsystem(); - tester.testMemoryUsage(); + if (!inContainer) { + // If not running in a container, these test cases query the memory usage. + // of all processes in the entire system (or those belonging to the current + // Linux user). They cannot produce predictable results due to interference + // from unrelated processes. + System.out.println("testMemorySubsystem and testMemoryUsage skipped"); + } else { + tester.testMemorySubsystem(); + tester.testMemoryUsage(); + } tester.testMisc(); } @@ -71,8 +79,14 @@ public static void main(String[] args) throws Exception { return; } + boolean inContainer = false; + if (args.length > 0 && "-incontainer".equals(args[0])) { + inContainer = true; + } + System.out.println("inContainer = " + inContainer); + MetricsTester metricsTester = new MetricsTester(); - metricsTester.testAll(m); + metricsTester.testAll(m, inContainer); System.out.println("TEST PASSED!!!"); } }