opendj3-server-dev/src/server/org/opends/server/api/ClientConnection.java
@@ -46,7 +46,6 @@ import org.opends.server.core.PersistentSearch; import org.opends.server.core.PluginConfigManager; import org.opends.server.core.SearchOperation; import org.opends.server.core.networkgroups.NetworkGroup; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.AuthenticationInfo; @@ -1585,17 +1584,6 @@ */ public abstract void toString(StringBuilder buffer); /** * Returns the network group to which the connection belongs. * * @return the network group attached to the connection */ public NetworkGroup getNetworkGroup() { return NetworkGroup.getDefaultNetworkGroup(); } /** * Retrieves the length of time in milliseconds that this client * connection has been idle. opendj3-server-dev/src/server/org/opends/server/backends/RootDSEBackend.java
@@ -60,6 +60,7 @@ import org.opends.server.core.ModifyOperation; import org.opends.server.core.SearchOperation; import org.opends.server.core.WorkflowTopologyNode; import org.opends.server.core.networkgroups.NetworkGroup; import org.opends.server.types.*; import org.opends.server.util.BuildVersion; import org.opends.server.util.LDIFWriter; @@ -472,7 +473,7 @@ else { namingContexts = new LinkedList<DN>(); for (WorkflowTopologyNode node : connection.getNetworkGroup() for (WorkflowTopologyNode node : NetworkGroup.getDefaultNetworkGroup() .getNamingContexts().getPublicNamingContexts()) { namingContexts.add(node.getBaseDN()); opendj3-server-dev/src/server/org/opends/server/core/AddOperationBasis.java
@@ -36,15 +36,15 @@ import java.util.List; import java.util.Map; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.forgerock.opendj.ldap.ByteString; import org.forgerock.opendj.ldap.ResultCode; import org.opends.server.api.ClientConnection; import org.opends.server.api.plugin.PluginResult; import org.opends.server.core.networkgroups.NetworkGroup; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.opends.server.protocols.ldap.LDAPAttribute; import org.opends.server.protocols.ldap.LDAPResultCode; import org.opends.server.types.*; import org.forgerock.opendj.ldap.ResultCode; import org.forgerock.opendj.ldap.ByteString; import org.opends.server.types.operation.PostResponseAddOperation; import org.opends.server.types.operation.PreParseAddOperation; import org.opends.server.workflowelement.localbackend.LocalBackendAddOperation; @@ -572,8 +572,7 @@ // Retrieve the network group attached to the client connection // and get a workflow to process the operation. NetworkGroup ng = getClientConnection().getNetworkGroup(); Workflow workflow = ng.getWorkflowCandidate(entryDN); Workflow workflow = NetworkGroup.getWorkflowCandidate(entryDN); if (workflow == null) { // We have found no workflow for the requested base DN, just return opendj3-server-dev/src/server/org/opends/server/core/BindOperationBasis.java
@@ -33,13 +33,13 @@ import java.util.List; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.forgerock.opendj.ldap.ByteString; import org.forgerock.opendj.ldap.ResultCode; import org.opends.server.api.ClientConnection; import org.opends.server.api.plugin.PluginResult; import org.opends.server.core.networkgroups.NetworkGroup; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.opends.server.types.*; import org.forgerock.opendj.ldap.ResultCode; import org.forgerock.opendj.ldap.ByteString; import org.opends.server.types.operation.PreParseBindOperation; import org.opends.server.workflowelement.localbackend.LocalBackendBindOperation; @@ -716,8 +716,7 @@ } else { // Retrieve the network group attached to the client connection // and get a workflow to process the operation. NetworkGroup ng = getClientConnection().getNetworkGroup(); workflow = ng.getWorkflowCandidate(bindDN); workflow = NetworkGroup.getWorkflowCandidate(bindDN); } if (workflow == null) { opendj3-server-dev/src/server/org/opends/server/core/CompareOperationBasis.java
@@ -35,16 +35,16 @@ import java.util.List; import java.util.Set; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.forgerock.opendj.ldap.ByteString; import org.forgerock.opendj.ldap.ResultCode; import org.opends.server.api.ClientConnection; import org.opends.server.api.plugin.PluginResult; import org.opends.server.core.networkgroups.NetworkGroup; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.opends.server.types.*; import org.forgerock.opendj.ldap.ResultCode; import org.forgerock.opendj.ldap.ByteString; import org.opends.server.types.operation.PostResponseCompareOperation; import org.opends.server.types.operation.PreParseCompareOperation; import org.opends.server.workflowelement.localbackend.*; import org.opends.server.workflowelement.localbackend.LocalBackendCompareOperation; /** * This class defines an operation that may be used to determine whether a @@ -466,11 +466,9 @@ return; } // Retrieve the network group registered with the client connection // and get a workflow to process the operation. NetworkGroup ng = getClientConnection().getNetworkGroup(); Workflow workflow = ng.getWorkflowCandidate(entryDN); Workflow workflow = NetworkGroup.getWorkflowCandidate(entryDN); if (workflow == null) { // We have found no workflow for the requested base DN, just return opendj3-server-dev/src/server/org/opends/server/core/DeleteOperationBasis.java
@@ -31,13 +31,13 @@ import java.util.ArrayList; import java.util.List; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.forgerock.opendj.ldap.ByteString; import org.forgerock.opendj.ldap.ResultCode; import org.opends.server.api.ClientConnection; import org.opends.server.api.plugin.PluginResult; import org.opends.server.core.networkgroups.NetworkGroup; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.opends.server.types.*; import org.forgerock.opendj.ldap.ResultCode; import org.forgerock.opendj.ldap.ByteString; import org.opends.server.types.operation.PostResponseDeleteOperation; import org.opends.server.types.operation.PreParseDeleteOperation; import org.opends.server.workflowelement.localbackend.LocalBackendDeleteOperation; @@ -263,11 +263,9 @@ return; } // Retrieve the network group attached to the client connection // and get a workflow to process the operation. NetworkGroup ng = getClientConnection().getNetworkGroup(); Workflow workflow = ng.getWorkflowCandidate(entryDN); Workflow workflow = NetworkGroup.getWorkflowCandidate(entryDN); if (workflow == null) { // We have found no workflow for the requested base DN, just return opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
@@ -2141,18 +2141,17 @@ * workflow conflicts with the workflow * ID of an existing workflow. */ private static void createAndRegisterWorkflowsWithDefaultNetworkGroup(Backend<?> backend) throws DirectoryException private static void createAndRegisterWorkflows(Backend<?> backend) throws DirectoryException { // Create a workflow for each backend base DN and register the workflow // with the default/internal/admin network group. for (DN curBaseDN: backend.getBaseDNs()) { createAndRegisterWorkflowWithDefaultNetworkGroup(curBaseDN, backend); createAndRegisterWorkflow(curBaseDN, backend); } } private static void createAndRegisterWorkflowWithDefaultNetworkGroup(DN baseDN, Backend<?> backend) throws DirectoryException private static void createAndRegisterWorkflow(DN baseDN, Backend<?> backend) throws DirectoryException { WorkflowImpl workflowImpl = createWorkflow(baseDN, backend); NetworkGroup.getDefaultNetworkGroup().registerWorkflow(workflowImpl); @@ -2211,8 +2210,8 @@ { try { createAndRegisterWorkflowsWithDefaultNetworkGroup(configHandler); createAndRegisterWorkflowsWithDefaultNetworkGroup(rootDSEBackend); createAndRegisterWorkflows(configHandler); createAndRegisterWorkflows(rootDSEBackend); } catch (DirectoryException de) { @@ -5559,7 +5558,7 @@ // the workflow with the default network group, but don't register // the workflow if the backend happens to be the configuration // backend because it's too soon for the config backend. createAndRegisterWorkflowWithDefaultNetworkGroup(baseDN, backend); createAndRegisterWorkflow(baseDN, backend); } } } opendj3-server-dev/src/server/org/opends/server/core/ModifyDNOperationBasis.java
@@ -451,8 +451,7 @@ // Retrieve the network group attached to the client connection // and get a workflow to process the operation. NetworkGroup ng = getClientConnection().getNetworkGroup(); Workflow workflow = ng.getWorkflowCandidate(entryDN); Workflow workflow = NetworkGroup.getWorkflowCandidate(entryDN); if (workflow == null) { // We have found no workflow for the requested base DN, just return opendj3-server-dev/src/server/org/opends/server/core/ModifyOperationBasis.java
@@ -29,16 +29,16 @@ import java.util.ArrayList; import java.util.List; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.forgerock.opendj.ldap.ByteString; import org.forgerock.opendj.ldap.ResultCode; import org.opends.server.api.ClientConnection; import org.opends.server.api.plugin.PluginResult; import org.opends.server.core.networkgroups.NetworkGroup; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.opends.server.protocols.ldap.LDAPAttribute; import org.opends.server.protocols.ldap.LDAPModification; import org.opends.server.protocols.ldap.LDAPResultCode; import org.opends.server.types.*; import org.forgerock.opendj.ldap.ResultCode; import org.forgerock.opendj.ldap.ByteString; import org.opends.server.types.operation.PostResponseModifyOperation; import org.opends.server.types.operation.PreParseModifyOperation; import org.opends.server.workflowelement.localbackend.LocalBackendModifyOperation; @@ -368,11 +368,9 @@ return; } // Retrieve the network group attached to the client connection // and get a workflow to process the operation. NetworkGroup ng = getClientConnection().getNetworkGroup(); Workflow workflow = ng.getWorkflowCandidate(entryDN); Workflow workflow = NetworkGroup.getWorkflowCandidate(entryDN); if (workflow == null) { // We have found no workflow for the requested base DN, just return opendj3-server-dev/src/server/org/opends/server/core/SearchOperationBasis.java
@@ -1089,11 +1089,9 @@ return; } // Retrieve the network group attached to the client connection // and get a workflow to process the operation. NetworkGroup ng = getClientConnection().getNetworkGroup(); Workflow workflow = ng.getWorkflowCandidate(baseDN); Workflow workflow = NetworkGroup.getWorkflowCandidate(baseDN); if (workflow == null) { // We have found no workflow for the requested base DN, just return opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java
@@ -30,7 +30,6 @@ import org.forgerock.i18n.LocalizableMessage; import org.forgerock.opendj.ldap.ResultCode; import org.opends.server.core.DirectoryServer; import org.opends.server.core.RootDseWorkflowTopology; import org.opends.server.core.Workflow; import org.opends.server.core.WorkflowImpl; @@ -184,31 +183,6 @@ } /** * Retrieves the network group ID. * * @return a string indicating the network group ID */ public String getID() { return networkGroupID; } /** * Gets the minimum string length of a substring filter in a search * operation. * * @return the minimum substring length */ public int getMinSubstring() { return 0; } /** * Returns the list of naming contexts handled by the network group. * * @return the list of naming contexts @@ -221,32 +195,6 @@ /** * Gets the search size limit, i.e. the maximum number of entries * returned by a search. * * @return the maximum number of entries returned by a search */ public int getSizeLimit() { return DirectoryServer.getSizeLimit(); } /** * Gets the search duration limit, i.e. the maximum duration of a * search operation. * * @return the maximum duration in ms of a search operation */ public int getTimeLimit() { return DirectoryServer.getTimeLimit(); } /** * Gets the highest workflow in the topology that can handle the * baseDN. * @@ -255,7 +203,12 @@ * @return the highest workflow in the topology that can handle the * base DN, <code>null</code> if none was found */ public Workflow getWorkflowCandidate(DN baseDN) public static Workflow getWorkflowCandidate(DN baseDN) { return getDefaultNetworkGroup().getWorkflowCandidatePriv(baseDN); } private Workflow getWorkflowCandidatePriv(DN baseDN) { // the top workflow to return Workflow workflowCandidate = null; opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/networkgroups/NetworkGroupTest.java
@@ -152,51 +152,13 @@ // Sets of DNs return new Object[][] { { dnRootDSE, null, true, true, true }, { dnConfig, dnSubordinateConfig, true, true, true }, { dnMonitor, dnSubordinateMonitor, true, true, true }, { dnTasks, dnSubordinateTasks, true, true, true }, { dnSchema, null, true, true, true }, { dnBackups, null, true, true, true }, { dnDummy, null, false, false, false }, }; } /** * Provides information to create a network group with resource limits. */ @DataProvider (name = "DNSet_3") public Object[][] initDNSet_3() throws Exception { // Network group definition String networkGroupID = "networkGroup1"; DN dn = DN.valueOf("o=test1"); int prio = 1; // Resource limits int maxConnections = 10; int maxConnectionsFromSameClient = 5; int maxOpsPerConn = 4; int maxConcurrentOpsPerConn = 2; int searchTimeLimit = 100; int searchSizeLimit = 50; int minSubstringLength = 4; // Network group info return new Object[][] { // Test1: one DN for one workflow { networkGroupID, dn, prio, maxConnections, maxConnectionsFromSameClient, maxOpsPerConn, maxConcurrentOpsPerConn, searchTimeLimit, searchSizeLimit, minSubstringLength } { dnRootDSE, null, true, }, { dnConfig, dnSubordinateConfig, true, }, { dnMonitor, dnSubordinateMonitor, true, }, { dnTasks, dnSubordinateTasks, true, }, { dnSchema, null, true, }, { dnBackups, null, true, }, { dnDummy, null, false, }, }; } @@ -281,9 +243,7 @@ public void checkDefaultNetworkGroup( DN dnToSearch, DN dnSubordinate, boolean existsInDefault, boolean existsInAdmin, boolean existsInInternal boolean exists ) { // let's get the default network group -- it should always exist @@ -291,21 +251,7 @@ assertNotNull(defaultNG); // let's check the routing through the network group doCheckNetworkGroup(defaultNG, dnToSearch, dnSubordinate, null, existsInDefault); // let's get the admin network group -- it should always exist NetworkGroup adminNG = NetworkGroup.getDefaultNetworkGroup(); assertNotNull(adminNG); // let's check the routing through the network group doCheckNetworkGroup(adminNG, dnToSearch, dnSubordinate, null, existsInAdmin); // let's get the internal network group -- it should always exist NetworkGroup internalNG = NetworkGroup.getDefaultNetworkGroup(); assertNotNull(internalNG); // let's check the routing through the network group doCheckNetworkGroup(internalNG, dnToSearch, dnSubordinate, null, existsInInternal); doCheckNetworkGroup(defaultNG, dnToSearch, dnSubordinate, null, exists); } /** @@ -430,90 +376,6 @@ } } /** * Tests the network group resource limits * <p> * Disabled because NGs are not supported (issue OPENDJ-335). * * @param networkGroupID the ID of the network group to register * @param workflowBaseDN1 the base DN of the first workflow node to register * in the network group */ @Test (dataProvider = "DNSet_3", groups = "virtual", enabled=false) public void testNetworkGroupResourceLimits( String networkGroupID, DN workflowBaseDN, int priority, final int maxConnections, final int maxConnectionsFromSameClient, final int maxOpsPerConn, final int maxConcurrentOpsPerConn, final int searchTimeLimit, final int searchSizeLimit, final int minSubstringLength ) throws Exception { // Create and register the network group with the server. TestCaseUtils.dsconfig( "set-global-configuration-prop", "--set", "workflow-configuration-mode:manual"); try { TestCaseUtils.dsconfig( "create-network-group", "--group-name", networkGroupID, "--set", "enabled:true", "--set", "priority:" + priority); try { // Ensure that the network group was created ok. NetworkGroup networkGroup = NetworkGroup.getDefaultNetworkGroup(); assertNotNull(networkGroup, "The network group does not seem to be registered."); TestCaseUtils.dsconfig( "create-network-group-qos-policy", "--group-name", networkGroupID, "--type", "resource-limits", "--set", "max-concurrent-ops-per-connection:" + maxConcurrentOpsPerConn, "--set", "max-connections:" + maxConnections, "--set", "max-connections-from-same-ip:" + maxConnectionsFromSameClient, "--set", "max-ops-per-connection:" + maxOpsPerConn, "--set", "min-substring-length:" + minSubstringLength, "--set", "size-limit:" + searchSizeLimit, "--set", "time-limit:" + searchTimeLimit + "s"); // Check the resource limits are set properly. assertEquals(networkGroup.getTimeLimit(), searchTimeLimit); assertEquals(networkGroup.getSizeLimit(), searchSizeLimit); assertEquals(networkGroup.getMinSubstring(), minSubstringLength); TestCaseUtils.dsconfig( "delete-network-group-qos-policy", "--group-name", networkGroupID, "--policy-type", "resource-limits"); } finally { // The policy will get removed by this as well. TestCaseUtils.dsconfig("delete-network-group", "--group-name", networkGroupID); } } finally { TestCaseUtils.dsconfig( "set-global-configuration-prop", "--set", "workflow-configuration-mode:auto"); } } /** * Tests the mechanism to attribute a network group to a client connection, * comparing the priority. @@ -729,38 +591,4 @@ } } /** * Creates a workflow and register it with a network group. * * @param networkGroup a network group to register the workflow with * @param workflowBaseDN the base DN of the workflow to register; may be * null * @throws DirectoryException If the workflow ID for the provided * workflow conflicts with the workflow * ID of an existing workflow. */ private WorkflowImpl createAndRegisterWorkflow( NetworkGroup networkGroup, DN workflowBaseDN ) throws DirectoryException { assertNotNull(networkGroup); if (workflowBaseDN == null) { return null; } // Create a workflow with no task inside. The workflow identifier // is the a string representation of the workflow base DN. WorkflowImpl workflow = new WorkflowImpl(workflowBaseDN.toString(), workflowBaseDN, null); assertNotNull(workflow); // Register the workflow with the network group. networkGroup.registerWorkflow(workflow); return workflow; } }