From c24a51323d1cfe2f535f52ec2a709110246e4a99 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Sat, 3 Dec 2022 18:23:41 -0500 Subject: [PATCH] Reinstate test for JmxUtils.locateMBeanServer() --- .../jmx/support/JmxUtilsTests.java | 19 +++++++++++- .../springframework/util/MBeanTestUtils.java | 30 +++++++++++++------ 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/spring-context/src/test/java/org/springframework/jmx/support/JmxUtilsTests.java b/spring-context/src/test/java/org/springframework/jmx/support/JmxUtilsTests.java index eba01bd4fe..c929150af1 100644 --- a/spring-context/src/test/java/org/springframework/jmx/support/JmxUtilsTests.java +++ b/spring-context/src/test/java/org/springframework/jmx/support/JmxUtilsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 the original author or authors. + * Copyright 2002-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ package org.springframework.jmx.support; import java.beans.PropertyDescriptor; import javax.management.DynamicMBean; +import javax.management.MBeanServer; import javax.management.MalformedObjectNameException; import javax.management.NotCompliantMBeanException; import javax.management.ObjectName; @@ -30,6 +31,7 @@ import org.springframework.beans.BeanWrapperImpl; import org.springframework.jmx.IJmxTestBean; import org.springframework.jmx.JmxTestBean; import org.springframework.jmx.export.TestDynamicMBean; +import org.springframework.util.MBeanTestUtils; import org.springframework.util.ObjectUtils; import static org.assertj.core.api.Assertions.assertThat; @@ -39,6 +41,7 @@ import static org.assertj.core.api.Assertions.assertThat; * * @author Rob Harrop * @author Juergen Hoeller + * @author Sam Brannen */ class JmxUtilsTests { @@ -124,6 +127,20 @@ class JmxUtilsTests { assertThat(uniqueName.getKeyProperty(JmxUtils.IDENTITY_OBJECT_NAME_KEY)).as("Identity key is incorrect").isEqualTo(ObjectUtils.getIdentityHexString(managedResource)); } + @Test + void locatePlatformMBeanServer() { + MBeanServer server = null; + try { + server = JmxUtils.locateMBeanServer(); + assertThat(server).isNotNull(); + } + finally { + if (server != null) { + MBeanTestUtils.releaseMBeanServer(server); + } + } + } + public static class AttributeTestBean { diff --git a/spring-context/src/test/java/org/springframework/util/MBeanTestUtils.java b/spring-context/src/test/java/org/springframework/util/MBeanTestUtils.java index 02eadcbd49..900184a75f 100644 --- a/spring-context/src/test/java/org/springframework/util/MBeanTestUtils.java +++ b/spring-context/src/test/java/org/springframework/util/MBeanTestUtils.java @@ -23,22 +23,34 @@ import javax.management.MBeanServerFactory; * Utilities for MBean tests. * * @author Phillip Webb + * @author Sam Brannen */ public class MBeanTestUtils { /** - * Resets {@link MBeanServerFactory} to a known consistent state. - *

This involves releasing all currently registered MBeanServers. + * Reset the {@link MBeanServerFactory} to a known consistent state. This involves + * {@linkplain #releaseMBeanServer(MBeanServer) releasing} all currently registered + * MBeanServers. */ public static synchronized void resetMBeanServers() throws Exception { for (MBeanServer server : MBeanServerFactory.findMBeanServer(null)) { - try { - MBeanServerFactory.releaseMBeanServer(server); - } - catch (IllegalArgumentException ex) { - if (!ex.getMessage().contains("not in list")) { - throw ex; - } + releaseMBeanServer(server); + } + } + + /** + * Attempt to release the supplied {@link MBeanServer}. + *

Ignores any {@link IllegalArgumentException} thrown by + * {@link MBeanServerFactory#releaseMBeanServer(MBeanServer)} whose error + * message contains the text "not in list". + */ + public static void releaseMBeanServer(MBeanServer server) { + try { + MBeanServerFactory.releaseMBeanServer(server); + } + catch (IllegalArgumentException ex) { + if (!ex.getMessage().contains("not in list")) { + throw ex; } } }