@@ -49,7 +49,7 @@ public void testJMXDirectBasic() throws Exception {
4949 }
5050
5151 @ Test
52- public void testDefaultOldGC () throws IOException {
52+ public void testDefaultOldGC () {
5353 try (final MisbehavingJMXServer server = new MisbehavingJMXServer .Builder ().build ()) {
5454 final List <Map <String , Object >> actualMetrics = startAndGetMetrics (server , false );
5555 List <String > gcGenerations = Arrays .asList (
@@ -61,7 +61,7 @@ public void testDefaultOldGC() throws IOException {
6161 }
6262
6363 @ Test
64- public void testDefaultNewGCMetricsUseParallelGC () throws IOException {
64+ public void testDefaultNewGCMetricsUseParallelGC () {
6565 try (final MisbehavingJMXServer server = new MisbehavingJMXServer .Builder ().withJDKImage (
6666 JDK_11 ).appendJavaOpts ("-XX:+UseParallelGC" ).build ()) {
6767 final List <Map <String , Object >> actualMetrics = startAndGetMetrics (server , true );
@@ -95,7 +95,7 @@ public void testDefaultNewGCMetricsUseConcMarkSweepGC() throws IOException {
9595 }
9696
9797 @ Test
98- public void testDefaultNewGCMetricsUseG1GC () throws IOException {
98+ public void testDefaultNewGCMetricsUseG1GC () {
9999 try (final MisbehavingJMXServer server = new MisbehavingJMXServer .Builder ().withJDKImage (
100100 JDK_17 ).appendJavaOpts ("-XX:+UseG1GC" ).build ()) {
101101 final List <Map <String , Object >> actualMetrics = startAndGetMetrics (server , true );
@@ -112,7 +112,26 @@ public void testDefaultNewGCMetricsUseG1GC() throws IOException {
112112 }
113113
114114 @ Test
115- public void testDefaultNewGCMetricsUseZGC () throws IOException {
115+ public void zgcMemoryPools () {
116+ try (final MisbehavingJMXServer server = new MisbehavingJMXServer .Builder ()
117+ .withJDKImage (JDK_17 ).appendJavaOpts ("-XX:+UseZGC" ).build ()) {
118+ List <Map <String , Object >> maps = startAndGetMetrics (server , true , false );
119+ assertMemoryPoolMetric (maps , "jvm.gc.old_gen_size" , "ZHeap" );
120+ }
121+ }
122+
123+ @ Test
124+ public void zgcGenerationalMemoryPools () {
125+ try (final MisbehavingJMXServer server = new MisbehavingJMXServer .Builder ()
126+ .withJDKImage (JDK_21 ).appendJavaOpts ("-XX:+UseZGC" ).appendJavaOpts ("-XX:+ZGenerational" ).build ()) {
127+ List <Map <String , Object >> maps = startAndGetMetrics (server , true , false );
128+ assertMemoryPoolMetric (maps , "jvm.gc.eden_size" , "ZGC Young Generation" );
129+ assertMemoryPoolMetric (maps , "jvm.gc.old_gen_size" , "ZGC Old Generation" );
130+ }
131+ }
132+
133+ @ Test
134+ public void testDefaultNewGCMetricsUseZGC () {
116135 try (final MisbehavingJMXServer server = new MisbehavingJMXServer .Builder ().withJDKImage (
117136 JDK_17 ).appendJavaOpts ("-XX:+UseZGC" ).build ()) {
118137 final List <Map <String , Object >> actualMetrics = startAndGetMetrics (server , true );
@@ -129,7 +148,7 @@ public void testDefaultNewGCMetricsUseZGC() throws IOException {
129148 }
130149
131150 @ Test
132- public void testDefaultNewGCMetricsUseGenerationalZGC () throws IOException {
151+ public void testDefaultNewGCMetricsUseGenerationalZGC () {
133152 try (final MisbehavingJMXServer server = new MisbehavingJMXServer .Builder ().withJDKImage (
134153 JDK_21 ).appendJavaOpts ("-XX:+UseZGC -XX:+ZGenerational" ).build ()) {
135154 final List <Map <String , Object >> actualMetrics = startAndGetMetrics (server , true );
@@ -149,7 +168,7 @@ public void testDefaultNewGCMetricsUseGenerationalZGC() throws IOException {
149168 }
150169
151170 @ Test
152- public void testDefaultNewGCMetricsIBMJ9Balanced () throws IOException {
171+ public void testDefaultNewGCMetricsIBMJ9Balanced () {
153172 try (final MisbehavingJMXServer server = new MisbehavingJMXServer .Builder ().withJDKImage (
154173 JDK_11_OPENJ9 ).appendJavaOpts ("-Xgcpolicy:balanced" ).build ()) {
155174 final List <Map <String , Object >> actualMetrics = startAndGetMetrics (server , true );
@@ -166,7 +185,7 @@ public void testDefaultNewGCMetricsIBMJ9Balanced() throws IOException {
166185 }
167186
168187 @ Test
169- public void testDefaultNewGCMetricsIBMJ9Gencon () throws IOException {
188+ public void testDefaultNewGCMetricsIBMJ9Gencon () {
170189 try (final MisbehavingJMXServer server = new MisbehavingJMXServer .Builder ().withJDKImage (
171190 JDK_11_OPENJ9 ).appendJavaOpts ("-Xgcpolicy:gencon" ).build ()) {
172191 final List <Map <String , Object >> actualMetrics = startAndGetMetrics (server , true );
@@ -186,9 +205,19 @@ private List<Map<String, Object>> startAndGetMetrics(
186205 final MisbehavingJMXServer server ,
187206 final boolean newGCMetrics
188207 ) {
208+ return startAndGetMetrics (server , newGCMetrics , true );
209+ }
210+
211+ private List <Map <String , Object >> startAndGetMetrics (
212+ final MisbehavingJMXServer server ,
213+ final boolean newGCMetrics ,
214+ boolean useSimplifiedDefaultConfig
215+ ) {
216+ String defaultConfig = useSimplifiedDefaultConfig ? "default-jmx-metrics-definitions: simplified-default-jmx-metrics.yaml" : "" ;
217+
189218 server .start ();
190219 this .initApplicationWithYamlLines (
191- getConfigUtil (). makeTempYamlConfigFile (
220+ makeTempYamlConfigFile (
192221 "config" ,
193222 Arrays .asList (
194223 "init_config:" ,
@@ -199,6 +228,7 @@ private List<Map<String, Object>> startAndGetMetrics(
199228 " - name: jmxint_container" ,
200229 " host: " + server .getIp (),
201230 " collect_default_jvm_metrics: true" ,
231+ " " + defaultConfig ,
202232 " max_returned_metrics: 300000" ,
203233 " port: " + server .getRMIPort ()
204234 )
@@ -234,6 +264,26 @@ private static void assertGCMetric(final List<Map<String, Object>> actualMetrics
234264 actualMetrics );
235265 }
236266
267+ private static void assertMemoryPoolMetric (
268+ final List <Map <String , Object >> actualMetrics ,
269+ final String expectedMetric ,
270+ String poolName
271+ ) {
272+ MetricsAssert .assertMetric (
273+ expectedMetric ,
274+ -1 ,
275+ -1 ,
276+ -1 ,
277+ Collections .singletonList (String .format ("name:%s" , poolName )),
278+ Arrays .asList (
279+ "instance:jmxint_container" ,
280+ "jmx_domain:java.lang" ,
281+ "type:MemoryPool" ),
282+ 5 ,
283+ "gauge" ,
284+ actualMetrics );
285+ }
286+
237287 /*
238288 This function is needed as the TestGCMetrics.testDefaultOldGC asserts on two metrics that have
239289 different tags. MetricsAssert.assertMetric expects metrics to have unique names so can't be used
0 commit comments