9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson/*
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * CDDL HEADER START
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson *
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * The contents of this file are subject to the terms of the
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * Common Development and Distribution License, Version 1.0 only
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * (the "License"). You may not use this file except in compliance
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * with the License.
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson *
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * or http://forgerock.org/license/CDDLv1.0.html.
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * See the License for the specific language governing permissions
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * and limitations under the License.
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson *
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * When distributing Covered Code, include this CDDL HEADER in each
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * file and include the License file at legal-notices/CDDLv1_0.txt.
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * If applicable, add the following below this CDDL HEADER, with the
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * fields enclosed by brackets "[]" replaced with your own identifying
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * information:
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * Portions Copyright [yyyy] [name of copyright owner]
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson *
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * CDDL HEADER END
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson *
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson *
05b42f00b813c3dc70cbb80d62089f9cc0f6f549ludovicp * Copyright 2006-2008 Sun Microsystems, Inc.
6206ed2d27885390956a5dc0be3271367f84b20bJnRouvignac * Portions Copyright 2013 ForgeRock AS
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson */
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonpackage org.opends.server.extensions;
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduffimport static org.testng.Assert.*;
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduff
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonimport java.util.ArrayList;
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilsonimport java.util.LinkedHashSet;
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonimport java.util.List;
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonimport org.opends.server.TestCaseUtils;
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonimport org.opends.server.api.WorkQueue;
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonimport org.opends.server.core.DirectoryServer;
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonimport org.opends.server.core.ModifyOperation;
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilsonimport org.opends.server.plugins.DelayPreOpPlugin;
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonimport org.opends.server.protocols.internal.InternalClientConnection;
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilsonimport org.opends.server.protocols.internal.InternalSearchOperation;
6206ed2d27885390956a5dc0be3271367f84b20bJnRouvignacimport org.opends.server.schema.SchemaConstants;
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduffimport org.opends.server.tools.LDAPSearch;
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduffimport org.opends.server.types.Attributes;
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilsonimport org.opends.server.types.Control;
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonimport org.opends.server.types.DN;
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduffimport org.opends.server.types.DereferencePolicy;
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilsonimport org.opends.server.types.Modification;
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilsonimport org.opends.server.types.ModificationType;
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonimport org.opends.server.types.ResultCode;
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilsonimport org.opends.server.types.SearchFilter;
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilsonimport org.opends.server.types.SearchScope;
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduffimport org.testng.annotations.BeforeClass;
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduffimport org.testng.annotations.Test;
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson/**
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * A set of test cases for the traditional work queue.
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson */
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilsonpublic class TraditionalWorkQueueTestCase
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson extends ExtensionsTestCase
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson{
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson /**
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * Ensures that the Directory Server is running.
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson *
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * @throws Exception If an unexpected problem occurs.
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson */
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson @BeforeClass()
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson public void startServer()
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson throws Exception
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson {
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson TestCaseUtils.startServer();
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson }
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson /**
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * Tests to ensure that the work queue is configured and enabled within the
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * Directory Server.
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson */
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson @Test()
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson public void testWorkQueueEnabled()
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson {
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson WorkQueue workQueue = DirectoryServer.getWorkQueue();
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson assertNotNull(workQueue);
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson assertTrue(workQueue instanceof TraditionalWorkQueue);
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson }
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson /**
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * Verifies that the number of worker threads can be altered on the fly.
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson *
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson * @throws Exception If an unexpected problem occurs.
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson */
24d6db06810f2ea747f6dff60d483e4fca3aaa13davidely @Test
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson public void testChangingNumWorkerThreads()
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson throws Exception
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson {
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson DN dn = DN.decode("cn=Work Queue,cn=config");
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson String attr = "ds-cfg-num-worker-threads";
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson ArrayList<Modification> mods = new ArrayList<Modification>();
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson mods.add(new Modification(ModificationType.REPLACE,
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduff Attributes.create(attr, "30")));
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson InternalClientConnection conn =
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson InternalClientConnection.getRootConnection();
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson ModifyOperation modifyOperation = conn.processModify(dn, mods);
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson assertEquals(modifyOperation.getResultCode(), ResultCode.SUCCESS);
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson mods.clear();
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson mods.add(new Modification(ModificationType.REPLACE,
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduff Attributes.create(attr, "24")));
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson modifyOperation = conn.processModify(dn, mods);
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson assertEquals(modifyOperation.getResultCode(), ResultCode.SUCCESS);
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson // Perform seven external searches so that we can make sure that the
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson // unneeded worker threads can die off.
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson String[] args =
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson {
62625611993cc177eb95fb726fc137dbba01d6d2mmarie "--noPropertiesFile",
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson "-h", "127.0.0.1",
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson "-b", "",
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson "-s", "base",
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson "(objectClass=*)",
6206ed2d27885390956a5dc0be3271367f84b20bJnRouvignac SchemaConstants.NO_ATTRIBUTES
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson };
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson for (int i=0; i < 7; i++)
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson {
80806023d36ac7397f356b6cda9cd0ea0e8d0f7dneil_a_wilson assertEquals(LDAPSearch.mainSearch(args, false, null, System.err), 0);
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson }
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson }
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson /**
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * Tests the {@code WorkQueue.waitUntilIdle()} method for a case in which the
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * work queue should already be idle.
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson *
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * @throws Exception If an unexpected problem occurs.
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson */
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson @Test(groups = { "slow" })
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson public void testWaitUntilIdleNoOpsInProgress()
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson throws Exception
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson {
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson Thread.sleep(5000);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson long startTime = System.currentTimeMillis();
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson assertTrue(DirectoryServer.getWorkQueue().waitUntilIdle(10000));
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson long stopTime = System.currentTimeMillis();
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson assertTrue((stopTime - startTime) <= 1000);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson }
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson /**
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * Tests the {@code WorkQueue.waitUntilIdle()} method for a case in which the
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * work queue should already be idle and no timeout is given.
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson *
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * @throws Exception If an unexpected problem occurs.
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson */
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson @Test(groups = { "slow" }, timeOut=10000)
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson public void testWaitUntilIdleNoOpsInProgressNoTimeout()
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson throws Exception
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson {
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson Thread.sleep(5000);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson long startTime = System.currentTimeMillis();
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson assertTrue(DirectoryServer.getWorkQueue().waitUntilIdle(0));
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson long stopTime = System.currentTimeMillis();
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson assertTrue((stopTime - startTime) <= 1000);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson }
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson /**
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * Tests the {@code WorkQueue.waitUntilIdle()} method for a case in which the
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * work queue should not be idle for several seconds.
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson *
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * @throws Exception If an unexpected problem occurs.
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson */
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson @Test(groups = { "slow" })
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson public void testWaitUntilIdleSlowOpInProgress()
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson throws Exception
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson {
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson TestCaseUtils.initializeTestBackend(true);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson List<Control> requestControls =
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson DelayPreOpPlugin.createDelayControlList(5000);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson SearchFilter filter =
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson SearchFilter.createFilterFromString("(objectClass=*)");
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson LinkedHashSet<String> attrs = new LinkedHashSet<String>();
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson InternalClientConnection conn =
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson InternalClientConnection.getRootConnection();
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilson InternalSearchOperation searchOperation =
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new InternalSearchOperation(conn, InternalClientConnection.nextOperationID(),
2efcb9667318c099d8723dd578f198c16b4a22c4matthew InternalClientConnection.nextMessageID(),requestControls,
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilson DN.decode("o=test"),
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilson SearchScope.BASE_OBJECT,
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilson DereferencePolicy.NEVER_DEREF_ALIASES, 0,
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilson 0, false, filter, attrs, null);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson DirectoryServer.getWorkQueue().submitOperation(searchOperation);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson long startTime = System.currentTimeMillis();
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson assertTrue(DirectoryServer.getWorkQueue().waitUntilIdle(10000));
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson long stopTime = System.currentTimeMillis();
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson assertTrue((stopTime - startTime) >= 4000);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson }
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson /**
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * Tests the {@code WorkQueue.waitUntilIdle()} method for a case in which the
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * work queue should not be idle for several seconds.
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson *
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson * @throws Exception If an unexpected problem occurs.
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson */
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson @Test(groups = { "slow" })
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson public void testWaitUntilTimeoutWithIdleSlowOpInProgress()
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson throws Exception
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson {
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson TestCaseUtils.initializeTestBackend(true);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson List<Control> requestControls =
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson DelayPreOpPlugin.createDelayControlList(5000);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson SearchFilter filter =
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson SearchFilter.createFilterFromString("(objectClass=*)");
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson LinkedHashSet<String> attrs = new LinkedHashSet<String>();
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson InternalClientConnection conn =
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson InternalClientConnection.getRootConnection();
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilson InternalSearchOperation searchOperation =
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new InternalSearchOperation(conn, InternalClientConnection.nextOperationID(),
2efcb9667318c099d8723dd578f198c16b4a22c4matthew InternalClientConnection.nextMessageID(), requestControls,
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilson DN.decode("o=test"),
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilson SearchScope.BASE_OBJECT,
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilson DereferencePolicy.NEVER_DEREF_ALIASES, 0,
63f894df9142a9f494ad67f454c77cc76974a9e3neil_a_wilson 0, false, filter, attrs, null);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson DirectoryServer.getWorkQueue().submitOperation(searchOperation);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson long startTime = System.currentTimeMillis();
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson assertFalse(DirectoryServer.getWorkQueue().waitUntilIdle(1000));
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson long stopTime = System.currentTimeMillis();
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson assertTrue((stopTime - startTime) <= 2000);
2729071ad5ffceebca0d3c36d32e7d601d3df5efneil_a_wilson }
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson}
9b947221228796149abbb1d290c8be335e3d027cneil_a_wilson