From: Kajur, Harish (vk250x) Date: Mon, 8 Apr 2019 00:38:42 +0000 (-0400) Subject: Fix logic in Schema Generator to properly X-Git-Tag: 1.4.2~4^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=10cf022c9394ba4409d601012eaf6619c0302d55;p=aai%2Faai-common.git Fix logic in Schema Generator to properly check if indexes are needed on dbaliased properties Added test to verify indexes are created. Issue-ID: AAI-2333 Change-Id: Ib80de5cce3dfc99277d7cbd6e1a51530ff588478 Signed-off-by: Kajur, Harish (vk250x) --- diff --git a/aai-core/src/main/java/org/onap/aai/dbgen/SchemaGenerator.java b/aai-core/src/main/java/org/onap/aai/dbgen/SchemaGenerator.java index e6eb1bca..c0a9e201 100644 --- a/aai-core/src/main/java/org/onap/aai/dbgen/SchemaGenerator.java +++ b/aai-core/src/main/java/org/onap/aai/dbgen/SchemaGenerator.java @@ -163,8 +163,8 @@ public class SchemaGenerator { String dmsg = " Index [" + dbPropName + "] already existed in the DB. "; LOGGER.debug(dmsg); } else { - if (obj.getIndexedProperties().contains(dbPropName)) { - if (obj.getUniqueProperties().contains(dbPropName)) { + if (obj.getIndexedProperties().contains(propName)) { + if (obj.getUniqueProperties().contains(propName)) { imsg = "Add Unique index for PropertyKey: [" + dbPropName + "]"; LOGGER.info(imsg); graphMgmt.buildIndex(dbPropName, Vertex.class).addKey(propK).unique() diff --git a/aai-core/src/test/java/org/onap/aai/dbmap/AAIGraphTest.java b/aai-core/src/test/java/org/onap/aai/dbmap/AAIGraphTest.java index 5915ce68..41a5f20b 100644 --- a/aai-core/src/test/java/org/onap/aai/dbmap/AAIGraphTest.java +++ b/aai-core/src/test/java/org/onap/aai/dbmap/AAIGraphTest.java @@ -19,20 +19,34 @@ */ package org.onap.aai.dbmap; -import org.janusgraph.core.JanusGraphFactory; import org.janusgraph.core.JanusGraph; +import org.janusgraph.core.JanusGraphFactory; +import org.janusgraph.core.schema.JanusGraphIndex; import org.janusgraph.core.schema.JanusGraphManagement; -import org.junit.*; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; import org.onap.aai.AAISetup; +import org.onap.aai.config.SpringContextAware; +import org.onap.aai.introspection.Introspector; +import org.onap.aai.introspection.Loader; +import org.onap.aai.introspection.LoaderFactory; +import org.onap.aai.introspection.ModelType; +import org.onap.aai.schema.enums.PropertyMetadata; +import org.onap.aai.setup.SchemaVersions; import org.onap.aai.util.AAIConstants; +import java.io.FileNotFoundException; +import java.util.HashSet; +import java.util.Map; +import java.util.Optional; +import java.util.Set; import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.Matchers.matchesPattern; import static org.junit.Assert.*; -import java.io.FileNotFoundException; - public class AAIGraphTest extends AAISetup{ @Before public void setup() { @@ -70,7 +84,7 @@ public class AAIGraphTest extends AAISetup{ graphMgt.rollback(); graph.close(); } - + @Test (expected=FileNotFoundException.class) public void JanusGraphOpenNameWithInvalidFilePathTest() throws Exception{ JanusGraph graph = JanusGraphFactory.open(new AAIGraphConfig.Builder("invalid").forService(SERVICE_NAME).withGraphType("graphType").buildConfiguration()); @@ -81,4 +95,38 @@ public class AAIGraphTest extends AAISetup{ graph.close(); } + @Ignore("Need to create schema specific to the test") + @Test + public void checkIndexOfAliasedIndexedProps() throws Exception { + Set aliasedIndexedProps = getAliasedIndexedProps(); + JanusGraphManagement graphMgt = AAIGraph.getInstance().getGraph().openManagement(); + for (String aliasedIndexedProp : aliasedIndexedProps) { + JanusGraphIndex index = graphMgt.getGraphIndex(aliasedIndexedProp); + assertNotNull(aliasedIndexedProp + " index exists", index); + assertEquals(aliasedIndexedProp + " index has 1 property keys", index.getFieldKeys().length, 1); + assertThat(aliasedIndexedProp + " index indexes " + aliasedIndexedProp + " property key", index.getFieldKeys()[0].name(), is(aliasedIndexedProp)); + } + graphMgt.rollback(); + } + + private Set getAliasedIndexedProps() { + Set aliasedIndexedProps = new HashSet<>(); + LoaderFactory loaderFactory = SpringContextAware.getBean(LoaderFactory.class); + SchemaVersions schemaVersions = SpringContextAware.getBean(SchemaVersions.class); + Loader loader = loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion()); + Map objs = loader.getAllObjects(); + for (Introspector obj : objs.values()) { + for (String propName : obj.getProperties()) { + Optional alias = obj.getPropertyMetadata(propName, PropertyMetadata.DB_ALIAS); + if (alias.isPresent()) { + String dbPropName = alias.get(); + if (obj.getIndexedProperties().contains(propName)) { + aliasedIndexedProps.add(dbPropName); + } + } + } + } + return aliasedIndexedProps; + } + }