< prev index next >

test/hotspot/jtreg/containers/docker/TestMisc.java

Print this page
@  rev 56576 : 8230305: Cgroups v2: Container awareness
|  Summary: Implement Cgroups v2 container awareness in hotspot
~  Reviewed-by: bobv

@@ -32,10 +32,11 @@
  *          jdk.jartool/sun.tools.jar
  * @build CheckContainerized sun.hotspot.WhiteBox PrintContainerInfo
  * @run driver ClassFileInstaller -jar whitebox.jar sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
  * @run driver TestMisc
  */
+import java.util.Optional;
 import jdk.test.lib.containers.docker.Common;
 import jdk.test.lib.containers.docker.DockerTestUtils;
 import jdk.test.lib.containers.docker.DockerRunOptions;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;

@@ -87,30 +88,44 @@
         Common.logNewTestCase("Test print_container_info()");
 
         DockerRunOptions opts = Common.newOpts(imageName, "PrintContainerInfo");
         Common.addWhiteBoxOpts(opts);
 
-        checkContainerInfo(Common.run(opts));
+        OutputAnalyzer out = Common.run(opts);
+        checkContainerInfoCommon(out);
+        checkContainerInfoCgroupSpecific(out);
     }
 
 
-    private static void checkContainerInfo(OutputAnalyzer out) throws Exception {
+    private static void checkContainerInfoCommon(OutputAnalyzer out) throws Exception {
         String[] expectedToContain = new String[] {
             "cpuset.cpus",
             "cpuset.mems",
             "CPU Shares",
             "CPU Quota",
             "CPU Period",
             "OSContainer::active_processor_count",
             "Memory Limit",
             "Memory Soft Limit",
             "Memory Usage",
-            "Maximum Memory Usage",
             "memory_max_usage_in_bytes"
         };
 
         for (String s : expectedToContain) {
             out.shouldContain(s);
         }
     }
 
+    private static void checkContainerInfoCgroupSpecific(OutputAnalyzer out) throws Exception {
+        Optional<String> cgroupVersString = out.asLines()
+                                                .stream()
+                                                .filter( l -> l.startsWith("Detected CGroups version is:") )
+                                                .findFirst();
+        if (cgroupVersString.isPresent()) { // only non-product builds have this
+            String cgroupVers = cgroupVersString.get().split(": ")[1].trim();
+            if ("cgroupv1".equals(cgroupVers)) {
+                out.shouldContain("Maximum Memory Usage"); // only supported for cgroups v1
+            }
+        }
+    }
+
 }
< prev index next >