summaryrefslogtreecommitdiffstats
path: root/aai-traversal
diff options
context:
space:
mode:
authorur326r <ur326r@att.com>2017-08-14 14:49:45 -0400
committerur326r <ur326r@att.com>2017-08-14 15:21:37 -0400
commitff7ec85b8b2870856387951899c680a11860f2a4 (patch)
tree99522995785d9dab94771e481a0a6f0521a1e4aa /aai-traversal
parent619ac4c234f186e1aea9add8f2f9e119b8ec4266 (diff)
[AAI-168 Amsterdam] add stored queries
Change-Id: I3ab0459c97ebbab98b0a6dc4c9d3cb701aac548f Signed-off-by: ur326r <ur326r@att.com>
Diffstat (limited to 'aai-traversal')
-rw-r--r--aai-traversal/bundleconfig-local/etc/query/stored-queries.properties2
-rw-r--r--aai-traversal/src/main/java/org/openecomp/aai/rest/QueryConsumer.java18
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/rest/search/NfTypefromCloudRegionQueryTest.java1
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/rest/search/SimpleFormatTest.java126
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/rest/search/TopologyFromCloudRegionIdAndServiceIdTest.java4
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/rest/search/TopologyFromSubscriberNameAndServiceTypeTest.java4
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/rest/search/VserverLogicallinkFromPServerTest.java20
7 files changed, 167 insertions, 8 deletions
diff --git a/aai-traversal/bundleconfig-local/etc/query/stored-queries.properties b/aai-traversal/bundleconfig-local/etc/query/stored-queries.properties
index bc23513..d04f11f 100644
--- a/aai-traversal/bundleconfig-local/etc/query/stored-queries.properties
+++ b/aai-traversal/bundleconfig-local/etc/query/stored-queries.properties
@@ -234,4 +234,4 @@ spaas-topology-fromServiceInstance=builder.createEdgeTraversal(EdgeType.COUSIN,
builder.newInstance().createEdgeTraversal(EdgeType.TREE, 'pserver', 'p-interface')\
.createEdgeTraversal(EdgeType.COUSIN, 'p-interface', 'physical-link').store('x')\
)\
- ).cap('x').unfold().dedup()
+ ).cap('x').unfold().dedup() \ No newline at end of file
diff --git a/aai-traversal/src/main/java/org/openecomp/aai/rest/QueryConsumer.java b/aai-traversal/src/main/java/org/openecomp/aai/rest/QueryConsumer.java
index a5f476a..2264f24 100644
--- a/aai-traversal/src/main/java/org/openecomp/aai/rest/QueryConsumer.java
+++ b/aai-traversal/src/main/java/org/openecomp/aai/rest/QueryConsumer.java
@@ -38,6 +38,7 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriInfo;
@@ -87,7 +88,7 @@ public class QueryConsumer extends RESTAPI {
Response response = null;
TransactionalGraphEngine dbEngine = null;
try {
-
+ this.checkQueryParams(info.getQueryParameters());
Format format = Format.valueOf(queryFormat);
if (queryProcessor != null) {
processorType = QueryProcessorType.valueOf(queryProcessor);
@@ -156,7 +157,7 @@ public class QueryConsumer extends RESTAPI {
DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, sourceOfTruth);
FormatFactory ff = new FormatFactory(httpEntry.getLoader(), serializer);
- Formatter formater = ff.get(format);
+ Formatter formater = ff.get(format, info.getQueryParameters());
result = formater.output(vertices).toString();
@@ -178,5 +179,18 @@ public class QueryConsumer extends RESTAPI {
return response;
}
+
+ public void checkQueryParams(MultivaluedMap<String, String> params) throws AAIException {
+
+ if (params.containsKey("depth") && params.getFirst("depth").matches("\\d+")) {
+ String depth = params.getFirst("depth");
+ Integer i = Integer.parseInt(depth);
+ if (i > 1) {
+ throw new AAIException("AAI_3303");
+ }
+ }
+
+
+ }
}
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/NfTypefromCloudRegionQueryTest.java b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/NfTypefromCloudRegionQueryTest.java
index 1cf382b..9451a86 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/NfTypefromCloudRegionQueryTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/NfTypefromCloudRegionQueryTest.java
@@ -27,7 +27,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
-
import org.openecomp.aai.exceptions.AAIException;
import org.openecomp.aai.serialization.db.exceptions.NoEdgeRuleFoundException;
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/SimpleFormatTest.java b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/SimpleFormatTest.java
new file mode 100644
index 0000000..eedcd69
--- /dev/null
+++ b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/SimpleFormatTest.java
@@ -0,0 +1,126 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * org.openecomp.aai
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.aai.rest.search;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.openecomp.aai.dbmap.DBConnectionType;
+import org.openecomp.aai.exceptions.AAIException;
+import org.openecomp.aai.introspection.Loader;
+import org.openecomp.aai.introspection.LoaderFactory;
+import org.openecomp.aai.introspection.ModelType;
+import org.openecomp.aai.introspection.Version;
+import org.openecomp.aai.serialization.db.DBSerializer;
+import org.openecomp.aai.serialization.db.EdgeRules;
+import org.openecomp.aai.serialization.db.exceptions.NoEdgeRuleFoundException;
+import org.openecomp.aai.serialization.engines.QueryStyle;
+import org.openecomp.aai.serialization.engines.TitanDBEngine;
+import org.openecomp.aai.serialization.engines.TransactionalGraphEngine;
+import org.openecomp.aai.serialization.queryformats.RawFormat;
+import org.openecomp.aai.serialization.queryformats.exceptions.AAIFormatVertexException;
+import org.openecomp.aai.serialization.queryformats.utils.UrlBuilder;
+
+import com.google.gson.JsonObject;
+
+public class SimpleFormatTest {
+
+ protected Graph graph;
+ private TransactionalGraphEngine dbEngine;
+
+ protected final List<Vertex> expectedResult = new ArrayList<>();
+ protected final EdgeRules rules = EdgeRules.getInstance();
+ protected Loader loader;
+ private DBSerializer serializer;
+
+ @Mock
+ private UrlBuilder urlBuilder;
+ private RawFormat _simpleFormat;
+
+ Vertex vfmodule = null;
+
+ public SimpleFormatTest() throws AAIException, NoEdgeRuleFoundException {
+ setUp();
+ }
+
+ public void setUp() throws AAIException, NoEdgeRuleFoundException {
+ System.setProperty("AJSC_HOME", ".");
+ System.setProperty("BUNDLECONFIG_DIR", "bundleconfig-local");
+ MockitoAnnotations.initMocks(this);
+ graph = TinkerGraph.open();
+ loader = LoaderFactory.createLoaderForVersion(ModelType.MOXY, Version.v10);
+ vfmodule = graph.addVertex(T.label, "vf-module",
+ T.id, "5",
+ "aai-node-type", "vf-module",
+ "vf-module-id", "vf-module-id-val-68205",
+ "vf-module-name", "example-vf-module-name-val-68205",
+ "heat-stack-id", "example-heat-stack-id-val-68205",
+ "orchestration-status", "example-orchestration-status-val-68205",
+ "is-base-vf-module", "true",
+ "resource-version", "1498166571906",
+ "model-invariant-id", "fe8aac07-ce6c-4f9f-aa0d-b561c77da9e8",
+ "model-invariant-id-local", "fe8aac07-ce6c-4f9f-aa0d-b561c77da9e8",
+ "model-version-id", "0d23052d-8ffe-433e-a25d-da5da027bb7c",
+ "model-version-id-local", "0d23052d-8ffe-433e-a25d-da5da027bb7c",
+ "widget-model-id", "example-widget-model-id-val-68205",
+ "widget-model-version", "example-widget--model-version-val-68205",
+ "contrail-service-instance-fqdn", "example-contrail-service-instance-fqdn-val-68205");
+
+ final ModelType factoryType = ModelType.MOXY;
+ Loader loader = LoaderFactory.createLoaderForVersion(factoryType, Version.v10);
+ dbEngine = spy(new TitanDBEngine(
+ QueryStyle.TRAVERSAL,
+ DBConnectionType.CACHED,
+ loader));
+
+ when(dbEngine.tx()).thenReturn(graph);
+ TransactionalGraphEngine.Admin spyAdmin = spy(dbEngine.asAdmin());
+ when(spyAdmin.getTraversalSource()).thenReturn(graph.traversal());
+ when(dbEngine.asAdmin()).thenReturn(spyAdmin);
+ serializer = new DBSerializer(Version.v10, dbEngine, factoryType, "Junit");
+ _simpleFormat = new RawFormat.Builder(loader, serializer, urlBuilder).modelDriven().build();
+ dbEngine.startTransaction();
+ }
+
+ @Test
+ public void run() throws AAIFormatVertexException {
+ assertNotNull(dbEngine.tx());
+ System.out.println(dbEngine.tx());
+ assertNotNull(graph.traversal());
+ JsonObject json = _simpleFormat.createPropertiesObject(vfmodule);
+ json.entrySet().stream().forEach((System.out::println));
+ assertTrue(json.has("model-invariant-id"));
+
+ }
+
+}
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/TopologyFromCloudRegionIdAndServiceIdTest.java b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/TopologyFromCloudRegionIdAndServiceIdTest.java
index 5f560c6..d53f51d 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/TopologyFromCloudRegionIdAndServiceIdTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/TopologyFromCloudRegionIdAndServiceIdTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/TopologyFromSubscriberNameAndServiceTypeTest.java b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/TopologyFromSubscriberNameAndServiceTypeTest.java
index e0ac233..b200e9b 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/TopologyFromSubscriberNameAndServiceTypeTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/TopologyFromSubscriberNameAndServiceTypeTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/VserverLogicallinkFromPServerTest.java b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/VserverLogicallinkFromPServerTest.java
index 510be9b..5d022ff 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/VserverLogicallinkFromPServerTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/VserverLogicallinkFromPServerTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * org.openecomp.aai
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
package org.openecomp.aai.rest.search;
import static org.junit.Assert.*;