mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-07 18:25:23 +00:00
27125: Subtasks of ALF-7072: RSOLR 013: Remote API to get ACLs and readers - ALF-8334: RSOLR 013: Modify ACL schema to record change times - ALF-8336: RSOLR 013: DB upgrade scripts for ACL changes - TODO: Query APIs 27128: Added TooManyResultsException as a concurrency detection trigger - Usually too many results indicates that the DB table key is not as specific as it should be, but it's AVM that showed this up. 27132: Clean up: javadocs; non-javadocs; uncommented fields; @since tags; etc. 27134: Removed empty directory 27135: Fix for ALF-8333: CMIS query: JOIN on an aspect results in CmisInvalidArgumentException - incorrect scope used when building orderings 27139: Fixed SORL transaction tracking queries - Queries were using incompatible boolean comparisons - Added SOLRDAO to test suite - Cleaned up code and reformatted code 27141: Minor additions to CannedQuery interface - get parameter bean - construct sort details from a list - ALF-7167: Canned queries 27146: RINF 09 / RINF 10: DB-based paged query for get children (DocLib & CMIS) - milestone check-in for sprint demo & review (WIP) - added new FileFolderService (paged) list query (public API is subject to change) - moved temp JavaScript sorting to Java - example usage by DocLib (via ScriptNode) and CMIS (via AlfrescoCmisService) - implemented as demo "canned query" including embedded use of "list" permission interceptor - ALF-7402 / ALF-7168 27150: RINF 09 / RINF 10: DB-based paged query for get children (DocLib & CMIS) - missed file (follow-on to r27146) 27158: ALF-7070, ALF-7072: SOLR tracking (node and changeset) - Pulled non-DAO code into SOLRTrackingComponent - DAO code and related tests just test basic CRUD - SOLRTrackingComponent does complex cross-schema manipulation 27159: Fixed line ending and removed svn:eol-style 27160: ALF-8334: RSOLR 013: Fixed SQL Server syntax 27165: RINF 09 / RINF 10: DB-based paged query for get children (DocLib & CMIS) - fix listDeepFolders (causing Imap*Test to fail) - all private methods now order files followed by folders (consistent with existing public APIs such as FileFolderService.search & ScriptNode.childFileFolders*) - follow-on to r27146 28271: Consolidate diagnostic logging for max perm checks (ALF-8388 + ALF-8419) - note: this should be a trivial merge to HEAD git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28292 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
144 lines
4.7 KiB
Java
144 lines
4.7 KiB
Java
/*
|
|
* Copyright (C) 2005-2011 Alfresco Software Limited.
|
|
*
|
|
* This file is part of Alfresco
|
|
*
|
|
* Alfresco is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Alfresco is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
package org.alfresco.repo.domain.solr;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import junit.framework.TestCase;
|
|
|
|
import org.alfresco.repo.domain.node.Node;
|
|
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
|
import org.alfresco.repo.solr.NodeParameters;
|
|
import org.alfresco.service.cmr.repository.StoreRef;
|
|
import org.alfresco.util.ApplicationContextHelper;
|
|
import org.springframework.context.ConfigurableApplicationContext;
|
|
|
|
/**
|
|
* Tests for the SOLR DAO
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
public class SOLRDAOTest extends TestCase
|
|
{
|
|
private ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) ApplicationContextHelper.getApplicationContext();
|
|
|
|
private AuthenticationComponent authenticationComponent;
|
|
private SOLRDAO solrDAO;
|
|
|
|
@Override
|
|
public void setUp() throws Exception
|
|
{
|
|
solrDAO = (SOLRDAO)ctx.getBean("solrDAO");
|
|
authenticationComponent = (AuthenticationComponent)ctx.getBean("authenticationComponent");
|
|
|
|
authenticationComponent.setSystemUserAsCurrentUser();
|
|
}
|
|
|
|
public void testQueryTransactionsNoLimit()
|
|
{
|
|
long startTime = System.currentTimeMillis() - (5 * 60000L);
|
|
|
|
try
|
|
{
|
|
solrDAO.getTransactions(null, startTime, 0);
|
|
fail("Must have result limit");
|
|
}
|
|
catch (IllegalArgumentException e)
|
|
{
|
|
// Expected
|
|
}
|
|
}
|
|
|
|
public void testQueryTransactionsTime()
|
|
{
|
|
long startTime = System.currentTimeMillis() + (5 * 60000L); // The future
|
|
List<Transaction> txns = solrDAO.getTransactions(null, startTime, 50);
|
|
assertTrue("Transaction count not limited", txns.size() == 0);
|
|
}
|
|
|
|
public void testQueryTransactionsLimit()
|
|
{
|
|
List<Transaction> txns = solrDAO.getTransactions(null, 0L, 50);
|
|
assertTrue("Transaction count not limited", txns.size() <= 50);
|
|
}
|
|
|
|
public void testGetNodesSimple()
|
|
{
|
|
long startTime = 0L;
|
|
|
|
List<Transaction> txns = solrDAO.getTransactions(null, startTime, 500);
|
|
|
|
List<Long> txnIds = toTxnIds(txns);
|
|
|
|
NodeParameters nodeParameters = new NodeParameters();
|
|
nodeParameters.setTransactionIds(txnIds);
|
|
nodeParameters.setStoreProtocol(StoreRef.PROTOCOL_WORKSPACE);
|
|
nodeParameters.setStoreIdentifier(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE.getIdentifier());
|
|
|
|
List<Node> nodes = solrDAO.getNodes(nodeParameters);
|
|
assertTrue("Expect 'some' nodes associated with txns", nodes.size() > 0);
|
|
}
|
|
|
|
public void testGetNodesForStore()
|
|
{
|
|
List<Transaction> txns = solrDAO.getTransactions(null, null, 500);
|
|
|
|
List<Long> txnIds = toTxnIds(txns);
|
|
|
|
NodeParameters nodeParameters = new NodeParameters();
|
|
nodeParameters.setTransactionIds(txnIds);
|
|
|
|
List<Node> nodes = solrDAO.getNodes(nodeParameters);
|
|
assertTrue("Expect 'some' nodes associated with txns", nodes.size() > 0);
|
|
}
|
|
|
|
public void testGetNodesForTxnRange()
|
|
{
|
|
List<Transaction> txns = solrDAO.getTransactions(null, null, 500);
|
|
|
|
List<Long> txnIds = toTxnIds(txns);
|
|
|
|
// Only works if there are transactions
|
|
if (txnIds.size() < 2)
|
|
{
|
|
// Nothing to test
|
|
return;
|
|
}
|
|
|
|
NodeParameters nodeParameters = new NodeParameters();
|
|
nodeParameters.setFromTxnId(txnIds.get(0));
|
|
nodeParameters.setToTxnId(txnIds.get(1));
|
|
|
|
List<Node> nodes = solrDAO.getNodes(nodeParameters);
|
|
assertTrue("Expect 'some' nodes associated with txns", nodes.size() > 0);
|
|
}
|
|
|
|
private List<Long> toTxnIds(List<Transaction> txns)
|
|
{
|
|
List<Long> txnIds = new ArrayList<Long>(txns.size());
|
|
for(Transaction txn : txns)
|
|
{
|
|
txnIds.add(txn.getId());
|
|
}
|
|
|
|
return txnIds;
|
|
}
|
|
}
|