From 6b0b8680202b4948beea72921ae5d27bd82fb50a Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Mon, 27 Jul 2026 13:03:49 +0000
Subject: [PATCH] [#770] Fix flaky PostConnectedDisconnectTest (#771)

---
 opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/PostConnectedDisconnectTest.java |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/PostConnectedDisconnectTest.java b/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/PostConnectedDisconnectTest.java
index 58046b7..10e962a 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/PostConnectedDisconnectTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/PostConnectedDisconnectTest.java
@@ -95,10 +95,8 @@
   @Test
   public void checkPostConnectDisconnectPlugin() throws Exception
   {
-    // Before the test, how many time postconnect and postdisconnect
-    // have been called.
+    // Before the test, how many time postconnect has been called.
     int postConnectBefore = InvocationCounterPlugin.getPostConnectCount();
-    int postDisconnectBefore = InvocationCounterPlugin.getPostDisconnectCount();
 
     // Create a new client connection
     HashMap<String, Object> env = new HashMap<>();
@@ -123,9 +121,11 @@
     }
     assertEquals(postConnectBefore +1, postConnectAfter);
 
-    // Check that postDisconnect is not incremented.
-    int postDisconnectAfter = InvocationCounterPlugin.getPostDisconnectCount();
-    assertEquals(postDisconnectBefore, postDisconnectAfter);
+    // Snapshot the post-disconnect counter just before closing: connections left
+    // over from earlier JMX test classes are torn down asynchronously (JMX
+    // CLOSED/FAILED notifications), so the counter may move at any time while
+    // this test is running.
+    int postDisconnectBefore = InvocationCounterPlugin.getPostDisconnectCount();
 
     // Close the client connection
     opendsConnector.close();
@@ -133,14 +133,16 @@
     // Check that number of postdisconnect has been incremented.
     // Don't wait more than 5 seconds
     endTime = System.currentTimeMillis() + 5000;
-    postDisconnectAfter = postDisconnectBefore;
+    int postDisconnectAfter = postDisconnectBefore;
     while (System.currentTimeMillis() < endTime
         && postDisconnectAfter == postDisconnectBefore)
     {
       Thread.sleep(10);
       postDisconnectAfter = InvocationCounterPlugin.getPostDisconnectCount();
     }
-    assertEquals(postDisconnectBefore +1 , postDisconnectAfter);
+    // Stray disconnects from earlier test classes may also be counted here, so
+    // only require that at least one post-disconnect was recorded.
+    assertTrue(postDisconnectAfter > postDisconnectBefore);
 
     // Check that postconnect is not incremented again.
     postConnectAfter = InvocationCounterPlugin.getPostConnectCount();

--
Gitblit v1.10.0