This is an automated email from the ASF dual-hosted git repository.
hzlu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git
The following commit(s) were added to refs/heads/master by this push:
new 57d6a21 Fix flaky test testMBeanApplicationName (#1298)
57d6a21 is described below
commit 57d6a21f7b56bbdf95fd4db25844efa0d805e027
Author: Huizhi Lu <[email protected]>
AuthorDate: Fri Aug 21 15:01:50 2020 -0700
Fix flaky test testMBeanApplicationName (#1298)
The test intermittently fails on GitHub CI because default namespace may
not be reflected to mbean server yet, if there is a race condition between test
and mbean server and the default object name is missing. This PR fixes it by
using TestHelper.verify() to check the result.
---
.../rest/server/TestDefaultMonitoringMbeans.java | 27 ++++++++--------------
1 file changed, 10 insertions(+), 17 deletions(-)
diff --git
a/helix-rest/src/test/java/org/apache/helix/rest/server/TestDefaultMonitoringMbeans.java
b/helix-rest/src/test/java/org/apache/helix/rest/server/TestDefaultMonitoringMbeans.java
index 185c136..49dfee3 100644
---
a/helix-rest/src/test/java/org/apache/helix/rest/server/TestDefaultMonitoringMbeans.java
+++
b/helix-rest/src/test/java/org/apache/helix/rest/server/TestDefaultMonitoringMbeans.java
@@ -28,7 +28,6 @@ import javax.management.AttributeNotFoundException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.ReflectionException;
import javax.ws.rs.core.Response;
@@ -83,26 +82,20 @@ public class TestDefaultMonitoringMbeans extends
AbstractTestClass {
}
@Test
- public void testMBeanApplicationName()
- throws MalformedObjectNameException {
+ public void testMBeanApplicationName() throws Exception {
Set<String> namespaces =
new HashSet<>(Arrays.asList(HelixRestNamespace.DEFAULT_NAMESPACE_NAME,
TEST_NAMESPACE));
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
- Set<ObjectName> objectNames =
- mBeanServer.queryNames(new ObjectName(DEFAULT_METRIC_DOMAIN + ":*"),
null);
- Set<String> appNames = new HashSet<>();
- for (ObjectName mBeanName : objectNames) {
- appNames.add(mBeanName.getKeyProperty("type"));
- }
-
- Assert.assertEquals(appNames.size(), namespaces.size(), String
- .format("appNames: %s does't have the same size as namespaces: %s.",
appNames, namespaces));
+ TestHelper.verify(() -> {
+ Set<ObjectName> objectNames =
+ mBeanServer.queryNames(new ObjectName(DEFAULT_METRIC_DOMAIN + ":*"),
null);
- for (String appName : appNames) {
- Assert.assertTrue(namespaces.contains(appName), String
- .format("Application name: %s is not one of the namespaces: %s.",
appName, namespaces));
- namespaces.remove(appName);
- }
+ Set<String> appNames = new HashSet<>();
+ for (ObjectName mBeanName : objectNames) {
+ appNames.add(mBeanName.getKeyProperty("type"));
+ }
+ return namespaces.equals(appNames);
+ }, TestHelper.WAIT_DURATION);
}
}