diff --git a/e2e-test/pom.xml b/e2e-test/pom.xml index 619a7f611..f388149d1 100644 --- a/e2e-test/pom.xml +++ b/e2e-test/pom.xml @@ -11,9 +11,9 @@ Search Analytics E2E Tests Test Project to test Search Service and Analytics Features on a complete setup of Alfresco, Share - 6.0.0.3 - 6.0.0.1 - 2.0.12 + 6.0.1.2 + 6.0.0.4 + 3.0.9 2.6.0 src/test/resources/SearchSuite.xml @@ -45,6 +45,7 @@ ${test.exclude} ${test.include} + true diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/AbstractE2EFunctionalTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/AbstractE2EFunctionalTest.java index d85398287..2f259adb0 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/AbstractE2EFunctionalTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/AbstractE2EFunctionalTest.java @@ -47,9 +47,10 @@ import static lombok.AccessLevel.PROTECTED; @ContextConfiguration("classpath:alfresco-search-e2e-context.xml") public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringContextTests { - public static final int SEARCH_MAX_ATTEMPS = 6; + /** The number of retries that a query will be tried before giving up. */ + private static final int SEARCH_MAX_ATTEMPTS = 6; - private static Logger LOG = LogFactory.getLogger(); + private static final Logger LOGGER = LogFactory.getLogger(); @Autowired protected RestProperties restProperties; @@ -85,8 +86,6 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont protected static String unique_searchString; - public static final String NODE_PREFIX = "workspace/SpacesStore/"; - @BeforeSuite(alwaysRun = true) public void beforeSuite() throws Exception { @@ -97,7 +96,7 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont } @BeforeClass(alwaysRun = true) - public void setup() throws Exception + public void setup() { serverHealth.assertServerIsOnline(); @@ -127,7 +126,7 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont } catch (Exception e) { - LOG.warn("Error Loading Custom Model", e); + LOGGER.warn("Error Loading Custom Model", e); } } return modelDeployed; @@ -135,8 +134,6 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont public boolean deactivateCustomModel(String fileName) { - Boolean modelDeactivated = false; - try { FileModel customModel = getCustomModel(fileName); @@ -144,17 +141,16 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont // Deactivate the model if found if (customModel != null) { - cmisApi.authenticateUser(dataUser.getAdminUser()).usingResource(customModel).updateProperty("cm:modelActive", false); - modelDeactivated = true; + return true; } } catch (Exception e) { - LOG.warn("Error Deactivating Custom Model", e); + LOGGER.warn("Error Deactivating Custom Model", e); } - return modelDeactivated; + return false; } public boolean deleteCustomModel(String fileName) @@ -176,12 +172,12 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont } else { - LOG.error("Custom Content Model [{}] is not available under [/Data Dictionary/Models/] location", fileName); + LOGGER.error("Custom Content Model [{}] is not available under [/Data Dictionary/Models/] location", fileName); } } catch (Exception e) { - LOG.error("Custom Content Model [{}] is not available under [/Data Dictionary/Models/] location", fileName); + LOGGER.error("Custom Content Model [{}] is not available under [/Data Dictionary/Models/] location", fileName); } return modelDeleted; @@ -206,17 +202,17 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont customModel.setNodeRef(modelInRepo.getId()); customModel.setNodeRef(customModel.getNodeRefWithoutVersion()); customModel.setCmisLocation(String.format("/Data Dictionary/Models/%s", fileName)); - LOG.info("Custom Model file: " + customModel.getCmisLocation()); + LOGGER.info("Custom Model file: " + customModel.getCmisLocation()); } else { - LOG.info("Custom Content Model [{}] is not available under [/Data Dictionary/Models/] location", fileName); + LOGGER.info("Custom Content Model [{}] is not available under [/Data Dictionary/Models/] location", fileName); } } } catch (Exception e) { - LOG.warn("Error Getting Custom Model: " + fileName, e); + LOGGER.warn("Error Getting Custom Model: " + fileName, e); } return customModel; @@ -231,22 +227,15 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont */ protected SearchResponse query(SearchRequest query) { - try - { - return restClient.authenticateUser(testUser).withSearchAPI().search(query); - } - catch (final Exception exception) - { - throw new RuntimeException(exception); - } + return restClient.authenticateUser(testUser).withSearchAPI().search(query); } /** * Wait for Solr to finish indexing and search to return appropriate results * - * @param userQuery: Search Query + * @param userQuery Search Query * @param contentToFind that's expected to be included / excluded from the results - * @param expectedInResults + * @param expectedInResults Whether we expect the content in the results or not. * @return true if search returns expected results, i.e. is given content is found or excluded from the results */ public boolean isContentInSearchResults(String userQuery, String contentToFind, boolean expectedInResults) { @@ -254,30 +243,27 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont String expectedStatusCode = HttpStatus.OK.toString(); String contentName = (contentToFind == null) ? "" : contentToFind; + SearchRequest searchRequest = createQuery(userQuery); + // Repeat search until the query results are as expected or Search Retry count is hit - for (int searchCount = 0; searchCount < SEARCH_MAX_ATTEMPS; searchCount++) + for (int searchCount = 0; searchCount < SEARCH_MAX_ATTEMPTS; searchCount++) { - SearchRequest searchRequest = createQuery(userQuery); SearchResponse response = query(searchRequest); if (restClient.getStatusCode().matches(expectedStatusCode)) { - boolean found = response.getEntries().stream() .map(entry -> entry.getModel().getName()) .filter(name -> name.equalsIgnoreCase(contentName) || contentName.isBlank()) .count() > 0; - // Loop again if result is not as expected: To cater for solr lag: eventual consistency + // Exit loop if result is as expected. if (expectedInResults == found) { return true; } - else - { - // Wait for the solr indexing. - Utility.waitToLoopTime(properties.getSolrWaitTimeInSeconds(), "Wait For Indexing. Retry Attempt: " + searchCount); - } + // Wait for the solr indexing (eventual consistency). + Utility.waitToLoopTime(properties.getSolrWaitTimeInSeconds(), "Wait For Indexing. Retry Attempt: " + (searchCount + 1)); } else { @@ -294,9 +280,8 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont * @param userQuery: search query, this can include the fieldname, unique search string will guarantee accurate results * @param expectedInResults, true if entry is expected in the results set * @return true (indexing is finished) if search returns appropriate results - * @throws Exception */ - public boolean waitForIndexing(String userQuery, boolean expectedInResults) throws Exception + public boolean waitForIndexing(String userQuery, boolean expectedInResults) { // Use the search query as is: fieldname(s) may or may not be specified within the userQuery return waitForIndexing(null, userQuery, expectedInResults); @@ -308,9 +293,8 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont * @param userQuery * @param expectedInResults * @return - * @throws Exception */ - public boolean waitForMetadataIndexing(String userQuery, boolean expectedInResults) throws Exception + public boolean waitForMetadataIndexing(String userQuery, boolean expectedInResults) { return waitForIndexing("name", userQuery, expectedInResults); } @@ -322,9 +306,8 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont * @param userQuery * @param expectedInResults * @return - * @throws Exception */ - public boolean waitForContentIndexing(String userQuery, boolean expectedInResults) throws Exception + public boolean waitForContentIndexing(String userQuery, boolean expectedInResults) { return waitForIndexing("cm:content", userQuery, expectedInResults); } @@ -336,9 +319,8 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont * @param userQuery: search string, unique search string will guarantee accurate results * @param expectedInResults, true if entry is expected in the results set * @return true (indexing is finished) if search returns appropriate results - * @throws Exception */ - private boolean waitForIndexing(String fieldName, String userQuery, boolean expectedInResults) throws Exception + private boolean waitForIndexing(String fieldName, String userQuery, boolean expectedInResults) { String query = (fieldName == null) ? userQuery : String.format("%s:'%s'", fieldName, userQuery); @@ -365,16 +347,11 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont */ protected SearchResponse queryAsUser(UserModel user, String queryString) { - try { - SearchRequest searchRequest = new SearchRequest(); - RestRequestQueryModel queryModel = new RestRequestQueryModel(); - queryModel.setQuery(queryString); - searchRequest.setQuery(queryModel); - return restClient.authenticateUser(user).withSearchAPI().search(searchRequest); - } catch (final Exception exception) - { - throw new RuntimeException(exception); - } + SearchRequest searchRequest = new SearchRequest(); + RestRequestQueryModel queryModel = new RestRequestQueryModel(); + queryModel.setQuery(queryString); + searchRequest.setQuery(queryModel); + return restClient.authenticateUser(user).withSearchAPI().search(searchRequest); } /** @@ -384,7 +361,7 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont * @param queryModel: The queryModel to search for, containing the query * @return the search response from the API */ - protected SearchResponse queryAsUser(UserModel user, RestRequestQueryModel queryModel) throws Exception + protected SearchResponse queryAsUser(UserModel user, RestRequestQueryModel queryModel) { SearchRequest searchRequest = new SearchRequest(); searchRequest.setQuery(queryModel); @@ -396,9 +373,8 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont * Helper method which create an http post request to Search API end point. * * @return {@link SearchResponse} response. - * @throws Exception if error */ - protected SearchResponse query(RestRequestQueryModel queryReq, RestRequestHighlightModel highlight) throws Exception + protected SearchResponse query(RestRequestQueryModel queryReq, RestRequestHighlightModel highlight) { SearchRequest query = new SearchRequest(queryReq); query.setHighlight(highlight); diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/AbstractCmisE2ETest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/AbstractCmisE2ETest.java index 6f31ec0ac..3dc7ed8c3 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/AbstractCmisE2ETest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/AbstractCmisE2ETest.java @@ -57,9 +57,8 @@ public abstract class AbstractCmisE2ETest extends AbstractE2EFunctionalTest * @param query CMIS Query to be executed * @param expectedCountResults Number of results expected * @return true when results count is equals to expectedCountResults - * @throws Exception */ - protected boolean waitForIndexing(String query, long expectedCountResults) throws Exception + protected boolean waitForIndexing(String query, long expectedCountResults) { for (int searchCount = 1; searchCount <= 3; searchCount++) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/SolrSearchByPathTests.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/SolrSearchByPathTests.java index dc284c037..c1e0ae1b9 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/SolrSearchByPathTests.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/SolrSearchByPathTests.java @@ -38,7 +38,7 @@ public class SolrSearchByPathTests extends AbstractCmisE2ETest @Test(dataProviderClass = XMLTestDataProvider.class, dataProvider = "getAllData") @XMLDataConfig(file = "src/test/resources/testdata/search-by-path.xml") - public void prepareDataForSearchByPath(XMLTestData testData) throws Exception + public void prepareDataForSearchByPath(XMLTestData testData) { this.testData = testData; testData.createUsers(dataUser); @@ -49,7 +49,7 @@ public class SolrSearchByPathTests extends AbstractCmisE2ETest @Test(dependsOnMethods = "prepareDataForSearchByPath", dataProviderClass = XMLTestDataProvider.class, dataProvider = "getQueriesData") @XMLDataConfig(file = "src/test/resources/testdata/search-by-path.xml") - public void executeSearchByPathQueries(QueryModel query) throws Exception + public void executeSearchByPathQueries(QueryModel query) { cmisApi.withQuery(query.getValue()).assertResultsCount().equals(query.getResults()); } diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/SolrSearchScoreQueryTests.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/SolrSearchScoreQueryTests.java index 36ad1eabe..85b597fea 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/SolrSearchScoreQueryTests.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/cmis/SolrSearchScoreQueryTests.java @@ -43,7 +43,7 @@ public class SolrSearchScoreQueryTests extends AbstractCmisE2ETest * @see org.alfresco.test.search.functional.AbstractE2EFunctionalTest#dataPreparation() */ @Override - public void setup() throws Exception + public void setup() { } diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/AbstractSearchServicesE2ETest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/AbstractSearchServicesE2ETest.java index edd3c230a..2beaa33f4 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/AbstractSearchServicesE2ETest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/AbstractSearchServicesE2ETest.java @@ -35,7 +35,7 @@ public abstract class AbstractSearchServicesE2ETest extends AbstractE2EFunctiona protected FileModel file, file2, file3, file4; - public void searchServicesDataPreparation() throws Exception + public void searchServicesDataPreparation() { /* * Create the following file structure for preconditions : diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/FingerPrintTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/FingerPrintTest.java index 2f6f8b678..858e8b2f5 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/FingerPrintTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/FingerPrintTest.java @@ -79,7 +79,7 @@ public class FingerPrintTest extends AbstractE2EFunctionalTest public void makeSureFingerprintQueryWorksAfterMetadataUpdate() throws Exception { // Index a new file with content - FileModel file = new FileModel("Project_Contract.pdf", FileType.TEXT_PLAIN, "A content which is completely different from other indexed files."); + FileModel file = new FileModel("Project_Contract.txt", FileType.TEXT_PLAIN, "A content which is completely different from other indexed files."); dataContent.usingUser(testUser).usingSite(testSite).usingResource(folder).createContent(file); // make sure the content has been indexed (i.e. the ContentTracker fingerprint has been correctly computed diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/SearchTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/SearchTest.java index b3771d4a8..aa49cf8e5 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/SearchTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/SearchTest.java @@ -72,7 +72,7 @@ public class SearchTest extends AbstractSearchServicesE2ETest SearchNodeModel entity = nodes.getEntryByIndex(0); entity.assertThat().field("search").contains("score"); - entity.getSearch().assertThat().field("score").isNotEmpty(); + entity.getSearch().assertThat().field("score").isNotNull(); Assert.assertEquals(entity.getName(),"pangram.txt"); } diff --git a/e2e-test/src/test/java/org/alfresco/test/search/nonFunctional/upgrade/AbstractUpgradeE2ETest.java b/e2e-test/src/test/java/org/alfresco/test/search/nonFunctional/upgrade/AbstractUpgradeE2ETest.java index f3959727e..59f618e9f 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/nonFunctional/upgrade/AbstractUpgradeE2ETest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/nonFunctional/upgrade/AbstractUpgradeE2ETest.java @@ -37,7 +37,7 @@ public abstract class AbstractUpgradeE2ETest extends AbstractTestNGSpringContext protected XMLTestData testData; @BeforeClass(alwaysRun = true) - public void checkServerHealth() throws Exception + public void checkServerHealth() { serverHealth.assertServerIsOnline(); }