diff --git a/indexer-core/pom.xml b/indexer-core/pom.xml index 919ad21103a071122b569c0ca33c2215a6ecaff6..e982bd0809d2b38751dfb5b346e893a7ce2ce183 100644 --- a/indexer-core/pom.xml +++ b/indexer-core/pom.xml @@ -16,6 +16,7 @@ <properties> <commons-beanutils.version>1.9.4</commons-beanutils.version> + <osdu.oscorecommon.version>0.6.5</osdu.oscorecommon.version> </properties> <dependencies> @@ -33,6 +34,7 @@ <dependency> <groupId>org.opengroup.osdu</groupId> <artifactId>os-core-common</artifactId> + <version>${osdu.oscorecommon.version}</version> </dependency> <!-- spring boot dependencies --> diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaServiceImpl.java index 1020c909825d7cf8372d9c935675d259104e8ed9..a63848140947c2a425c69458671733c3beaae684 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaServiceImpl.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexSchemaServiceImpl.java @@ -226,6 +226,7 @@ public class IndexSchemaServiceImpl implements IndexSchemaService { meta.put(RecordMetaAttribute.TYPE.getValue(), TypeMapper.getIndexerType(RecordMetaAttribute.TYPE)); meta.put(RecordMetaAttribute.ACL.getValue(), TypeMapper.getIndexerType(RecordMetaAttribute.ACL)); meta.put(RecordMetaAttribute.X_ACL.getValue(), TypeMapper.getIndexerType(RecordMetaAttribute.X_ACL)); + meta.put(RecordMetaAttribute.TAGS.getValue(), TypeMapper.getIndexerType(RecordMetaAttribute.TAGS)); meta.put(RecordMetaAttribute.LEGAL.getValue(), TypeMapper.getIndexerType(RecordMetaAttribute.LEGAL)); meta.put(RecordMetaAttribute.ANCESTRY.getValue(), TypeMapper.getIndexerType(RecordMetaAttribute.ANCESTRY)); meta.put(RecordMetaAttribute.INDEX_STATUS.getValue(), TypeMapper.getIndexerType(RecordMetaAttribute.INDEX_STATUS)); diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java index 5fb8cba35b0886ce1e416f5e64f8d9952853ca9e..af1e5aea27f0b3846c68ba76a0514fa2ae714c22 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java @@ -48,6 +48,7 @@ import org.opengroup.osdu.indexer.util.ElasticClientHandler; import org.opengroup.osdu.core.common.search.ElasticIndexNameResolver; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.beanutils.NestedNullException; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; import javax.inject.Inject; @@ -59,6 +60,7 @@ import java.util.logging.Level; import java.util.stream.Collectors; @Service +@Primary public class IndexerServiceImpl implements IndexerService { private static final TimeValue BULK_REQUEST_TIMEOUT = TimeValue.timeValueMinutes(1); @@ -309,6 +311,9 @@ public class IndexerServiceImpl implements IndexerService { document.setVersion(storageRecord.getVersion()); document.setAcl(storageRecord.getAcl()); document.setLegal(storageRecord.getLegal()); + if (storageRecord.getTags() != null) { + document.setTags(storageRecord.getTags()); + } RecordStatus recordStatus = this.jobStatus.getJobStatusByRecordId(storageRecord.getId()); if (recordStatus.getIndexProgress().getStatusCode() == 0) { recordStatus.getIndexProgress().setStatusCode(HttpStatus.SC_OK); @@ -463,6 +468,7 @@ public class IndexerServiceImpl implements IndexerService { indexerPayload.put(RecordMetaAttribute.TYPE.getValue(), record.getType()); indexerPayload.put(RecordMetaAttribute.VERSION.getValue(), record.getVersion()); indexerPayload.put(RecordMetaAttribute.ACL.getValue(), record.getAcl()); + indexerPayload.put(RecordMetaAttribute.TAGS.getValue(), record.getTags()); indexerPayload.put(RecordMetaAttribute.X_ACL.getValue(), Acl.flattenAcl(record.getAcl())); indexerPayload.put(RecordMetaAttribute.LEGAL.getValue(), record.getLegal()); indexerPayload.put(RecordMetaAttribute.INDEX_STATUS.getValue(), record.getIndexProgress()); diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/TypeMapper.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/TypeMapper.java index 521955ca066c450104ea8733e2ddd786414510a1..9e3150abc4006549f51f8ed4b2375ff522c4184a 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/TypeMapper.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/TypeMapper.java @@ -43,6 +43,7 @@ public class TypeMapper { metaAttributeIndexerType.put(RecordMetaAttribute.VERSION.getValue(), ElasticType.LONG.getValue()); metaAttributeIndexerType.put(RecordMetaAttribute.X_ACL.getValue(), ElasticType.KEYWORD.getValue()); metaAttributeIndexerType.put(RecordMetaAttribute.ACL.getValue(), getAclIndexerMapping()); + metaAttributeIndexerType.put(RecordMetaAttribute.TAGS.getValue(), ElasticType.FLATTENED.getValue()); metaAttributeIndexerType.put(RecordMetaAttribute.LEGAL.getValue(), getLegalIndexerMapping()); metaAttributeIndexerType.put(RecordMetaAttribute.ANCESTRY.getValue(), getAncestryIndexerMapping()); metaAttributeIndexerType.put(RecordMetaAttribute.INDEX_STATUS.getValue(), getIndexStatusMapping()); diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/impl/SchemaProviderImplTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/impl/SchemaProviderImplTest.java index 5618773fe691852f53e5eff8c5a2d95b1b105b4c..870f2b76c7178ff6430521f3b90ebf2d39c16d55 100644 --- a/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/impl/SchemaProviderImplTest.java +++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/service/impl/SchemaProviderImplTest.java @@ -77,7 +77,7 @@ public class SchemaProviderImplTest { Assert.assertEquals("{\n" + " \"kind\" : \"fake\",\n" + " \"schema\" : [ ]\n" + - "}", schema); + "}", schema.replaceAll("\r", "")); } diff --git a/pom.xml b/pom.xml index d24aad221589fd26fd867d4c1b9d8bd03f4d2c24..e3fc3a633fbaa1562563d65295ebf0172dd3c535 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ <java.version>1.8</java.version> <springfox-version>2.7.0</springfox-version> <spring-cloud.version>Greenwich.SR2</spring-cloud.version> - <os-core-common.version>0.3.19</os-core-common.version> + <os-core-common.version>0.6.5</os-core-common.version> <snakeyaml.version>1.26</snakeyaml.version> <hibernate-validator.version>6.1.5.Final</hibernate-validator.version> <jackson.version>2.11.2</jackson.version> diff --git a/provider/indexer-azure/pom.xml b/provider/indexer-azure/pom.xml index f67a7fcbb3ab51a12eafb5120b8a56ffb4e64a16..9be2778ddc36ecfa9daf5725570c360a02f2657d 100644 --- a/provider/indexer-azure/pom.xml +++ b/provider/indexer-azure/pom.xml @@ -42,7 +42,7 @@ <indexer-core.version>0.6.0-SNAPSHOT</indexer-core.version> <spring-security-jwt.version>1.1.1.RELEASE</spring-security-jwt.version> <osdu.corelibazure.version>0.0.42</osdu.corelibazure.version> - <osdu.oscorecommon.version>0.3.12</osdu.oscorecommon.version> + <osdu.oscorecommon.version>0.6.5</osdu.oscorecommon.version> <reactor-netty.version>0.9.12.RELEASE</reactor-netty.version> <java-jwt.version>3.8.1</java-jwt.version> <powermock.version>2.0.2</powermock.version> diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/config/AzureBootstrapConfig.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/config/AzureBootstrapConfig.java index 570b932a29f49f8ba849488ed55d9e2f61d440ce..7be75c3be0c99a9f076f36f422b303e948aa035a 100644 --- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/config/AzureBootstrapConfig.java +++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/config/AzureBootstrapConfig.java @@ -19,6 +19,8 @@ import org.opengroup.osdu.azure.KeyVaultFacade; import org.opengroup.osdu.core.common.entitlements.EntitlementsAPIConfig; import org.opengroup.osdu.core.common.entitlements.EntitlementsFactory; import org.opengroup.osdu.core.common.entitlements.IEntitlementsFactory; +import org.opengroup.osdu.core.common.http.json.HttpResponseBodyMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; @@ -90,12 +92,15 @@ public class AzureBootstrapConfig { return String.format(urlFormat, tenant); } + @Autowired + private HttpResponseBodyMapper httpResponseBodyMapper; + @Bean public IEntitlementsFactory entitlementsFactory() { EntitlementsAPIConfig apiConfig = EntitlementsAPIConfig.builder() .apiKey(entitlementsAPIKey) .rootUrl(entitlementsAPIEndpoint) .build(); - return new EntitlementsFactory(apiConfig); + return new EntitlementsFactory(apiConfig, httpResponseBodyMapper); } } diff --git a/provider/indexer-reference/pom.xml b/provider/indexer-reference/pom.xml index 64212d38f47c19bfb2de3205a4b1fbf5617d84d5..92013da703d4dd0dba9b70f22d87437055328002 100644 --- a/provider/indexer-reference/pom.xml +++ b/provider/indexer-reference/pom.xml @@ -48,7 +48,7 @@ <dependency> <groupId>org.opengroup.osdu</groupId> <artifactId>os-core-common</artifactId> - <version>0.0.18</version> + <version>0.6.5</version> </dependency> <dependency> diff --git a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/di/EntitlementsClientFactory.java b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/di/EntitlementsClientFactory.java index 45131176cd1ff35eb2dc411b0073b245c0d3b8e8..2872c5c53405e12550c901064da117764208dc4f 100644 --- a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/di/EntitlementsClientFactory.java +++ b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/di/EntitlementsClientFactory.java @@ -20,6 +20,7 @@ package org.opengroup.osdu.indexer.di; import org.opengroup.osdu.core.common.entitlements.EntitlementsAPIConfig; import org.opengroup.osdu.core.common.entitlements.EntitlementsFactory; import org.opengroup.osdu.core.common.entitlements.IEntitlementsFactory; +import org.opengroup.osdu.core.common.http.json.HttpResponseBodyMapper; import org.opengroup.osdu.indexer.config.EntitlementsConfigProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.AbstractFactoryBean; @@ -34,12 +35,15 @@ public class EntitlementsClientFactory extends AbstractFactoryBean<IEntitlements private EntitlementsConfigProperties entitlementsConfigProperties; + @Autowired + private HttpResponseBodyMapper mapper; + @Override protected IEntitlementsFactory createInstance() throws Exception { return new EntitlementsFactory(EntitlementsAPIConfig .builder() .rootUrl(entitlementsConfigProperties.getAuthorizeApi()) - .build()); + .build(), mapper); } @Override diff --git a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java index 558e30bcc6d7c6653f51f1d023a56b6f015a5c18..1be2ba81868c6f3ed56cd4b56a25edfdbd576f99 100644 --- a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java +++ b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java @@ -68,7 +68,6 @@ import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; @Service -@Primary public class IndexerServiceImpl implements IndexerService { private static final TimeValue BULK_REQUEST_TIMEOUT = TimeValue.timeValueMinutes(1); diff --git a/provider/indexer-reference/src/test/java/org/opengroup/osdu/indexer/middleware/IndexFilterTest.java b/provider/indexer-reference/src/test/java/org/opengroup/osdu/indexer/middleware/IndexFilterTest.java index 9ec5fb7a30044f7f105c9a97229cb37322f218b9..bfc4f3a3330570ea73c59d2721954dd75aded7a5 100644 --- a/provider/indexer-reference/src/test/java/org/opengroup/osdu/indexer/middleware/IndexFilterTest.java +++ b/provider/indexer-reference/src/test/java/org/opengroup/osdu/indexer/middleware/IndexFilterTest.java @@ -51,30 +51,17 @@ public class IndexFilterTest { indexFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); - Mockito.verify(httpServletResponse) - .addHeader("Access-Control-Allow-Origin", Collections.singletonList("*").toString()); - Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Headers", Collections - .singletonList( - "origin, content-type, accept, authorization, data-partition-id, correlation-id, appkey") - .toString()); - Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Methods", - Collections.singletonList("GET, POST, PUT, DELETE, OPTIONS, HEAD").toString()); - Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Credentials", - Collections.singletonList("true").toString()); - Mockito.verify(httpServletResponse) - .addHeader("X-Frame-Options", Collections.singletonList("DENY").toString()); - Mockito.verify(httpServletResponse) - .addHeader("X-XSS-Protection", Collections.singletonList("1; mode=block").toString()); - Mockito.verify(httpServletResponse) - .addHeader("X-Content-Type-Options", Collections.singletonList("nosniff").toString()); - Mockito.verify(httpServletResponse).addHeader("Cache-Control", - Collections.singletonList("no-cache, no-store, must-revalidate").toString()); - Mockito.verify(httpServletResponse).addHeader("Content-Security-Policy", - Collections.singletonList("default-src 'self'").toString()); - Mockito.verify(httpServletResponse).addHeader("Strict-Transport-Security", - Collections.singletonList("max-age=31536000; includeSubDomains").toString()); - Mockito.verify(httpServletResponse) - .addHeader("Expires", Collections.singletonList("0").toString()); + Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Origin", Collections.singletonList("*").toString()); + Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Headers", Collections.singletonList("origin, content-type, accept, authorization, data-partition-id, correlation-id, appkey").toString()); + Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Methods", Collections.singletonList("GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH").toString()); + Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Credentials", Collections.singletonList("true").toString()); + Mockito.verify(httpServletResponse).addHeader("X-Frame-Options", Collections.singletonList("DENY").toString()); + Mockito.verify(httpServletResponse).addHeader("X-XSS-Protection", Collections.singletonList("1; mode=block").toString()); + Mockito.verify(httpServletResponse).addHeader("X-Content-Type-Options", Collections.singletonList("nosniff").toString()); + Mockito.verify(httpServletResponse).addHeader("Cache-Control", Collections.singletonList("no-cache, no-store, must-revalidate").toString()); + Mockito.verify(httpServletResponse).addHeader("Content-Security-Policy", Collections.singletonList("default-src 'self'").toString()); + Mockito.verify(httpServletResponse).addHeader("Strict-Transport-Security", Collections.singletonList("max-age=31536000; includeSubDomains").toString()); + Mockito.verify(httpServletResponse).addHeader("Expires", Collections.singletonList("0").toString()); Mockito.verify(httpServletResponse).addHeader("correlation-id", "correlation-id-value"); Mockito.verify(filterChain).doFilter(httpServletRequest, httpServletResponse); } diff --git a/testing/indexer-test-aws/pom.xml b/testing/indexer-test-aws/pom.xml index 9335cf4e8d5323f6ad973d3114af68a272a27220..8bcbc9c60ebf6dbc60127d0f9ff3a23aa0861b39 100644 --- a/testing/indexer-test-aws/pom.xml +++ b/testing/indexer-test-aws/pom.xml @@ -42,7 +42,7 @@ <dependency> <groupId>org.opengroup.osdu.indexer</groupId> <artifactId>indexer-test-core</artifactId> - <version>0.6.0-SNAPSHOT</version> + <version>0.6.1-SNAPSHOT</version> </dependency> <!-- AWS specific packages --> diff --git a/testing/indexer-test-azure/pom.xml b/testing/indexer-test-azure/pom.xml index 2a6703142879b538f3f01319953cb9aa18833633..ca33be462b91e0915c092ac963730b5ff2780c44 100644 --- a/testing/indexer-test-azure/pom.xml +++ b/testing/indexer-test-azure/pom.xml @@ -45,14 +45,32 @@ <dependency> <groupId>org.opengroup.osdu.indexer</groupId> <artifactId>indexer-test-core</artifactId> - <version>0.6.0-SNAPSHOT</version> + <version>0.6.1-SNAPSHOT</version> </dependency> <!-- Azure dependencies --> + <!--Added dependency for utilizing azure service principle class--> <dependency> <groupId>org.opengroup.osdu</groupId> <artifactId>core-lib-azure</artifactId> <version>0.0.33</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>com.azure</groupId> + <artifactId>azure-core-http-netty</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-all</artifactId> + <version>4.1.50.Final</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-transport</artifactId> + <version>4.1.15.Final</version> </dependency> <dependency> @@ -166,28 +184,5 @@ <version>3.0.0</version> <scope>test</scope> </dependency> -<!--Added dependency for utilizing azure service principle class--> - <dependency> - <groupId>org.opengroup.osdu</groupId> - <artifactId>core-lib-azure</artifactId> - <version>0.0.33</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>com.azure</groupId> - <artifactId>azure-core-http-netty</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-all</artifactId> - <version>4.1.50.Final</version> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-transport</artifactId> - <version>4.1.15.Final</version> - </dependency> </dependencies> </project> \ No newline at end of file diff --git a/testing/indexer-test-azure/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java b/testing/indexer-test-azure/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java index 5cc775b83d14dabb626710768d74ac837783822e..8721cee890fb340474355453f55b71b266b74215 100644 --- a/testing/indexer-test-azure/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java +++ b/testing/indexer-test-azure/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java @@ -64,4 +64,8 @@ public class Steps extends SchemaServiceRecordSteps { super.iShouldGetTheNumberDocumentsForTheIndexInTheElasticSearchWithOutSkippedAttribute(expectedCount, index, skippedAttributes); } + @Then("^I should be able to search (\\d+) record with index \"([^\"]*)\" by tag \"([^\"]*)\" and value \"([^\"]*)\"$") + public void iShouldBeAbleToSearchRecordByTagKeyAndTagValue(int expectedNumber, String index, String tagKey, String tagValue) throws Throwable { + super.iShouldBeAbleToSearchRecordByTagKeyAndTagValue(index, tagKey, tagValue, expectedNumber); + } } \ No newline at end of file diff --git a/testing/indexer-test-core/pom.xml b/testing/indexer-test-core/pom.xml index 37659e5ba08a4f640dc0d678e5e453128833ba1c..952d7852a09876684b17d7041474ff20277195e1 100644 --- a/testing/indexer-test-core/pom.xml +++ b/testing/indexer-test-core/pom.xml @@ -11,7 +11,7 @@ <groupId>org.opengroup.osdu.indexer</groupId> <artifactId>indexer-test-core</artifactId> - <version>0.6.0-SNAPSHOT</version> + <version>0.6.1-SNAPSHOT</version> <properties> <maven.compiler.target>1.8</maven.compiler.target> diff --git a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/RecordSteps.java b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/RecordSteps.java index c6ebab631a5e46f0d47ae2814cd36e1d412d4b7c..cb3dc70a9da5a688f90033627d507e9af631761a 100644 --- a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/RecordSteps.java +++ b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/common/RecordSteps.java @@ -22,6 +22,7 @@ import java.lang.reflect.Type; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.logging.Level; import static org.junit.Assert.*; @@ -140,6 +141,13 @@ public class RecordSteps extends TestsBase { assertEquals(expectedCount, documentCountByQuery); } + public void iShouldBeAbleToSearchRecordByTagKeyAndTagValue(String index, String tagKey, String tagValue, int expectedNumber) throws Throwable { + TimeUnit.SECONDS.sleep(40); + index = generateActualName(index, timeStamp); + long actualNumberOfRecords = elasticUtils.fetchRecordsByTags(index, tagKey, tagValue); + assertEquals(expectedNumber, actualNumberOfRecords); + } + private long createIndex(String index) throws InterruptedException, IOException { long numOfIndexedDocuments = 0; int iterator; diff --git a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/util/ElasticUtils.java b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/util/ElasticUtils.java index a63b339ce9421eadddd7d5f5515d33833aef5ff3..df99970ee7ebf1ba09fb3c9ba7b7fdd97fb3bd25 100644 --- a/testing/indexer-test-core/src/main/java/org/opengroup/osdu/util/ElasticUtils.java +++ b/testing/indexer-test-core/src/main/java/org/opengroup/osdu/util/ElasticUtils.java @@ -62,8 +62,12 @@ import java.util.ArrayList; import java.util.Base64; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.logging.Level; +import static org.elasticsearch.index.query.QueryBuilders.boolQuery; +import static org.elasticsearch.index.query.QueryBuilders.termsQuery; + /** * All util methods to use elastic apis for tests @@ -217,8 +221,25 @@ public class ElasticUtils { } } - public long fetchRecordsByExistQuery(String index, String attributeName) throws IOException { + public long fetchRecordsByTags(String index, String tagKey, String tagValue) throws IOException { + try { + try (RestHighLevelClient client = this.createClient(username, password, host)) { + SearchRequest request = new SearchRequest(index); + SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); + sourceBuilder.query(boolQuery().must(termsQuery(String.format("tags.%s", tagKey), tagValue))); + request.source(sourceBuilder); + SearchResponse searchResponse = client.search(request, RequestOptions.DEFAULT); + return searchResponse.getHits().getTotalHits().value; + } + } catch (ElasticsearchStatusException e) { + log.log(Level.INFO, String.format("Elastic search threw exception: %s", e.getMessage())); + return -1; + } + } + + public long fetchRecordsByExistQuery(String index, String attributeName) throws Exception { try { + TimeUnit.SECONDS.sleep(40); try (RestHighLevelClient client = this.createClient(username, password, host)) { SearchRequest searchRequest = new SearchRequest(index); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); diff --git a/testing/indexer-test-core/src/main/resources/features/indexrecord/indexRecord-schema-service.feature b/testing/indexer-test-core/src/main/resources/features/indexrecord/indexRecord-schema-service.feature index 9a340f29a585b112ce8a12481f840a9ac2ce8d6a..11d3ec6443448db6bd6723bed233212b91b89061 100644 --- a/testing/indexer-test-core/src/main/resources/features/indexrecord/indexRecord-schema-service.feature +++ b/testing/indexer-test-core/src/main/resources/features/indexrecord/indexRecord-schema-service.feature @@ -26,3 +26,11 @@ Feature: Indexing of the documents | kind | recordFile | number | index | skippedAttribute | acl | | "tenant1:indexer-int-test:sample-schema-2:1.0.4" | "index_records_2" | 4 | "tenant1-indexer-int-test-sample-schema-2-1.0.4" | "data.Location" | "data.default.viewers@tenant1" | | "tenant1:indexer-int-test:sample-schema-3:1.0.4" | "index_records_3" | 7 | "tenant1-indexer-int-test-sample-schema-3-1.0.4" | "data.GeoShape" | "data.default.viewers@tenant1" | + + Scenario Outline: Ingest the record and Index in the Elastic Search with tags + When I ingest records with the <recordFile> with <acl> for a given <kind> + Then I should be able to search <number> record with index <index> by tag <tagKey> and value <tagValue> + + Examples: + | kind | recordFile | index | acl | tagKey | tagValue | number | + | "tenant1:indexer-int-test:sample-schema-1:1.0.4" | "index_records_1" | "tenant1-indexer-int-test-sample-schema-1-1.0.4" | "data.default.viewers@tenant1" | "testtag" | "testvalue" | 5 | diff --git a/testing/indexer-test-core/src/main/resources/testData/index_records_1.json b/testing/indexer-test-core/src/main/resources/testData/index_records_1.json index dc83212c545f7478280566be828726f4b0558234..80ac1c787f7cec412a9bd8d9a49985e448aac997 100644 --- a/testing/indexer-test-core/src/main/resources/testData/index_records_1.json +++ b/testing/indexer-test-core/src/main/resources/testData/index_records_1.json @@ -1,6 +1,9 @@ [ { "id": "tenant1:<kindSubType>:testIngest2<timestamp>", + "tags": { + "testtag": "testvalue" + }, "data": { "Field": "OSDU OFFICE - 2", "Location": { @@ -24,6 +27,9 @@ }, { "id": "tenant1:<kindSubType>:testIngest3<timestamp>", + "tags": { + "testtag": "testvalue" + }, "data": { "Field": "OSDU OFFICE - 2", "Location": { @@ -47,6 +53,9 @@ }, { "id": "tenant1:<kindSubType>:testIngest4<timestamp>", + "tags": { + "testtag": "testvalue" + }, "data": { "Field": "OSDU OFFICE - 2", "Location": { @@ -69,6 +78,9 @@ }, { "id": "tenant1:<kindSubType>:testIngest5<timestamp>", + "tags": { + "testtag": "testvalue" + }, "data": { "Field": "OSDU OFFICE - 2", "Location": { @@ -91,6 +103,9 @@ }, { "id": "tenant1:<kindSubType>:testIngest6<timestamp>", + "tags": { + "testtag": "testvalue" + }, "data": { "Field": "OSDU OFFICE - 2", "Location": { diff --git a/testing/indexer-test-gcp/pom.xml b/testing/indexer-test-gcp/pom.xml index 74f56c7ace3750aa7165602b6e19c394229ed3a3..8c0c97e0735515c96320b3f5e0049cad728c8564 100644 --- a/testing/indexer-test-gcp/pom.xml +++ b/testing/indexer-test-gcp/pom.xml @@ -37,7 +37,7 @@ <dependency> <groupId>org.opengroup.osdu.indexer</groupId> <artifactId>indexer-test-core</artifactId> - <version>0.6.0-SNAPSHOT</version> + <version>0.6.1-SNAPSHOT</version> </dependency> <!-- Cucumber --> diff --git a/testing/indexer-test-ibm/pom.xml b/testing/indexer-test-ibm/pom.xml index f85b8b8ad1a2d3216ac246e5fe580596d3cf6e35..f515de2aea26efda6e0fedd394d478a17643ba30 100644 --- a/testing/indexer-test-ibm/pom.xml +++ b/testing/indexer-test-ibm/pom.xml @@ -38,7 +38,7 @@ <dependency> <groupId>org.opengroup.osdu.indexer</groupId> <artifactId>indexer-test-core</artifactId> - <version>0.6.0-SNAPSHOT</version> + <version>0.6.1-SNAPSHOT</version> </dependency> <dependency>