6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 import java.util.Arrays;
25 import jdk.internal.platform.Metrics;
26
27 public class MetricsMemoryTester {
28 public static void main(String[] args) {
29 System.out.println(Arrays.toString(args));
30 switch (args[0]) {
31 case "memory":
32 testMemoryLimit(args[1]);
33 break;
34 case "memoryswap":
35 testMemoryAndSwapLimit(args[1], args[2]);
36 break;
37 case "kernelmem":
38 testKernelMemoryLimit(args[1]);
39 break;
40 case "oomkill":
41 testOomKillFlag(Boolean.parseBoolean(args[2]));
42 break;
43 case "failcount":
44 testMemoryFailCount();
45 break;
90 + Metrics.systemMetrics().getMemoryFailCount() + "]"
91 + ", old : [" + count + "]");
92 }
93 System.out.println("TEST PASSED!!!");
94 }
95
96 private static void testMemorySoftLimit(String softLimit) {
97
98 long memorySoftLimit = Metrics.systemMetrics().getMemorySoftLimit();
99 long newmemorySoftLimit = getMemoryValue(softLimit);
100
101 if (newmemorySoftLimit != memorySoftLimit) {
102 throw new RuntimeException("Memory softlimit not equal, Actual : ["
103 + newmemorySoftLimit + "]" + ", Expected : ["
104 + memorySoftLimit + "]");
105 }
106 System.out.println("TEST PASSED!!!");
107 }
108
109 private static void testKernelMemoryLimit(String value) {
110 long limit = getMemoryValue(value);
111 long kmemlimit = Metrics.systemMetrics().getKernelMemoryLimit();
112 if (kmemlimit != 0 && limit != kmemlimit) {
113 throw new RuntimeException("Kernel Memory limit not equal, expected : ["
114 + limit + "]" + ", got : ["
115 + kmemlimit + "]");
116 }
117 System.out.println("TEST PASSED!!!");
118 }
119
120 private static void testMemoryAndSwapLimit(String memory, String memAndSwap) {
121 long expectedMem = getMemoryValue(memory);
122 long expectedMemAndSwap = getMemoryValue(memAndSwap);
123
124 if (expectedMem != Metrics.systemMetrics().getMemoryLimit()
125 || expectedMemAndSwap != Metrics.systemMetrics().getMemoryAndSwapLimit()) {
126 System.err.println("Memory and swap limit not equal, expected : ["
127 + expectedMem + ", " + expectedMemAndSwap + "]"
128 + ", got : [" + Metrics.systemMetrics().getMemoryLimit()
129 + ", " + Metrics.systemMetrics().getMemoryAndSwapLimit() + "]");
130 }
131 System.out.println("TEST PASSED!!!");
132 }
133
134 private static long getMemoryValue(String value) {
135 long result;
136 if (value.endsWith("m")) {
137 result = Long.parseLong(value.substring(0, value.length() - 1))
138 * 1024 * 1024;
139 } else if (value.endsWith("g")) {
140 result = Long.parseLong(value.substring(0, value.length() - 1))
141 * 1024 * 1024 * 1024;
142 } else {
143 result = Long.parseLong(value);
144 }
145 return result;
146 }
147
148 private static void testOomKillFlag(boolean oomKillFlag) {
149 if (!(oomKillFlag ^ Metrics.systemMetrics().isMemoryOOMKillEnabled())) {
150 throw new RuntimeException("oomKillFlag error");
151 }
152 System.out.println("TEST PASSED!!!");
153 }
154 }
|
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 import java.util.Arrays;
25 import jdk.internal.platform.Metrics;
26 import jdk.internal.platform.MetricsCgroupV1;
27
28 public class MetricsMemoryTester {
29 public static void main(String[] args) {
30 System.out.println(Arrays.toString(args));
31 switch (args[0]) {
32 case "memory":
33 testMemoryLimit(args[1]);
34 break;
35 case "memoryswap":
36 testMemoryAndSwapLimit(args[1], args[2]);
37 break;
38 case "kernelmem":
39 testKernelMemoryLimit(args[1]);
40 break;
41 case "oomkill":
42 testOomKillFlag(Boolean.parseBoolean(args[2]));
43 break;
44 case "failcount":
45 testMemoryFailCount();
46 break;
91 + Metrics.systemMetrics().getMemoryFailCount() + "]"
92 + ", old : [" + count + "]");
93 }
94 System.out.println("TEST PASSED!!!");
95 }
96
97 private static void testMemorySoftLimit(String softLimit) {
98
99 long memorySoftLimit = Metrics.systemMetrics().getMemorySoftLimit();
100 long newmemorySoftLimit = getMemoryValue(softLimit);
101
102 if (newmemorySoftLimit != memorySoftLimit) {
103 throw new RuntimeException("Memory softlimit not equal, Actual : ["
104 + newmemorySoftLimit + "]" + ", Expected : ["
105 + memorySoftLimit + "]");
106 }
107 System.out.println("TEST PASSED!!!");
108 }
109
110 private static void testKernelMemoryLimit(String value) {
111 Metrics m = Metrics.systemMetrics();
112 if (m instanceof MetricsCgroupV1) {
113 MetricsCgroupV1 mCgroupV1 = (MetricsCgroupV1)m;
114 System.out.println("TEST PASSED!!!");
115 long limit = getMemoryValue(value);
116 long kmemlimit = mCgroupV1.getKernelMemoryLimit();
117 if (kmemlimit != 0 && limit != kmemlimit) {
118 throw new RuntimeException("Kernel Memory limit not equal, expected : ["
119 + limit + "]" + ", got : ["
120 + kmemlimit + "]");
121 }
122 } else {
123 throw new RuntimeException("oomKillFlag test not supported for cgroups v2");
124 }
125 }
126
127 private static void testMemoryAndSwapLimit(String memory, String memAndSwap) {
128 long expectedMem = getMemoryValue(memory);
129 long expectedMemAndSwap = getMemoryValue(memAndSwap);
130
131 if (expectedMem != Metrics.systemMetrics().getMemoryLimit()
132 || expectedMemAndSwap != Metrics.systemMetrics().getMemoryAndSwapLimit()) {
133 System.err.println("Memory and swap limit not equal, expected : ["
134 + expectedMem + ", " + expectedMemAndSwap + "]"
135 + ", got : [" + Metrics.systemMetrics().getMemoryLimit()
136 + ", " + Metrics.systemMetrics().getMemoryAndSwapLimit() + "]");
137 }
138 System.out.println("TEST PASSED!!!");
139 }
140
141 private static long getMemoryValue(String value) {
142 long result;
143 if (value.endsWith("m")) {
144 result = Long.parseLong(value.substring(0, value.length() - 1))
145 * 1024 * 1024;
146 } else if (value.endsWith("g")) {
147 result = Long.parseLong(value.substring(0, value.length() - 1))
148 * 1024 * 1024 * 1024;
149 } else {
150 result = Long.parseLong(value);
151 }
152 return result;
153 }
154
155 private static void testOomKillFlag(boolean oomKillFlag) {
156 Metrics m = Metrics.systemMetrics();
157 if (m instanceof MetricsCgroupV1) {
158 MetricsCgroupV1 mCgroupV1 = (MetricsCgroupV1)m;
159 Boolean expected = Boolean.valueOf(oomKillFlag);
160 Boolean actual = mCgroupV1.isMemoryOOMKillEnabled();
161 if (!(expected.equals(actual))) {
162 throw new RuntimeException("oomKillFlag error");
163 }
164 System.out.println("TEST PASSED!!!");
165 } else {
166 throw new RuntimeException("oomKillFlag test not supported for cgroups v2");
167 }
168 }
169 }
|