RM Performance Improvements:

* focus on in-place scenarios with large numbers of DM users and large numbers of in-place records (based on issue informally reported by partner)
 * improve performance of dynamic authorities used for in-place security evaluation (L1 transaction cache and more preformant authority look up)
 * remove unwanted queries in tree (N+1 for every node) .. killed it for large file plans
 * L1 transaction cache for capability condition evaluation .. these are called a LOT so removes some of the bottle necks when evaluating the permissions of a large sets of nodes
 * extend helper system test used to load up fileplan and now also create in-place records
 * unit and integration tests run .. sanity testing done via the UI
 * overall performance of the display of 1000 in-place records in the file plan down from minutes to a few seconds!



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@75186 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Roy Wetherall
2014-06-28 04:54:04 +00:00
parent 1996a4dc85
commit 75c8dbc579
37 changed files with 267 additions and 94 deletions

View File

@@ -94,7 +94,7 @@ public class HoldCapabilityConditionUnitTest extends BaseUnitTest
doReturn(Collections.EMPTY_LIST).when(mockedHoldService).heldBy(eq(recordFolder), anyBoolean());
// when
boolean result = evaluator.evaluate(recordFolder);
boolean result = evaluator.evaluateImpl(recordFolder);
// then
assertFalse(result);
@@ -114,7 +114,7 @@ public class HoldCapabilityConditionUnitTest extends BaseUnitTest
doReturn(AccessStatus.DENIED).when(mockedPermissionService).hasPermission(hold2, RMPermissionModel.FILING);
// when
boolean result = evaluator.evaluate(recordFolder);
boolean result = evaluator.evaluateImpl(recordFolder);
// then
assertFalse(result);
@@ -134,7 +134,7 @@ public class HoldCapabilityConditionUnitTest extends BaseUnitTest
doReturn(AccessStatus.ALLOWED).when(mockedPermissionService).hasPermission(hold2, RMPermissionModel.FILING);
// when
boolean result = evaluator.evaluate(recordFolder);
boolean result = evaluator.evaluateImpl(recordFolder);
// then
assertTrue(result);

View File

@@ -31,6 +31,7 @@ import java.util.Set;
import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest;
import org.alfresco.repo.security.permissions.impl.AccessPermissionImpl;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -128,6 +129,17 @@ public class FilePlanPermissionServiceImplUnitTest extends BaseUnitTest
makeChildrenOf(holdContainer, hold);
makeChildrenOf(hold, heldRecord);
doReturn(FilePlanComponentKind.FILE_PLAN).when(filePlanPermissionService).getFilePlanComponentKind(filePlan);
doReturn(FilePlanComponentKind.RECORD_CATEGORY).when(filePlanPermissionService).getFilePlanComponentKind(rootRecordCategory);
doReturn(FilePlanComponentKind.RECORD_CATEGORY).when(filePlanPermissionService).getFilePlanComponentKind(recordCategory);
doReturn(FilePlanComponentKind.RECORD_FOLDER).when(filePlanPermissionService).getFilePlanComponentKind(newRecordFolder);
doReturn(FilePlanComponentKind.RECORD).when(filePlanPermissionService).getFilePlanComponentKind(newRecord);
doReturn(FilePlanComponentKind.UNFILED_RECORD_FOLDER).when(filePlanPermissionService).getFilePlanComponentKind(unfiledRecordFolder);
doReturn(FilePlanComponentKind.UNFILED_RECORD_CONTAINER).when(filePlanPermissionService).getFilePlanComponentKind(unfiledRecordContainer);
doReturn(FilePlanComponentKind.RECORD).when(filePlanPermissionService).getFilePlanComponentKind(unfiledRecord);
doReturn(FilePlanComponentKind.HOLD_CONTAINER).when(filePlanPermissionService).getFilePlanComponentKind(holdContainer);
doReturn(FilePlanComponentKind.HOLD).when(filePlanPermissionService).getFilePlanComponentKind(hold);
}
/**