mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

neil_a_wilson
06.10.2007 e60eb59c64c21b4801f079fcc54b824330246f7d
Disable the use of the Invocation Counter Plugin in our test cases to make
assertions about the number of times that various kinds of plugins were
invoked. A number of test cases making assertions about the invocation counts
were failing pretty frequently, and after analyzing the problem it is not
something that can be easily addressed.

The underlying causes include:
- Processing on unbind operations continuing in a separate thread from a
previous test case. Whenever the client sends an unbind request to the
server, it immediately disconnects and moves on to the next test case.
However, the server may continue to read and process that unbind operation
(including invoking plugins on it) in a separate thread.

- For modify DN operations, the referential integrity plugin was sometimes
responsible for invoking operations in the background that could increase the
invocation count.
6 files modified
159 ■■■■■ changed files
opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java 45 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java 16 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/CompareOperationTestCase.java 34 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/SearchOperationTestCase.java 12 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/TestModifyDNOperation.java 48 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java 4 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java
@@ -42,7 +42,6 @@
import org.opends.messages.Message;
import org.opends.server.plugins.DelayPreOpPlugin;
import org.opends.server.plugins.DisconnectClientPlugin;
import org.opends.server.plugins.InvocationCounterPlugin;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.asn1.ASN1Reader;
import org.opends.server.protocols.asn1.ASN1Writer;
@@ -196,8 +195,6 @@
  @Test()
  public void testAbandonInternal()
  {
    InvocationCounterPlugin.resetAllCounters();
    InternalClientConnection conn =
         InternalClientConnection.getRootConnection();
@@ -208,9 +205,6 @@
    assertEquals(abandonOperation.getResultCode(),
                 ResultCode.NO_SUCH_OPERATION);
    examineCompletedOperation(abandonOperation);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
    assertTrue(InvocationCounterPlugin.getPostOperationCount() > 0);
  }
@@ -225,8 +219,6 @@
  public void testDisconnectInPreParse()
         throws Exception
  {
    InvocationCounterPlugin.resetAllCounters();
    // Establish a connection to the server.  It can be unauthenticated for the
    // purpose of this test.
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
@@ -247,9 +239,6 @@
      s.close();
    } catch (Exception e) {}
    assertTrue(InvocationCounterPlugin.getPostConnectCount() > 0);
    assertTrue(InvocationCounterPlugin.getPostDisconnectCount() > 0);
    // NOTE:  We can't check to see if pre-parse plugins were called yet
    //        because there's no plugin ordering.  It's possible that the
    //        disconnect plugin was called before the invocation counter plugin,
@@ -268,8 +257,6 @@
  public void testNoSuchOperation()
         throws Exception
  {
    InvocationCounterPlugin.resetAllCounters();
    // Establish a connection to the server.  It can be unauthenticated for the
    // purpose of this test.
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
@@ -284,10 +271,6 @@
    Thread.sleep(3000);
    s.close();
    assertTrue(InvocationCounterPlugin.getPostConnectCount() > 0);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
    assertTrue(InvocationCounterPlugin.getPostOperationCount() > 0);
  }
@@ -302,7 +285,6 @@
         throws Exception
  {
    TestCaseUtils.initializeTestBackend(true);
    InvocationCounterPlugin.resetAllCounters();
    // Establish a connection to the server and bind as a root user.
@@ -365,9 +347,6 @@
    waitForAbandon(abandonsCompleted+1);
    s.close();
    assertTrue(InvocationCounterPlugin.getPostConnectCount() > 0);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
  }
@@ -382,7 +361,6 @@
         throws Exception
  {
    TestCaseUtils.initializeTestBackend(true);
    InvocationCounterPlugin.resetAllCounters();
    // Establish a connection to the server and bind as a root user.
@@ -436,9 +414,6 @@
    waitForAbandon(abandonsCompleted+1);
    s.close();
    assertTrue(InvocationCounterPlugin.getPostConnectCount() > 0);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
  }
@@ -453,7 +428,6 @@
         throws Exception
  {
    TestCaseUtils.initializeTestBackend(true);
    InvocationCounterPlugin.resetAllCounters();
    // Add an entry to the server that we can delete.
@@ -520,9 +494,6 @@
    waitForAbandon(abandonsCompleted+1);
    s.close();
    assertTrue(InvocationCounterPlugin.getPostConnectCount() > 0);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
  }
@@ -537,7 +508,6 @@
         throws Exception
  {
    TestCaseUtils.initializeTestBackend(true);
    InvocationCounterPlugin.resetAllCounters();
    // Establish a connection to the server and bind as a root user.
@@ -590,9 +560,6 @@
    waitForAbandon(abandonsCompleted+1);
    s.close();
    assertTrue(InvocationCounterPlugin.getPostConnectCount() > 0);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
  }
@@ -607,7 +574,6 @@
         throws Exception
  {
    TestCaseUtils.initializeTestBackend(true);
    InvocationCounterPlugin.resetAllCounters();
    // Establish a connection to the server and bind as a root user.
@@ -667,9 +633,6 @@
    waitForAbandon(abandonsCompleted+1);
    s.close();
    assertTrue(InvocationCounterPlugin.getPostConnectCount() > 0);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
  }
@@ -684,7 +647,6 @@
         throws Exception
  {
    TestCaseUtils.initializeTestBackend(true);
    InvocationCounterPlugin.resetAllCounters();
    // Add an entry to the server that we can rename.
@@ -752,9 +714,6 @@
    waitForAbandon(abandonsCompleted+1);
    s.close();
    assertTrue(InvocationCounterPlugin.getPostConnectCount() > 0);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
  }
@@ -769,7 +728,6 @@
         throws Exception
  {
    TestCaseUtils.initializeTestBackend(true);
    InvocationCounterPlugin.resetAllCounters();
    // Establish a connection to the server and bind as a root user.
@@ -827,9 +785,6 @@
    waitForAbandon(abandonsCompleted+1);
    s.close();
    assertTrue(InvocationCounterPlugin.getPostConnectCount() > 0);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
  }
opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java
@@ -878,11 +878,11 @@
                                new ASN1OctetString("password"));
    assertEquals(bindOperation.getResultCode(), ResultCode.SUCCESS);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
    assertTrue(InvocationCounterPlugin.getPreOperationCount() > 0);
    assertTrue(InvocationCounterPlugin.getPostOperationCount() > 0);
//    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
//    assertTrue(InvocationCounterPlugin.getPreOperationCount() > 0);
//    assertTrue(InvocationCounterPlugin.getPostOperationCount() > 0);
    ensurePostReponseHasRun();
    assertTrue(InvocationCounterPlugin.getPostResponseCount() > 0);
//    assertTrue(InvocationCounterPlugin.getPostResponseCount() > 0);
  }
@@ -906,11 +906,11 @@
         conn.processSASLBind(DN.nullDN(), "PLAIN", saslCreds);
    assertEquals(bindOperation.getResultCode(), ResultCode.SUCCESS);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
    assertTrue(InvocationCounterPlugin.getPreOperationCount() > 0);
    assertTrue(InvocationCounterPlugin.getPostOperationCount() > 0);
//    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
//    assertTrue(InvocationCounterPlugin.getPreOperationCount() > 0);
//    assertTrue(InvocationCounterPlugin.getPostOperationCount() > 0);
    ensurePostReponseHasRun();
    assertTrue(InvocationCounterPlugin.getPostResponseCount() > 0);
//    assertTrue(InvocationCounterPlugin.getPostResponseCount() > 0);
  }
opends/tests/unit-tests-testng/src/server/org/opends/server/core/CompareOperationTestCase.java
@@ -157,11 +157,11 @@
    assertTrue(compareOperation.getProcessingTime() >= 0);
    assertNotNull(compareOperation.getResponseLogElements());
    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 1);
    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
    ensurePostReponseHasRun();
    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
  }
  /**
@@ -178,11 +178,11 @@
    assertNotNull(compareOperation.getResponseLogElements());
    assertTrue(compareOperation.getErrorMessage().length() > 0);
    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
//    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
    ensurePostReponseHasRun();
    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
  }
  /**
@@ -199,11 +199,11 @@
    assertNotNull(compareOperation.getResponseLogElements());
    assertTrue(compareOperation.getErrorMessage().length() > 0);
    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 0);
//    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
//    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 0);
    ensurePostReponseHasRun();
    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
  }
  @Test
@@ -712,11 +712,11 @@
        assertEquals(compareResponse.getResultCode(),
                     DirectoryServer.getServerErrorResultCode().getIntValue());
        assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
        assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
        assertEquals(InvocationCounterPlugin.getPostOperationCount(), 0);
        // The post response might not have been called yet.
        assertEquals(InvocationCounterPlugin.waitForPostResponse(), 1);
//        assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
//        assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
//        assertEquals(InvocationCounterPlugin.getPostOperationCount(), 0);
//        // The post response might not have been called yet.
//        assertEquals(InvocationCounterPlugin.waitForPostResponse(), 1);
        assertEquals(ldapStatistics.getCompareRequests(), compareRequests+1);
        assertEquals(ldapStatistics.getCompareResponses(), compareResponses+1);
opends/tests/unit-tests-testng/src/server/org/opends/server/core/SearchOperationTestCase.java
@@ -211,11 +211,11 @@
    assertTrue(searchOperation.getProcessingTime() >= 0);
    assertNotNull(searchOperation.getResponseLogElements());
    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 1);
    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
    ensurePostReponseHasRun();
    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
  }
  private Entry searchInternalForSingleEntry(
@@ -287,7 +287,7 @@
            searchResultDone = message.getSearchResultDoneProtocolOp();
            assertEquals(searchResultDone.getResultCode(),
                         LDAPResultCode.SUCCESS);
            assertEquals(InvocationCounterPlugin.waitForPostResponse(), 1);
//            assertEquals(InvocationCounterPlugin.waitForPostResponse(), 1);
            searchesDone++;
            break;
        }
@@ -327,7 +327,7 @@
    message = LDAPMessage.decode(r.readElement().decodeAsSequence());
    BindResponseProtocolOp bindResponse = message.getBindResponseProtocolOp();
    assertEquals(InvocationCounterPlugin.waitForPostResponse(), 1);
//    assertEquals(InvocationCounterPlugin.waitForPostResponse(), 1);
    assertEquals(bindResponse.getResultCode(), LDAPResultCode.SUCCESS);
  }
opends/tests/unit-tests-testng/src/server/org/opends/server/core/TestModifyDNOperation.java
@@ -174,11 +174,11 @@
    assertTrue(modifyDNOperation.getProcessingTime() >= 0);
    assertNotNull(modifyDNOperation.getResponseLogElements());
    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 1);
    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
    ensurePostReponseHasRun();
    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
  }
@@ -197,11 +197,11 @@
    assertTrue(modifyDNOperation.getProcessingTime() >= 0);
    assertNotNull(modifyDNOperation.getResponseLogElements());
    assertEquals(InvocationCounterPlugin.getPreParseCount(), 2);
    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 1);
    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreParseCount(), 2);
//    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
    ensurePostReponseHasRun();
    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 2);
//    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 2);
  }
  /**
@@ -218,11 +218,11 @@
    assertNotNull(modifyDNOperation.getResponseLogElements());
    assertTrue(modifyDNOperation.getErrorMessage().length() > 0);
    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
//    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 1);
    ensurePostReponseHasRun();
    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
  }
  /**
@@ -239,11 +239,11 @@
    assertNotNull(modifyDNOperation.getResponseLogElements());
    assertTrue(modifyDNOperation.getErrorMessage().length() > 0);
    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 0);
//    assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
//    assertEquals(InvocationCounterPlugin.getPostOperationCount(), 0);
    ensurePostReponseHasRun();
    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
//    assertEquals(InvocationCounterPlugin.getPostResponseCount(), 1);
  }
  /**
@@ -1174,7 +1174,7 @@
        message.getModifyDNResponseProtocolOp();
    assertEquals(modifyResponse.getResultCode(), 80);
    assertEquals(InvocationCounterPlugin.waitForPostResponse(), 1);
//    assertEquals(InvocationCounterPlugin.waitForPostResponse(), 1);
    try
    {
@@ -1239,11 +1239,11 @@
        assertEquals(modifyResponse.getResultCode(),
                     DirectoryServer.getServerErrorResultCode().getIntValue());
        assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
        assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
        assertEquals(InvocationCounterPlugin.getPostOperationCount(), 0);
        // The post response might not have been called yet.
        assertEquals(InvocationCounterPlugin.waitForPostResponse(), 1);
//        assertEquals(InvocationCounterPlugin.getPreParseCount(), 1);
//        assertEquals(InvocationCounterPlugin.getPreOperationCount(), 0);
//        assertEquals(InvocationCounterPlugin.getPostOperationCount(), 0);
//        // The post response might not have been called yet.
//        assertEquals(InvocationCounterPlugin.waitForPostResponse(), 1);
        assertEquals(ldapStatistics.getModifyDNRequests(), modifyDNRequests+1);
        assertEquals(ldapStatistics.getModifyDNResponses(),
@@ -1381,7 +1381,7 @@
           conn.processModifyDN("ou=People,dc=example,dc=com", "ou=Users",
                                true);
      assertEquals(modifyDNOperation.getResultCode(), ResultCode.SUCCESS);
      assertEquals(InvocationCounterPlugin.getSubordinateModifyDNCount(), 2);
//      assertEquals(InvocationCounterPlugin.getSubordinateModifyDNCount(), 2);
      assertFalse(DirectoryServer.entryExists(
@@ -1467,7 +1467,7 @@
                                "ou=Org 2.1", true,
                                "ou=Org 2,dc=example,dc=com");
      assertEquals(modifyDNOperation.getResultCode(), ResultCode.SUCCESS);
      assertEquals(InvocationCounterPlugin.getSubordinateModifyDNCount(), 2);
//      assertEquals(InvocationCounterPlugin.getSubordinateModifyDNCount(), 2);
      assertFalse(DirectoryServer.entryExists(
opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java
@@ -109,8 +109,8 @@
    unbindOperation.run();
    examineCompletedOperation(unbindOperation);
    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
    assertTrue(InvocationCounterPlugin.getPostOperationCount() > 0);
//    assertTrue(InvocationCounterPlugin.getPreParseCount() > 0);
//    assertTrue(InvocationCounterPlugin.getPostOperationCount() > 0);
  }