< prev index next >

test/jdk/jdk/internal/platform/docker/MetricsMemoryTester.java

Print this page
@  rev 57734 : Review feedback
|
o  rev 57733 : 8231111: Cgroups v2: Rework Metrics in java.base so as to recognize unified hierarchy
|  Reviewed-by: bobv, mchung
~

*** 1,7 **** /* ! * Copyright (c) 2018, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2018, 2020, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 21,30 **** --- 21,31 ---- * questions. */ import java.util.Arrays; import jdk.internal.platform.Metrics; + import jdk.internal.platform.MetricsCgroupV1; public class MetricsMemoryTester { public static void main(String[] args) { System.out.println(Arrays.toString(args)); switch (args[0]) {
*** 63,84 **** --- 64,93 ---- private static void testMemoryFailCount() { long count = Metrics.systemMetrics().getMemoryFailCount(); // Allocate 512M of data byte[][] bytes = new byte[64][]; + boolean atLeastOneAllocationWorked = false; for (int i = 0; i < 64; i++) { try { bytes[i] = new byte[8 * 1024 * 1024]; + atLeastOneAllocationWorked = true; // Break out as soon as we see an increase in failcount // to avoid getting killed by the OOM killer. if (Metrics.systemMetrics().getMemoryFailCount() > count) { break; } } catch (Error e) { // OOM error break; } } + if (!atLeastOneAllocationWorked) { + System.out.println("Allocation failed immediately. Ignoring test!"); + return; + } + // Be sure bytes allocations don't get optimized out + System.out.println("DEBUG: Bytes allocation length 1: " + bytes[0].length); if (Metrics.systemMetrics().getMemoryFailCount() <= count) { throw new RuntimeException("Memory fail count : new : [" + Metrics.systemMetrics().getMemoryFailCount() + "]" + ", old : [" + count + "]"); }
*** 97,114 **** } System.out.println("TEST PASSED!!!"); } private static void testKernelMemoryLimit(String value) { long limit = getMemoryValue(value); ! long kmemlimit = Metrics.systemMetrics().getKernelMemoryLimit(); if (kmemlimit != 0 && limit != kmemlimit) { throw new RuntimeException("Kernel Memory limit not equal, expected : [" + limit + "]" + ", got : [" + kmemlimit + "]"); } ! System.out.println("TEST PASSED!!!"); } private static void testMemoryAndSwapLimit(String memory, String memAndSwap) { long expectedMem = getMemoryValue(memory); long expectedMemAndSwap = getMemoryValue(memAndSwap); --- 106,129 ---- } System.out.println("TEST PASSED!!!"); } private static void testKernelMemoryLimit(String value) { + Metrics m = Metrics.systemMetrics(); + if (m instanceof MetricsCgroupV1) { + MetricsCgroupV1 mCgroupV1 = (MetricsCgroupV1)m; + System.out.println("TEST PASSED!!!"); long limit = getMemoryValue(value); ! long kmemlimit = mCgroupV1.getKernelMemoryLimit(); if (kmemlimit != 0 && limit != kmemlimit) { throw new RuntimeException("Kernel Memory limit not equal, expected : [" + limit + "]" + ", got : [" + kmemlimit + "]"); } ! } else { ! throw new RuntimeException("oomKillFlag test not supported for cgroups v2"); ! } } private static void testMemoryAndSwapLimit(String memory, String memAndSwap) { long expectedMem = getMemoryValue(memory); long expectedMemAndSwap = getMemoryValue(memAndSwap);
*** 136,146 **** } return result; } private static void testOomKillFlag(boolean oomKillFlag) { ! if (!(oomKillFlag ^ Metrics.systemMetrics().isMemoryOOMKillEnabled())) { throw new RuntimeException("oomKillFlag error"); } System.out.println("TEST PASSED!!!"); } } --- 151,169 ---- } return result; } private static void testOomKillFlag(boolean oomKillFlag) { ! Metrics m = Metrics.systemMetrics(); ! if (m instanceof MetricsCgroupV1) { ! MetricsCgroupV1 mCgroupV1 = (MetricsCgroupV1)m; ! Boolean expected = Boolean.valueOf(oomKillFlag); ! Boolean actual = mCgroupV1.isMemoryOOMKillEnabled(); ! if (!(expected.equals(actual))) { throw new RuntimeException("oomKillFlag error"); } System.out.println("TEST PASSED!!!"); + } else { + throw new RuntimeException("oomKillFlag test not supported for cgroups v2"); + } } }
< prev index next >