From 82d425a23d1e01b50ef099b9b3c4a9b7eb0d4830 Mon Sep 17 00:00:00 2001 From: Keerat Date: Mon, 3 Feb 2020 10:38:01 +0000 Subject: [PATCH 01/17] SEARCH-1681 A test for EXPLICIT_ID sharding --- .../functional/AbstractE2EFunctionalTest.java | 1 + .../searchServices/search/ShardInfoTest.java | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+) 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 7470000ab..0f22c4acb 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 @@ -102,6 +102,7 @@ public abstract class AbstractE2EFunctionalTest extends AbstractTestNGSpringCont deployCustomModel("model/music-model.xml"); deployCustomModel("model/finance-model.xml"); + deployCustomModel("model/sharding-content-model.xml"); } @BeforeClass(alwaysRun = true) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 74fbcf971..1e1f430b6 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -126,4 +126,42 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest restClient.authenticateUser(dataUser.createRandomTestUser()).withShardInfoAPI().getInfo(); restClient.assertStatusCodeIs(HttpStatus.INTERNAL_SERVER_ERROR); } + + @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) + public void getShardInfoWithExplicitID() throws JsonProcessingException + { + RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() + .getInfo(); + restClient.assertStatusCodeIs(HttpStatus.OK); + info.assertThat().entriesListIsNotEmpty(); + assertEquals(info.getPagination().getTotalItems().intValue(), 2); + + List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); + List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); + + List entries = info.getEntries(); + for (RestShardInfoModel shardInfoModel : entries) + { + RestShardInfoModel model = shardInfoModel.getModel(); + assertEquals(model.getTemplate(), "rerank"); + assertEquals(model.getShardMethod(), "EXPLICIT_ID"); + assertEquals(model.getMode(), "MASTER"); + assertTrue(model.getHasContent()); + + assertTrue(stores.contains(model.getStores())); + + List shards = model.getShards(); + assertNotNull(shards); + RestShardModel shard = shards.iterator().next(); + assertNotNull(shard); + List instances = shard.getInstances(); + assertNotNull(instances); + RestInstanceModel instance = instances.iterator().next(); + assertNotNull(instance); + + assertTrue(baseUrls.contains(instance.getBaseUrl())); + + assertEquals(instance.getState(), "ACTIVE"); + } + } } From 713866b448b4754c97c26647cedcc7a9de359831 Mon Sep 17 00:00:00 2001 From: Keerat Date: Mon, 3 Feb 2020 12:52:46 +0000 Subject: [PATCH 02/17] SEARCH-1681 Removing testgroup from the explicit sharding test --- .../search/functional/searchServices/search/ShardInfoTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 1e1f430b6..aac3a485d 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -127,7 +127,7 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest restClient.assertStatusCodeIs(HttpStatus.INTERNAL_SERVER_ERROR); } - @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) + @Test(groups = { TestGroup.ACS_60n }) public void getShardInfoWithExplicitID() throws JsonProcessingException { RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() From 2f210293c6349828cd37385042bd8ac33ee68630 Mon Sep 17 00:00:00 2001 From: Keerat Date: Wed, 5 Feb 2020 14:16:40 +0000 Subject: [PATCH 03/17] SEARCH-1681 adding other sharding tests with testgroup to avoid tests on bamboo --- .../searchServices/search/ShardInfoTest.java | 190 ++++++++++++++++++ 1 file changed, 190 insertions(+) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 087641391..70c732525 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -165,4 +165,194 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest assertEquals(instance.getState(), "ACTIVE"); } } + + @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) + public void getShardInfoWithDBIDRange() throws JsonProcessingException + { + RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() + .getInfo(); + restClient.assertStatusCodeIs(HttpStatus.OK); + info.assertThat().entriesListIsNotEmpty(); + assertEquals(info.getPagination().getTotalItems().intValue(), 2); + + List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); + List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); + + List entries = info.getEntries(); + for (RestShardInfoModel shardInfoModel : entries) + { + RestShardInfoModel model = shardInfoModel.getModel(); + assertEquals(model.getTemplate(), "rerank"); + assertEquals(model.getShardMethod(), "DB_ID_RANGE_ID"); + assertEquals(model.getMode(), "MASTER"); + assertTrue(model.getHasContent()); + + assertTrue(stores.contains(model.getStores())); + + List shards = model.getShards(); + assertNotNull(shards); + RestShardModel shard = shards.iterator().next(); + assertNotNull(shard); + List instances = shard.getInstances(); + assertNotNull(instances); + RestInstanceModel instance = instances.iterator().next(); + assertNotNull(instance); + + assertTrue(baseUrls.contains(instance.getBaseUrl())); + + assertEquals(instance.getState(), "ACTIVE"); + } + } + + @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) + public void getShardInfoWithMODACLID() throws JsonProcessingException + { + RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() + .getInfo(); + restClient.assertStatusCodeIs(HttpStatus.OK); + info.assertThat().entriesListIsNotEmpty(); + assertEquals(info.getPagination().getTotalItems().intValue(), 2); + + List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); + List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); + + List entries = info.getEntries(); + for (RestShardInfoModel shardInfoModel : entries) + { + RestShardInfoModel model = shardInfoModel.getModel(); + assertEquals(model.getTemplate(), "rerank"); + assertEquals(model.getShardMethod(), "MOD_ACL_ID"); + assertEquals(model.getMode(), "MASTER"); + assertTrue(model.getHasContent()); + + assertTrue(stores.contains(model.getStores())); + + List shards = model.getShards(); + assertNotNull(shards); + RestShardModel shard = shards.iterator().next(); + assertNotNull(shard); + List instances = shard.getInstances(); + assertNotNull(instances); + RestInstanceModel instance = instances.iterator().next(); + assertNotNull(instance); + + assertTrue(baseUrls.contains(instance.getBaseUrl())); + + assertEquals(instance.getState(), "ACTIVE"); + } + } + + @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) + public void getShardInfoWithACLID() throws JsonProcessingException + { + RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() + .getInfo(); + restClient.assertStatusCodeIs(HttpStatus.OK); + info.assertThat().entriesListIsNotEmpty(); + assertEquals(info.getPagination().getTotalItems().intValue(), 2); + + List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); + List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); + + List entries = info.getEntries(); + for (RestShardInfoModel shardInfoModel : entries) + { + RestShardInfoModel model = shardInfoModel.getModel(); + assertEquals(model.getTemplate(), "rerank"); + assertEquals(model.getShardMethod(), "ACL_ID"); + assertEquals(model.getMode(), "MASTER"); + assertTrue(model.getHasContent()); + + assertTrue(stores.contains(model.getStores())); + + List shards = model.getShards(); + assertNotNull(shards); + RestShardModel shard = shards.iterator().next(); + assertNotNull(shard); + List instances = shard.getInstances(); + assertNotNull(instances); + RestInstanceModel instance = instances.iterator().next(); + assertNotNull(instance); + + assertTrue(baseUrls.contains(instance.getBaseUrl())); + + assertEquals(instance.getState(), "ACTIVE"); + } + } + + @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) + public void getShardInfoWithDate() throws JsonProcessingException + { + RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() + .getInfo(); + restClient.assertStatusCodeIs(HttpStatus.OK); + info.assertThat().entriesListIsNotEmpty(); + assertEquals(info.getPagination().getTotalItems().intValue(), 2); + + List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); + List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); + + List entries = info.getEntries(); + for (RestShardInfoModel shardInfoModel : entries) + { + RestShardInfoModel model = shardInfoModel.getModel(); + assertEquals(model.getTemplate(), "rerank"); + assertEquals(model.getShardMethod(), "DATE"); + assertEquals(model.getMode(), "MASTER"); + assertTrue(model.getHasContent()); + + assertTrue(stores.contains(model.getStores())); + + List shards = model.getShards(); + assertNotNull(shards); + RestShardModel shard = shards.iterator().next(); + assertNotNull(shard); + List instances = shard.getInstances(); + assertNotNull(instances); + RestInstanceModel instance = instances.iterator().next(); + assertNotNull(instance); + + assertTrue(baseUrls.contains(instance.getBaseUrl())); + + assertEquals(instance.getState(), "ACTIVE"); + } + } + + @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) + public void getShardInfoWithProperty() throws JsonProcessingException + { + RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() + .getInfo(); + restClient.assertStatusCodeIs(HttpStatus.OK); + info.assertThat().entriesListIsNotEmpty(); + assertEquals(info.getPagination().getTotalItems().intValue(), 2); + + List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); + List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); + + List entries = info.getEntries(); + for (RestShardInfoModel shardInfoModel : entries) + { + RestShardInfoModel model = shardInfoModel.getModel(); + assertEquals(model.getTemplate(), "rerank"); + assertEquals(model.getShardMethod(), "PROPERTY"); + assertEquals(model.getMode(), "MASTER"); + assertTrue(model.getHasContent()); + + assertTrue(stores.contains(model.getStores())); + + List shards = model.getShards(); + assertNotNull(shards); + RestShardModel shard = shards.iterator().next(); + assertNotNull(shard); + List instances = shard.getInstances(); + assertNotNull(instances); + RestInstanceModel instance = instances.iterator().next(); + assertNotNull(instance); + + assertTrue(baseUrls.contains(instance.getBaseUrl())); + + assertEquals(instance.getState(), "ACTIVE"); + } + } } From d98740f4c181704af7aaafc633d833ba9c820f9a Mon Sep 17 00:00:00 2001 From: Keerat Date: Wed, 5 Feb 2020 16:41:01 +0000 Subject: [PATCH 04/17] SEARCH-1681 updating the pom file for the restapi version --- e2e-test/pom.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/e2e-test/pom.xml b/e2e-test/pom.xml index 628c981b8..3b30095da 100644 --- a/e2e-test/pom.xml +++ b/e2e-test/pom.xml @@ -11,8 +11,7 @@ Search Analytics E2E Tests Test Project to test Search Service and Analytics Features on a complete setup of Alfresco, Share - 1.28 - 1.26 + 1.29 1.13 3.0.19 3.3.0 From c618cb5d1daf38688fc3f80d10e1be8bfffc0323 Mon Sep 17 00:00:00 2001 From: Keerat Date: Thu, 6 Feb 2020 11:33:38 +0000 Subject: [PATCH 05/17] SEARCH-1681 adding test group to shardInfoWithAdminAuthroity test as build is in explicit_id mode --- .../search/functional/searchServices/search/ShardInfoTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 70c732525..075e6f27b 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -40,7 +40,7 @@ import org.springframework.http.HttpStatus; public class ShardInfoTest extends AbstractE2EFunctionalTest { /* The test that will be excluded when running master slave setup, excluding the ASS_MASTER test group. */ - @Test(groups = { TestGroup.ACS_60n, TestGroup.ASS_MASTER }) + @Test(groups = { TestGroup.ACS_60n, TestGroup.ASS_MASTER, TestGroup.EXPLICIT_SHARDING }) public void getShardInfoWithAdminAuthority() throws JsonProcessingException { RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() From b239d5f7eddc32572bb58032258fb1c226455597 Mon Sep 17 00:00:00 2001 From: Keerat Date: Mon, 10 Feb 2020 08:25:48 +0000 Subject: [PATCH 06/17] SEARCH-1681 a single test for sharding with a seperate test group --- .../java/org/alfresco/search/TestGroup.java | 1 + .../searchServices/search/ShardInfoTest.java | 229 +++--------------- 2 files changed, 31 insertions(+), 199 deletions(-) diff --git a/e2e-test/src/main/java/org/alfresco/search/TestGroup.java b/e2e-test/src/main/java/org/alfresco/search/TestGroup.java index fbb90a64e..3cb94174b 100644 --- a/e2e-test/src/main/java/org/alfresco/search/TestGroup.java +++ b/e2e-test/src/main/java/org/alfresco/search/TestGroup.java @@ -30,6 +30,7 @@ public class TestGroup public static final String ASS_MASTER_SLAVE = "ASS_Master_Slave"; // Alfresco Search Services using master slave configurations public static final String ASS_MASTER ="ASS_Master"; // Alfresco search services using master/stand alone mode public static final String EXPLICIT_SHARDING ="Explicit_Sharding"; // Alfresco search services using sharded environment and explicit routing + public static final String SHARDING ="Sharding"; // Alfresco search services using sharded environment public static final String NOT_INSIGHT_ENGINE = "Not_InsightEngine"; // When Alfresco Insight Engine 1.0 isn't running diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 075e6f27b..b940d1288 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -40,7 +40,7 @@ import org.springframework.http.HttpStatus; public class ShardInfoTest extends AbstractE2EFunctionalTest { /* The test that will be excluded when running master slave setup, excluding the ASS_MASTER test group. */ - @Test(groups = { TestGroup.ACS_60n, TestGroup.ASS_MASTER, TestGroup.EXPLICIT_SHARDING }) + @Test(groups = { TestGroup.ACS_60n, TestGroup.ASS_MASTER, TestGroup.SHARDING }) public void getShardInfoWithAdminAuthority() throws JsonProcessingException { RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() @@ -128,231 +128,62 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest restClient.assertStatusCodeIs(HttpStatus.INTERNAL_SERVER_ERROR); } - @Test(groups = { TestGroup.ACS_60n }) - public void getShardInfoWithExplicitID() throws JsonProcessingException + @Test(groups = { TestGroup.ACS_60n, TestGroup.SHARDING }) + public void getShardInfoWith2OrMoreShards() throws JsonProcessingException { - RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() - .getInfo(); + RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI().getInfo(); restClient.assertStatusCodeIs(HttpStatus.OK); info.assertThat().entriesListIsNotEmpty(); + + // Checks based on 2 default cores: alfresco and archive assertEquals(info.getPagination().getTotalItems().intValue(), 2); - List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); - List entries = info.getEntries(); + // We could check entries.size() matches pagination count above for (RestShardInfoModel shardInfoModel : entries) { RestShardInfoModel model = shardInfoModel.getModel(); assertEquals(model.getTemplate(), "rerank"); - assertEquals(model.getShardMethod(), "EXPLICIT_ID"); assertEquals(model.getMode(), "MASTER"); assertTrue(model.getHasContent()); - assertTrue(stores.contains(model.getStores())); - + assertTrue(model.getNumberOfShards()>=2); + + // Sharding Type related checks (an example) + List shardingMethods = Arrays.asList("DB_ID", "DB_ID_RANGE", "EXPLICIT_ID", "ACL_ID", "MOD_ACL_ID", "DATE", "PROPERTY"); + String shardingMethod = model.getShardMethod(); + assertTrue(shardingMethods.contains(shardingMethod), "Unexpected Sharding Method Found: " + shardingMethod); + // Shard Instance related checks: You could iterate through all the instances in a loop List shards = model.getShards(); - assertNotNull(shards); + assertNotNull(shards.contains(shards), "Unexpected number of shards found:" + shards); RestShardModel shard = shards.iterator().next(); assertNotNull(shard); List instances = shard.getInstances(); - assertNotNull(instances); + assertNotNull(instances.contains(instances), "Unexpected number of instances found:" + instances); RestInstanceModel instance = instances.iterator().next(); assertNotNull(instance); - assertTrue(baseUrls.contains(instance.getBaseUrl())); assertEquals(instance.getState(), "ACTIVE"); - } - } - - @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) - public void getShardInfoWithDBIDRange() throws JsonProcessingException - { - RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() - .getInfo(); - restClient.assertStatusCodeIs(HttpStatus.OK); - info.assertThat().entriesListIsNotEmpty(); - assertEquals(info.getPagination().getTotalItems().intValue(), 2); - - List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); - List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); - - List entries = info.getEntries(); - for (RestShardInfoModel shardInfoModel : entries) - { - RestShardInfoModel model = shardInfoModel.getModel(); - assertEquals(model.getTemplate(), "rerank"); - assertEquals(model.getShardMethod(), "DB_ID_RANGE_ID"); - assertEquals(model.getMode(), "MASTER"); - assertTrue(model.getHasContent()); - - assertTrue(stores.contains(model.getStores())); - - List shards = model.getShards(); - assertNotNull(shards); - RestShardModel shard = shards.iterator().next(); - assertNotNull(shard); - List instances = shard.getInstances(); - assertNotNull(instances); - RestInstanceModel instance = instances.iterator().next(); - assertNotNull(instance); - - assertTrue(baseUrls.contains(instance.getBaseUrl())); - assertEquals(instance.getState(), "ACTIVE"); - } - } - - @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) - public void getShardInfoWithMODACLID() throws JsonProcessingException - { - RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() - .getInfo(); - restClient.assertStatusCodeIs(HttpStatus.OK); - info.assertThat().entriesListIsNotEmpty(); - assertEquals(info.getPagination().getTotalItems().intValue(), 2); - - List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); - List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); - - List entries = info.getEntries(); - for (RestShardInfoModel shardInfoModel : entries) - { - RestShardInfoModel model = shardInfoModel.getModel(); - assertEquals(model.getTemplate(), "rerank"); - assertEquals(model.getShardMethod(), "MOD_ACL_ID"); - assertEquals(model.getMode(), "MASTER"); - assertTrue(model.getHasContent()); - - assertTrue(stores.contains(model.getStores())); - - List shards = model.getShards(); - assertNotNull(shards); - RestShardModel shard = shards.iterator().next(); - assertNotNull(shard); - List instances = shard.getInstances(); - assertNotNull(instances); - RestInstanceModel instance = instances.iterator().next(); - assertNotNull(instance); - - assertTrue(baseUrls.contains(instance.getBaseUrl())); + // shardparams related checks + String shardParams = instance.getShardParams(); + if(shardingMethod == "EXPLICIT_ID"){ + assertNotNull(shardParams, "shard.key="); + } - assertEquals(instance.getState(), "ACTIVE"); - } - } - - @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) - public void getShardInfoWithACLID() throws JsonProcessingException - { - RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() - .getInfo(); - restClient.assertStatusCodeIs(HttpStatus.OK); - info.assertThat().entriesListIsNotEmpty(); - assertEquals(info.getPagination().getTotalItems().intValue(), 2); - - List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); - List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); - - List entries = info.getEntries(); - for (RestShardInfoModel shardInfoModel : entries) - { - RestShardInfoModel model = shardInfoModel.getModel(); - assertEquals(model.getTemplate(), "rerank"); - assertEquals(model.getShardMethod(), "ACL_ID"); - assertEquals(model.getMode(), "MASTER"); - assertTrue(model.getHasContent()); - - assertTrue(stores.contains(model.getStores())); - - List shards = model.getShards(); - assertNotNull(shards); - RestShardModel shard = shards.iterator().next(); - assertNotNull(shard); - List instances = shard.getInstances(); - assertNotNull(instances); - RestInstanceModel instance = instances.iterator().next(); - assertNotNull(instance); - - assertTrue(baseUrls.contains(instance.getBaseUrl())); + if(shardingMethod == "DB_ID_RANGE"){ + assertNotNull(shardParams, "shard.key="); + } - assertEquals(instance.getState(), "ACTIVE"); - } - } - - @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) - public void getShardInfoWithDate() throws JsonProcessingException - { - RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() - .getInfo(); - restClient.assertStatusCodeIs(HttpStatus.OK); - info.assertThat().entriesListIsNotEmpty(); - assertEquals(info.getPagination().getTotalItems().intValue(), 2); - - List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); - List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); - - List entries = info.getEntries(); - for (RestShardInfoModel shardInfoModel : entries) - { - RestShardInfoModel model = shardInfoModel.getModel(); - assertEquals(model.getTemplate(), "rerank"); - assertEquals(model.getShardMethod(), "DATE"); - assertEquals(model.getMode(), "MASTER"); - assertTrue(model.getHasContent()); - - assertTrue(stores.contains(model.getStores())); - - List shards = model.getShards(); - assertNotNull(shards); - RestShardModel shard = shards.iterator().next(); - assertNotNull(shard); - List instances = shard.getInstances(); - assertNotNull(instances); - RestInstanceModel instance = instances.iterator().next(); - assertNotNull(instance); - - assertTrue(baseUrls.contains(instance.getBaseUrl())); + if(shardingMethod == "DATE"){ + assertNotNull(shardParams, "shard.key="); + } - assertEquals(instance.getState(), "ACTIVE"); - } - } - - @Test(groups = { TestGroup.ACS_60n, TestGroup.EXPLICIT_SHARDING }) - public void getShardInfoWithProperty() throws JsonProcessingException - { - RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() - .getInfo(); - restClient.assertStatusCodeIs(HttpStatus.OK); - info.assertThat().entriesListIsNotEmpty(); - assertEquals(info.getPagination().getTotalItems().intValue(), 2); - - List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); - List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); - - List entries = info.getEntries(); - for (RestShardInfoModel shardInfoModel : entries) - { - RestShardInfoModel model = shardInfoModel.getModel(); - assertEquals(model.getTemplate(), "rerank"); - assertEquals(model.getShardMethod(), "PROPERTY"); - assertEquals(model.getMode(), "MASTER"); - assertTrue(model.getHasContent()); - - assertTrue(stores.contains(model.getStores())); - - List shards = model.getShards(); - assertNotNull(shards); - RestShardModel shard = shards.iterator().next(); - assertNotNull(shard); - List instances = shard.getInstances(); - assertNotNull(instances); - RestInstanceModel instance = instances.iterator().next(); - assertNotNull(instance); - - assertTrue(baseUrls.contains(instance.getBaseUrl())); - - assertEquals(instance.getState(), "ACTIVE"); + if(shardingMethod == "PROPERTY"){ + assertNotNull(shardParams, "shard.key="); + } } } } From 5eaf0e52922c7e8d1e2c8c876e2f7b0443cb88af Mon Sep 17 00:00:00 2001 From: Keerat Date: Mon, 10 Feb 2020 09:19:58 +0000 Subject: [PATCH 07/17] SEARCH-1681 a single test for sharding with a seperate test group --- .../functional/searchServices/search/ShardInfoTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index b940d1288..217e56960 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -174,11 +174,12 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest } if(shardingMethod == "DB_ID_RANGE"){ - assertNotNull(shardParams, "shard.key="); + assertNotNull(shardParams, ""); } if(shardingMethod == "DATE"){ - assertNotNull(shardParams, "shard.key="); + assertNotNull(shardParams, "shard.key= " + + "shard.date.grouping"); } if(shardingMethod == "PROPERTY"){ From 242b9bce28ef4900a80f447d067f567ce2f97aa0 Mon Sep 17 00:00:00 2001 From: Keerat Date: Mon, 10 Feb 2020 12:01:07 +0000 Subject: [PATCH 08/17] SEARCH-1681 adding switch statement instead of if for shard params --- .../searchServices/search/ShardInfoTest.java | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 217e56960..f46a9c1f7 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -168,22 +168,20 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest assertEquals(instance.getState(), "ACTIVE"); // shardparams related checks - String shardParams = instance.getShardParams(); - if(shardingMethod == "EXPLICIT_ID"){ - assertNotNull(shardParams, "shard.key="); - } - - if(shardingMethod == "DB_ID_RANGE"){ - assertNotNull(shardParams, ""); - } - - if(shardingMethod == "DATE"){ - assertNotNull(shardParams, "shard.key= " - + "shard.date.grouping"); - } - - if(shardingMethod == "PROPERTY"){ - assertNotNull(shardParams, "shard.key="); + String shardParams = instance.getShardParams(); + switch (shardingMethod) + { + case "DB_ID_RANGE": + assertTrue(shardParams.contains("shard.key=")); + case "PROPERTY": + assertTrue(shardParams.contains("shard.key=")); + case "EXPLICIT_ID": + assertTrue(shardParams.contains("shard.key=")); + case "DATE": + assertTrue(shardParams.contains("shard.key=")); + break; + default: + throw new AssertionError("Not as expected: " + shardParams.toString()); } } } From e2f29c7ab6b780474bc5935da183eddea585b98c Mon Sep 17 00:00:00 2001 From: Keerat Date: Tue, 11 Feb 2020 15:19:05 +0000 Subject: [PATCH 09/17] SEARCH-1681 review changes to sharding test --- .../searchServices/search/ShardInfoTest.java | 51 +++++++++++++------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index f46a9c1f7..aee6962a3 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -21,8 +21,11 @@ import static org.testng.Assert.assertTrue; import java.util.Arrays; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import com.fasterxml.jackson.core.JsonProcessingException; +import com.google.common.collect.Sets; import org.alfresco.rest.search.RestInstanceModel; import org.alfresco.rest.search.RestShardInfoModel; @@ -127,6 +130,11 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest restClient.authenticateUser(dataUser.createRandomTestUser()).withShardInfoAPI().getInfo(); restClient.assertStatusCodeIs(HttpStatus.INTERNAL_SERVER_ERROR); } + /** + * This is a test to check that sharding is correctly working on bamboo and locally. + * Include test group 'sharding' on bamboo to enable this test to run + * @throws JsonProcessingException + */ @Test(groups = { TestGroup.ACS_60n, TestGroup.SHARDING }) public void getShardInfoWith2OrMoreShards() throws JsonProcessingException @@ -135,32 +143,32 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest restClient.assertStatusCodeIs(HttpStatus.OK); info.assertThat().entriesListIsNotEmpty(); - // Checks based on 2 default cores: alfresco and archive assertEquals(info.getPagination().getTotalItems().intValue(), 2); - List stores = Arrays.asList("workspace://SpacesStore", "archive://SpacesStore"); + Set stores = Sets.newHashSet("workspace://SpacesStore", "archive://SpacesStore"); List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); List entries = info.getEntries(); - // We could check entries.size() matches pagination count above + + Set actualStores = entries.stream().map(shardInfoModel -> shardInfoModel.getModel().getStores()).collect(Collectors.toSet()); + assertEquals(actualStores, stores); + for (RestShardInfoModel shardInfoModel : entries) { RestShardInfoModel model = shardInfoModel.getModel(); assertEquals(model.getTemplate(), "rerank"); assertEquals(model.getMode(), "MASTER"); assertTrue(model.getHasContent()); - assertTrue(stores.contains(model.getStores())); assertTrue(model.getNumberOfShards()>=2); - // Sharding Type related checks (an example) List shardingMethods = Arrays.asList("DB_ID", "DB_ID_RANGE", "EXPLICIT_ID", "ACL_ID", "MOD_ACL_ID", "DATE", "PROPERTY"); String shardingMethod = model.getShardMethod(); assertTrue(shardingMethods.contains(shardingMethod), "Unexpected Sharding Method Found: " + shardingMethod); - // Shard Instance related checks: You could iterate through all the instances in a loop + List shards = model.getShards(); - assertNotNull(shards.contains(shards), "Unexpected number of shards found:" + shards); + assertNotNull(shards, "Unexpected number of shards found:" + shards); RestShardModel shard = shards.iterator().next(); assertNotNull(shard); List instances = shard.getInstances(); - assertNotNull(instances.contains(instances), "Unexpected number of instances found:" + instances); + assertNotNull(instances, "Unexpected number of instances found:" + instances); RestInstanceModel instance = instances.iterator().next(); assertNotNull(instance); assertTrue(baseUrls.contains(instance.getBaseUrl())); @@ -171,15 +179,28 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest String shardParams = instance.getShardParams(); switch (shardingMethod) { - case "DB_ID_RANGE": - assertTrue(shardParams.contains("shard.key=")); + case "MOD_ACL_ID": + assertTrue(shardingMethod == "MOD_ACL_ID", "Sharding Method is not MOD_ACL_ID"); + break; + case "ACL_ID": + assertTrue(shardingMethod == "ACL_ID", "Sharding Method is not ACL_ID"); + break; + case "DB_ID": + assertTrue(shardingMethod == "DB_ID", "Sharding Method is not DB_ID"); + break; + case "DB_IN_RANGE": + assertTrue(shardingMethod == "DB_ID_RANGE", "Sharding Method is not DB_ID_RANGE"); + break; + case "DATE": + assertTrue(shardParams.contains("shard.key="), "Unexpected shard params defined for DATE"); + assertTrue(shardParams.contains("shard.grouping="), "Unexpected shard grouping defined for DATE"); + break; case "PROPERTY": - assertTrue(shardParams.contains("shard.key=")); + assertTrue(shardParams.contains("shard.key="), "Unexpected shard params defined for PROPERTY"); + break; case "EXPLICIT_ID": - assertTrue(shardParams.contains("shard.key=")); - case "DATE": - assertTrue(shardParams.contains("shard.key=")); - break; + assertTrue(shardParams.contains("shard.key="), "Unexpected shard params defined for EXPLICIT_ID"); + break; default: throw new AssertionError("Not as expected: " + shardParams.toString()); } From e3d74bb80841025e635c8c4ce902d414dafa7086 Mon Sep 17 00:00:00 2001 From: Keerat Date: Tue, 11 Feb 2020 15:55:06 +0000 Subject: [PATCH 10/17] SEARCH-1681 review changes with pagination message --- .../searchServices/search/ShardInfoTest.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index aee6962a3..1cbbee75c 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -142,8 +142,14 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI().getInfo(); restClient.assertStatusCodeIs(HttpStatus.OK); info.assertThat().entriesListIsNotEmpty(); - - assertEquals(info.getPagination().getTotalItems().intValue(), 2); + + if(info.getPagination().getTotalItems().intValue() == 2){ + assertEquals(info.getPagination().getTotalItems().intValue(), 2); + } + else{ + System.out.println("Pagination is: " + info.getPagination().getTotalItems().intValue() + " not expected value of 2"); + } + Set stores = Sets.newHashSet("workspace://SpacesStore", "archive://SpacesStore"); List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); List entries = info.getEntries(); From 898c4f82573a848ad889c3391e771bdd09ead675 Mon Sep 17 00:00:00 2001 From: Keerat Date: Wed, 12 Feb 2020 08:12:16 +0000 Subject: [PATCH 11/17] SEARCH-1681 adding test group to exclude test on bamboo --- .../search/functional/searchServices/search/ShardInfoTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 1cbbee75c..67ad4d311 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -43,7 +43,7 @@ import org.springframework.http.HttpStatus; public class ShardInfoTest extends AbstractE2EFunctionalTest { /* The test that will be excluded when running master slave setup, excluding the ASS_MASTER test group. */ - @Test(groups = { TestGroup.ACS_60n, TestGroup.ASS_MASTER, TestGroup.SHARDING }) + @Test(groups = { TestGroup.ACS_60n, TestGroup.ASS_MASTER, TestGroup.EXPLICIT_SHARDING }) public void getShardInfoWithAdminAuthority() throws JsonProcessingException { RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() From d5072eff1b59d596ff6966bc38467c572f2eab8e Mon Sep 17 00:00:00 2001 From: Keerat Date: Wed, 12 Feb 2020 08:25:00 +0000 Subject: [PATCH 12/17] SEARCH-1681 review changes with pagination message --- .../functional/searchServices/search/ShardInfoTest.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 67ad4d311..aebd9c39e 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -142,13 +142,8 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI().getInfo(); restClient.assertStatusCodeIs(HttpStatus.OK); info.assertThat().entriesListIsNotEmpty(); - - if(info.getPagination().getTotalItems().intValue() == 2){ - assertEquals(info.getPagination().getTotalItems().intValue(), 2); - } - else{ - System.out.println("Pagination is: " + info.getPagination().getTotalItems().intValue() + " not expected value of 2"); - } + + assertEquals(info.getPagination().getTotalItems().intValue(), 2, "Pagination is: " + info.getPagination().getTotalItems().intValue() + " not expected value of 2"); Set stores = Sets.newHashSet("workspace://SpacesStore", "archive://SpacesStore"); List baseUrls = Arrays.asList("/solr/alfresco", "/solr/archive"); From e22bb2966d27eefa98365311a869fc432fa483e9 Mon Sep 17 00:00:00 2001 From: Keerat Date: Wed, 12 Feb 2020 09:44:12 +0000 Subject: [PATCH 13/17] SEARCH-1681 spelling on DB_ID_RANGE in switch statement --- .../search/functional/searchServices/search/ShardInfoTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index aebd9c39e..3391d25bb 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -189,7 +189,7 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest case "DB_ID": assertTrue(shardingMethod == "DB_ID", "Sharding Method is not DB_ID"); break; - case "DB_IN_RANGE": + case "DB_ID_RANGE": assertTrue(shardingMethod == "DB_ID_RANGE", "Sharding Method is not DB_ID_RANGE"); break; case "DATE": From 6cb9b47fbb68a6bcf649163f94ea70b6b51a497a Mon Sep 17 00:00:00 2001 From: Keerat Date: Thu, 13 Feb 2020 14:36:37 +0000 Subject: [PATCH 14/17] SEARCH-1681 creating a loop to go through instances and shards --- .../searchServices/search/ShardInfoTest.java | 89 ++++++++++--------- 1 file changed, 46 insertions(+), 43 deletions(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 3391d25bb..7c90ffb74 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -20,6 +20,7 @@ import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -155,56 +156,58 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest for (RestShardInfoModel shardInfoModel : entries) { RestShardInfoModel model = shardInfoModel.getModel(); - assertEquals(model.getTemplate(), "rerank"); - assertEquals(model.getMode(), "MASTER"); - assertTrue(model.getHasContent()); - assertTrue(model.getNumberOfShards()>=2); + assertEquals(model.getTemplate(), "rerank", "Template is not rerank, template found: "+ model.getTemplate()); + assertEquals(model.getMode(), "MASTER", "Mode is not MASTER, mode found: "+ model.getMode()); + assertTrue(model.getHasContent(), "There is no content on the shards"); + assertTrue(model.getNumberOfShards()>=2, "Number of shards is not equal to or greater than 2"); List shardingMethods = Arrays.asList("DB_ID", "DB_ID_RANGE", "EXPLICIT_ID", "ACL_ID", "MOD_ACL_ID", "DATE", "PROPERTY"); String shardingMethod = model.getShardMethod(); assertTrue(shardingMethods.contains(shardingMethod), "Unexpected Sharding Method Found: " + shardingMethod); List shards = model.getShards(); - assertNotNull(shards, "Unexpected number of shards found:" + shards); - RestShardModel shard = shards.iterator().next(); - assertNotNull(shard); - List instances = shard.getInstances(); - assertNotNull(instances, "Unexpected number of instances found:" + instances); - RestInstanceModel instance = instances.iterator().next(); - assertNotNull(instance); - assertTrue(baseUrls.contains(instance.getBaseUrl())); - - assertEquals(instance.getState(), "ACTIVE"); - - // shardparams related checks - String shardParams = instance.getShardParams(); - switch (shardingMethod) + assertNotNull(shards); + for (RestShardModel shardInstance : shards) { - case "MOD_ACL_ID": - assertTrue(shardingMethod == "MOD_ACL_ID", "Sharding Method is not MOD_ACL_ID"); - break; - case "ACL_ID": - assertTrue(shardingMethod == "ACL_ID", "Sharding Method is not ACL_ID"); - break; - case "DB_ID": - assertTrue(shardingMethod == "DB_ID", "Sharding Method is not DB_ID"); - break; - case "DB_ID_RANGE": - assertTrue(shardingMethod == "DB_ID_RANGE", "Sharding Method is not DB_ID_RANGE"); - break; - case "DATE": - assertTrue(shardParams.contains("shard.key="), "Unexpected shard params defined for DATE"); - assertTrue(shardParams.contains("shard.grouping="), "Unexpected shard grouping defined for DATE"); - break; - case "PROPERTY": - assertTrue(shardParams.contains("shard.key="), "Unexpected shard params defined for PROPERTY"); - break; - case "EXPLICIT_ID": - assertTrue(shardParams.contains("shard.key="), "Unexpected shard params defined for EXPLICIT_ID"); - break; - default: - throw new AssertionError("Not as expected: " + shardParams.toString()); - } + List instanceList = shardInstance.getInstances(); + for (RestInstanceModel instanceX : instanceList) + { + assertTrue(baseUrls.contains(instanceX.getBaseUrl())); + assertEquals(instanceX.getState(), "ACTIVE", "Shard state is not ACTIVE, shard state is: " + instanceX.getState()); + assertNotNull(instanceX.getPort(), "There is not port found for the instance"); + assertEquals(instanceX.getMode(), "MASTER", "Mode is not MASTER, mode found: "+ instanceX.getMode()); + assertTrue(instanceX.getTransactionsRemaining() >= 0, "Transactions remaining is not more than 0, transactions remaining: " + instanceX.getTransactionsRemaining()); + String shardParams = (instanceX).getShardParams(); + switch (shardingMethod) + { + case "MOD_ACL_ID": + assertEquals(shardingMethod = "MOD_ACL_ID", "MOD_ACL_ID", "Sharding Method is not MOD_ACL_ID"); + break; + case "ACL_ID": + assertEquals(shardingMethod = "ACL_ID", "ACL_ID", "Sharding Method is not ACL_ID"); + break; + case "DB_ID": + assertEquals(shardingMethod = "DB_ID", "DB_ID", "Sharding Method is not DB_ID"); + break; + case "DB_ID_RANGE": + assertEquals(shardingMethod = "DB_ID_RANGE", "DB_ID_RANGE", "Sharding Method is not DB_ID_RANGE"); + //assertEquals(shardParams.contains("shard.range="), "Unexpected shard params defined for DB_ID_RANGE"); + break; + case "DATE": + assertTrue(shardParams.contains("shard.key="), "Unexpected shard params defined for DATE"); + assertTrue(shardParams.contains("shard.grouping="), "Unexpected shard grouping defined for DATE"); + break; + case "PROPERTY": + assertTrue(shardParams.contains("shard.key="), "Unexpected shard params defined for PROPERTY"); + break; + case "EXPLICIT_ID": + assertTrue(shardParams.contains("shard.key="), "Unexpected shard params defined for EXPLICIT_ID"); + break; + default: + throw new AssertionError("Not as expected: " + shardParams.toString()); + } + } + } } } } From 572ff2831edd12a07be9c6eb35966f18fe067f6f Mon Sep 17 00:00:00 2001 From: Keerat Date: Thu, 13 Feb 2020 15:33:59 +0000 Subject: [PATCH 15/17] SEARCH-1681 changing cases in the switch statement for shard methods with no checks to be made --- .../functional/searchServices/search/ShardInfoTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 7c90ffb74..6d7fd4388 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -181,16 +181,16 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest switch (shardingMethod) { case "MOD_ACL_ID": - assertEquals(shardingMethod = "MOD_ACL_ID", "MOD_ACL_ID", "Sharding Method is not MOD_ACL_ID"); + //No additional checks required break; case "ACL_ID": - assertEquals(shardingMethod = "ACL_ID", "ACL_ID", "Sharding Method is not ACL_ID"); + //No additional checks required break; case "DB_ID": - assertEquals(shardingMethod = "DB_ID", "DB_ID", "Sharding Method is not DB_ID"); + //No additional checks required break; case "DB_ID_RANGE": - assertEquals(shardingMethod = "DB_ID_RANGE", "DB_ID_RANGE", "Sharding Method is not DB_ID_RANGE"); + //To be commented out once the shard.range is visible on the sharding screen and if wanted //assertEquals(shardParams.contains("shard.range="), "Unexpected shard params defined for DB_ID_RANGE"); break; case "DATE": From 74f1ded7c84f84e74d0ea5d5845b2aae23392072 Mon Sep 17 00:00:00 2001 From: Keerat Date: Fri, 14 Feb 2020 10:49:10 +0000 Subject: [PATCH 16/17] SEARCH-1681 adding more assertion messages and removing test group for test --- .../searchServices/search/ShardInfoTest.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index 6d7fd4388..e51f9326b 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -44,7 +44,7 @@ import org.springframework.http.HttpStatus; public class ShardInfoTest extends AbstractE2EFunctionalTest { /* The test that will be excluded when running master slave setup, excluding the ASS_MASTER test group. */ - @Test(groups = { TestGroup.ACS_60n, TestGroup.ASS_MASTER, TestGroup.EXPLICIT_SHARDING }) + @Test(groups = { TestGroup.ACS_60n, TestGroup.ASS_MASTER }) public void getShardInfoWithAdminAuthority() throws JsonProcessingException { RestShardInfoModelCollection info = restClient.authenticateUser(dataUser.getAdminUser()).withShardInfoAPI() @@ -151,7 +151,7 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest List entries = info.getEntries(); Set actualStores = entries.stream().map(shardInfoModel -> shardInfoModel.getModel().getStores()).collect(Collectors.toSet()); - assertEquals(actualStores, stores); + assertEquals(actualStores, stores, "The number of stores do not match the expected number of stores"); for (RestShardInfoModel shardInfoModel : entries) { @@ -166,13 +166,13 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest assertTrue(shardingMethods.contains(shardingMethod), "Unexpected Sharding Method Found: " + shardingMethod); List shards = model.getShards(); - assertNotNull(shards); + assertNotNull(shards, "There are no shards present"); for (RestShardModel shardInstance : shards) { List instanceList = shardInstance.getInstances(); for (RestInstanceModel instanceX : instanceList) { - assertTrue(baseUrls.contains(instanceX.getBaseUrl())); + assertTrue(baseUrls.contains(instanceX.getBaseUrl()), "The baseUrl is not present"); assertEquals(instanceX.getState(), "ACTIVE", "Shard state is not ACTIVE, shard state is: " + instanceX.getState()); assertNotNull(instanceX.getPort(), "There is not port found for the instance"); assertEquals(instanceX.getMode(), "MASTER", "Mode is not MASTER, mode found: "+ instanceX.getMode()); @@ -181,16 +181,13 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest switch (shardingMethod) { case "MOD_ACL_ID": - //No additional checks required break; case "ACL_ID": - //No additional checks required break; case "DB_ID": - //No additional checks required break; case "DB_ID_RANGE": - //To be commented out once the shard.range is visible on the sharding screen and if wanted + //https://issues.alfresco.com/jira/browse/SEARCH-2110 (once done can be umcommented) //assertEquals(shardParams.contains("shard.range="), "Unexpected shard params defined for DB_ID_RANGE"); break; case "DATE": From cbef1d6c6029b3c27dc282d6376db64a674a0b5c Mon Sep 17 00:00:00 2001 From: Keerat Date: Fri, 14 Feb 2020 12:02:52 +0000 Subject: [PATCH 17/17] SEARCH-1681 altering comments and assertion messages --- .../functional/searchServices/search/ShardInfoTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java index e51f9326b..8e6ccc940 100644 --- a/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java +++ b/e2e-test/src/test/java/org/alfresco/test/search/functional/searchServices/search/ShardInfoTest.java @@ -172,7 +172,7 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest List instanceList = shardInstance.getInstances(); for (RestInstanceModel instanceX : instanceList) { - assertTrue(baseUrls.contains(instanceX.getBaseUrl()), "The baseUrl is not present"); + assertTrue(baseUrls.contains(instanceX.getBaseUrl()), "The baseUrl is not present, baseUrl found is: " + instanceX.getBaseUrl()); assertEquals(instanceX.getState(), "ACTIVE", "Shard state is not ACTIVE, shard state is: " + instanceX.getState()); assertNotNull(instanceX.getPort(), "There is not port found for the instance"); assertEquals(instanceX.getMode(), "MASTER", "Mode is not MASTER, mode found: "+ instanceX.getMode()); @@ -187,7 +187,7 @@ public class ShardInfoTest extends AbstractE2EFunctionalTest case "DB_ID": break; case "DB_ID_RANGE": - //https://issues.alfresco.com/jira/browse/SEARCH-2110 (once done can be umcommented) + // TODO: Uncomment the following assert when fixed: https://issues.alfresco.com/jira/browse/SEARCH-2110 //assertEquals(shardParams.contains("shard.range="), "Unexpected shard params defined for DB_ID_RANGE"); break; case "DATE":