aboutsummaryrefslogtreecommitdiffstats
path: root/aai-traversal/src/test/java/org/onap/aai/rest/DslConsumerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'aai-traversal/src/test/java/org/onap/aai/rest/DslConsumerTest.java')
-rw-r--r--aai-traversal/src/test/java/org/onap/aai/rest/DslConsumerTest.java551
1 files changed, 545 insertions, 6 deletions
diff --git a/aai-traversal/src/test/java/org/onap/aai/rest/DslConsumerTest.java b/aai-traversal/src/test/java/org/onap/aai/rest/DslConsumerTest.java
index 7918eb3..311de49 100644
--- a/aai-traversal/src/test/java/org/onap/aai/rest/DslConsumerTest.java
+++ b/aai-traversal/src/test/java/org/onap/aai/rest/DslConsumerTest.java
@@ -20,13 +20,14 @@
package org.onap.aai.rest;
import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.janusgraph.core.JanusGraphTransaction;
+import org.junit.Assert;
import org.junit.Test;
-import org.junit.Ignore;
-import org.onap.aai.HttpTestUtil;
import org.onap.aai.PayloadUtil;
import org.onap.aai.dbmap.AAIGraph;
import org.onap.aai.util.AAIConfig;
@@ -52,9 +53,116 @@ public class DslConsumerTest extends AbstractSpringRestTest {
boolean success = true;
try {
GraphTraversalSource g = transaction.traversal();
- g.addV().property("aai-node-type", "pserver").property("hostname", "test-pserver-dsl")
+ Vertex p1 = g.addV().property("aai-node-type", "pserver").property("hostname", "test-pserver-dsl")
.property("in-maint", false).property("source-of-truth", "JUNIT")
.property("aai-uri", "/cloud-infrastructure/pservers/pserver/test-pserver-dsl").next();
+ Vertex p2 = g.addV().property("aai-node-type", "pserver").property("hostname", "test-pserver-dsl-02")
+ .property("in-maint", false).property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/cloud-infrastructure/pservers/pserver/test-pserver-dsl-02").next();
+ Vertex p3 = g.addV().property("aai-node-type", "pserver").property("hostname", "test-pserver-dsl-03")
+ .property("in-maint", false).property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/cloud-infrastructure/pservers/pserver/test-pserver-dsl-03").next();
+ Vertex p4 = g.addV().property("aai-node-type", "pserver").property("hostname", "test-pserver-dsl-04")
+ .property("in-maint", false).property("source-of-truth", "JUNIT")
+ .property("number-of-cpus", 364).property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/cloud-infrastructure/pservers/pserver/test-pserver-dsl-04").next();
+ Vertex c1 = g.addV().property("aai-node-type", "complex").property("physical-location-id", "test-complex-dsl")
+ .property("state", "NJ")
+ .property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/cloud-infrastructure/complexes/complex/test-complex-dsl").next();
+ Vertex cr1 = g.addV().property("aai-node-type", "cloud-region")
+ .property("cloud-owner", "test-cloud-owner-01")
+ .property("cloud-region-id", "test-cloud-region-id-01")
+ .property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/cloud-infrastructure/cloud-regions/cloud-region/test-cloud-owner-01/test-cloud-region-id-01").next();
+ Vertex pnf01 = g.addV().property("aai-node-type", "pnf")
+ .property("pnf-name", "test-pnf-name-01")
+ .property("in-maint", false)
+ .property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/network/pnfs/pnf/test-pnf-name-01").next();
+ Vertex vserver2 = g.addV().property("aai-node-type", "vserver")
+ .property("vserver-id", "test-vserver-id-2")
+ .property("vserver-name", "test-vserver-name-2")
+ .property("in-maint", "false")
+ .property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/vservers/vserver/test-vserver-id-2").next();
+ Vertex tenant2 = g.addV().property("aai-node-type", "tenant")
+ .property("tenant-id", "test-tenant-id-2")
+ .property("tenant-name", "test-tenant-name-2")
+ .property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/tenants/tenant/test-tenant-id-2").next();
+ Vertex linterface2 = g.addV().property("aai-node-type", "l-interface")
+ .property("interface-name", "test-interface-name-02")
+ .property("priority", "123")
+ .property("is-port-mirrored", "true")
+ .property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/l-interfaces/l-interface/test-interface-name-02").next();
+ Vertex oamNetwork2 = g.addV().property("aai-node-type", "oam-network")
+ .property("network-uuid", "test-network-uuid-02")
+ .property("network-name", "test-network-name-02")
+ .property("cvlan-tag", "456")
+ .property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/oam-networks/oam-network/test-network-uuid-02").next();
+ Vertex cr2 = g.addV().property("aai-node-type", "cloud-region")
+ .property("cloud-owner", "test-cloud-owner-02")
+ .property("cloud-region-id", "test-cloud-region-id-02")
+ .property("source-of-truth", "JUNIT")
+ .property("aai-uri", "/cloud-infrastructure/cloud-regions/cloud-region/test-cloud-owner-02/test-cloud-region-id-02").next();
+
+ // For adding edges, check the dbedgetules and the property from and to node
+ // along with the other properties to populate information
+ p1.addEdge("org.onap.relationships.inventory.LocatedIn", c1,
+ "private", false,
+ "prevent-delete", "NONE",
+ "delete-other-v", "NONE",
+ "contains-other-v", "NONE",
+ "default", true);
+ p1.addEdge("org.onap.relationships.inventory.LocatedIn", cr1,
+ "private", false,
+ "prevent-delete", "NONE",
+ "delete-other-v", "NONE",
+ "contains-other-v", "NONE",
+ "default", true);
+ p3.addEdge("org.onap.relationships.inventory.LocatedIn", c1,
+ "private", false,
+ "prevent-delete", "NONE",
+ "delete-other-v", "NONE",
+ "contains-other-v", "NONE",
+ "default", true);
+ p4.addEdge("org.onap.relationships.inventory.LocatedIn", c1,
+ "private", false,
+ "prevent-delete", "NONE",
+ "delete-other-v", "NONE",
+ "contains-other-v", "NONE",
+ "default", true);
+ tenant2.addEdge("org.onap.relationships.inventory.BelongsTo", cr2,
+ "private", false,
+ "prevent-delete", "NONE",
+ "delete-other-v", "NONE",
+ "contains-other-v", "NONE",
+ "default", true);
+ vserver2.addEdge("org.onap.relationships.inventory.BelongsTo", tenant2,
+ "private", false,
+ "prevent-delete", "NONE",
+ "delete-other-v", "NONE",
+ "contains-other-v", "NONE",
+ "default", true);
+ linterface2.addEdge("tosca.relationships.network.BindsTo", vserver2,
+ "direction", "OUT",
+ "multiplicity", "MANY2ONE",
+ "contains-other-v", "!OUT",
+ "delete-other-v", "!OUT",
+ "prevent-delete", "NONE",
+ "default", true);
+ oamNetwork2.addEdge("org.onap.relationships.inventory.BelongsTo", cr2,
+ "direction", "OUT",
+ "multiplicity", "MANY2ONE",
+ "contains-other-v", "!OUT",
+ "delete-other-v", "NONE",
+ "prevent-delete", "!OUT",
+ "default", true);
+
+
} catch (Exception ex) {
success = false;
} finally {
@@ -209,7 +317,6 @@ public class DslConsumerTest extends AbstractSpringRestTest {
responseEntity.getStatusCode());
}
-
@Test
public void testDslQueryProcessingV2_WithSimpleFormat_WithAsTreeQueryParameter() throws Exception {
Map<String, String> dslQueryMap = new HashMap<>();
@@ -286,7 +393,6 @@ public class DslConsumerTest extends AbstractSpringRestTest {
headers.remove("X-DslApiVersion");
}
- @Ignore
@Test
public void testDslQueryProcessingV2_WithResourceFormat_WithoutAsTreeQueryParameter() throws Exception {
Map<String, String> dslQueryMap = new HashMap<>();
@@ -339,7 +445,6 @@ public class DslConsumerTest extends AbstractSpringRestTest {
headers.remove("X-DslApiVersion");
}
- @Ignore
@Test
public void testDslQueryProcessingV2_WithResourceAndUrlFormat_WithoutAsTreeQueryParameter() throws Exception {
Map<String, String> dslQueryMap = new HashMap<>();
@@ -366,4 +471,438 @@ public class DslConsumerTest extends AbstractSpringRestTest {
headers.remove("X-DslApiVersion");
}
+ @Test
+ public void testDslQueryTestAggregateFormatLastNodeNotSelectedAndNotReturned() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ dslQueryMap.put("dsl-query", "pserver{'hostname'}('hostname','test-pserver-dsl') > complex");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ String endpoint = "/aai/v16/dsl?format=aggregate";
+
+ // Add header with V2 to use the {} feature as a part of dsl query
+ headers.add("X-DslApiVersion","V2");
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ // Extract the properties array from the response and compare in assert statements
+ JsonParser jsonParser = new JsonParser();
+ JsonObject results = jsonParser.parse(responseString).getAsJsonObject();
+ JsonArray resultsArray = results.get("results").getAsJsonArray();
+ JsonObject resultsValue = resultsArray.get(0).getAsJsonObject();
+ assertNull(resultsValue.get("/aai/v16/cloud-infrastructure/complexes/complex/test-complex-dsl")); //assert complex is not returned since it is not selected
+ JsonObject properties = resultsValue.get("/aai/v16/cloud-infrastructure/pservers/pserver/test-pserver-dsl").getAsJsonObject().get("properties").getAsJsonObject();
+ assertEquals(1, properties.size());
+ assertThat(properties.get("hostname").toString(), is("\"test-pserver-dsl\"")); //assert only hostname is selected
+ assertNull(properties.get("in-maint")); //assert that in-maint is not returned in the properties list
+ headers.remove("X-DslApiVersion");
+ }
+
+ @Test
+ public void testDslQueryTestAggregateFormatLastNodeSelectedAndReturned() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ dslQueryMap.put("dsl-query", "pserver{'hostname'}('hostname','test-pserver-dsl') > complex*");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ String endpoint = "/aai/v16/dsl?format=aggregate";
+
+ // Add header with V2 to use the {} feature as a part of dsl query
+ headers.add("X-DslApiVersion","V2");
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ // Extract the properties array from the response and compare in assert statements
+ JsonParser jsonParser = new JsonParser();
+ JsonObject results = jsonParser.parse(responseString).getAsJsonObject();
+ JsonArray resultsArray = results.get("results").getAsJsonArray();
+ JsonArray resultsValue = resultsArray.get(0).getAsJsonArray();
+ assertNotNull(resultsValue.get(1).getAsJsonObject().get("/aai/v16/cloud-infrastructure/complexes/complex/test-complex-dsl")); //assert complex is returned since it is selected
+ JsonObject properties = resultsValue.get(0).getAsJsonObject().get("/aai/v16/cloud-infrastructure/pservers/pserver/test-pserver-dsl").getAsJsonObject().get("properties").getAsJsonObject();
+ assertEquals(1, properties.size());
+ assertThat(properties.get("hostname").toString(), is("\"test-pserver-dsl\"")); //verify that only selected attribute (hostname) is displayed
+ assertNull(properties.get("in-maint")); //assert that in-maint is not returned in the properties list
+ JsonObject complexProperties = resultsValue.get(1).getAsJsonObject().get("/aai/v16/cloud-infrastructure/complexes/complex/test-complex-dsl").getAsJsonObject().get("properties").getAsJsonObject();
+ assertEquals(2, complexProperties.size()); //internal properties like source-of-truth, node-type and aai-uri are not returned.
+ headers.remove("X-DslApiVersion");
+ }
+
+ @Test
+ public void testDslQueryTestAggregateFormatInternalPropsNotReturned() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ dslQueryMap.put("dsl-query", "pserver*('hostname','test-pserver-dsl')");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ String endpoint = "/aai/v16/dsl?format=aggregate";
+
+ // Add header with V2 to use the {} feature as a part of dsl query
+ headers.add("X-DslApiVersion","V2");
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ // Extract the properties array from the response and compare in assert statements
+ JsonParser jsonParser = new JsonParser();
+ JsonObject results = jsonParser.parse(responseString).getAsJsonObject();
+ JsonArray resultsArray = results.get("results").getAsJsonArray();
+ JsonObject properties = resultsArray.get(0).getAsJsonObject().get("/aai/v16/cloud-infrastructure/pservers/pserver/test-pserver-dsl").getAsJsonObject().get("properties").getAsJsonObject();
+ assertEquals(2, properties.size());
+ assertThat(properties.get("hostname").toString(), is("\"test-pserver-dsl\"")); //verify that only hostname is displayed
+ assertNull(properties.get("source-of-truth")); //assert that source-of-truth is not returned in properties list
+ headers.remove("X-DslApiVersion");
+ }
+
+ @Test
+ public void testDslQueryTestWithMultipleWheres() throws Exception {
+ // Return pservers where pserver has edge to complex "AND" same pserver also has an edge to cloud-region
+ Map<String, String> dslQueryMap = new HashMap<>();
+ dslQueryMap.put("dsl-query", "pserver*('hostname','test-pserver-dsl')(> complex)(> cloud-region)");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ String endpoint = "/aai/v18/dsl?format=aggregate";
+
+ // Add header with V2 to use the {} feature as a part of dsl query
+ headers.add("X-DslApiVersion","V2");
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ // Extract the properties array from the response and compare in assert statements
+ JsonParser jsonParser = new JsonParser();
+ JsonObject results = jsonParser.parse(responseString).getAsJsonObject();
+ JsonArray resultsArray = results.get("results").getAsJsonArray();
+ assertEquals(1, resultsArray.size()); // Returns only test-pserver-dsl, does not return test-pserver-dsl-03 since it does not have an edge to cloud-region
+ assertEquals(null, resultsArray.get(0).getAsJsonObject().get("/aai/v18/cloud-infrastructure/pservers/pserver/test-pserver-dsl-03")); //not returned
+ assertNotNull(resultsArray.get(0).getAsJsonObject().get("/aai/v18/cloud-infrastructure/pservers/pserver/test-pserver-dsl"));
+ headers.remove("X-DslApiVersion");
+ }
+
+ @Test
+ public void testDslQueryTestWithMultipleWhereNots() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ dslQueryMap.put("dsl-query", "pserver*('hostname')!(> complex)!(> cloud-region)");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ String endpoint = "/aai/v18/dsl?format=aggregate";
+
+ // Add header with V2 to use the {} feature as a part of dsl query
+ headers.add("X-DslApiVersion","V2");
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ // Extract the properties array from the response and compare in assert statements
+ JsonParser jsonParser = new JsonParser();
+ JsonObject results = jsonParser.parse(responseString).getAsJsonObject();
+ JsonArray resultsArray = results.get("results").getAsJsonArray();
+ assertEquals(1, resultsArray.size()); // Returns only test-pserver-dsl-02
+ assertEquals(null, resultsArray.get(0).getAsJsonObject().get("/aai/v18/cloud-infrastructure/pservers/pserver/test-pserver-dsl")); //not returned
+ assertNotNull(resultsArray.get(0).getAsJsonObject().get("/aai/v18/cloud-infrastructure/pservers/pserver/test-pserver-dsl-02"));
+ headers.remove("X-DslApiVersion");
+ }
+
+ @Test
+ public void testDslQueryProcessing_ExpectedError_WrongDataType() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ dslQueryMap.put("dsl-query", "pserver*('number-of-cpus','test')");
+
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ String endpoint = "/aai/v16/dsl?format=simple";
+
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ Assert.assertTrue(responseString.contains(
+ "Value ['test'] is not an instance of the expected data type for property key ['number-of-cpus'] and cannot be converted. " +
+ "Expected: class java.lang.Integer, found: class java.lang.String"));
+ }
+
+ @Test
+ public void testDslQueryOnComplex_WithResourceFormatWithUnionAsStartNode_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ dslQueryMap.put("dsl-query", "[complex*('source-of-truth', 'JUNIT'), complex*('aai-uri', '/cloud-infrastructure/complexes/complex/test-complex-dsl')]");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ String endpoint = "/aai/v16/dsl?format=resource";
+
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+
+ // Extract the properties array from the response and compare in assert statements
+ JsonParser jsonParser = new JsonParser();
+ JsonObject results = jsonParser.parse(responseString).getAsJsonObject();
+ JsonArray resultsArray = results.get("results").getAsJsonArray();
+ JsonObject resultValue = resultsArray.get(0).getAsJsonObject();
+ JsonObject complex = resultValue.get("complex").getAsJsonObject();
+ Assert.assertEquals("\"test-complex-dsl\"", complex.get("physical-location-id").toString());
+ }
+
+ @Test
+ public void testDslQueryOnPserver_WithResourceFormatWithUnionAsStartNode_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ dslQueryMap.put("dsl-query", "[pserver*('hostname','test-pserver-dsl'), complex*('physical-location-id', 'test-complex-dsl')]");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ String endpoint = "/aai/v16/dsl?format=resource";
+
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+
+ // Extract the properties array from the response and compare in assert statements
+ JsonParser jsonParser = new JsonParser();
+ JsonObject results = jsonParser.parse(responseString).getAsJsonObject();
+ JsonArray resultsArray = results.get("results").getAsJsonArray();
+ for (JsonElement je : resultsArray) {
+ JsonObject jo = je.getAsJsonObject();
+ if (jo.get("complex") != null) {
+ Assert.assertEquals("\"test-complex-dsl\"", jo.get("complex").getAsJsonObject().get("physical-location-id").toString());
+ }
+ else if (jo.get("pserver") != null) {
+ Assert.assertEquals("\"test-pserver-dsl\"", jo.get("pserver").getAsJsonObject().get("hostname").toString());
+ } else {
+ Assert.fail();
+ }
+ }
+ }
+
+ @Test
+ public void testDslQueryOnNodesWithEdges_WithResourceFormatWithUnionAsStartNode_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ dslQueryMap.put("dsl-query", "[pserver*('hostname','test-pserver-dsl-02'), pserver*('hostname','test-pserver-dsl')>complex*, pnf('pnf-name','pnf-name-noResults')>lag-interface>l-interface] > complex*");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ String endpoint = "/aai/v16/dsl?format=resource";
+
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString(); // pnf should have no results
+
+ JsonParser jsonParser = new JsonParser();
+ JsonObject results = jsonParser.parse(responseString).getAsJsonObject();
+ JsonArray resultsArray = results.get("results").getAsJsonArray();
+ boolean hasPserver1 = false, hasPserver2 = false;
+ for (JsonElement je : resultsArray) {
+ JsonObject jo = je.getAsJsonObject();
+ if (jo.get("complex") != null) {
+ Assert.assertEquals("\"test-complex-dsl\"", jo.get("complex").getAsJsonObject().get("physical-location-id").toString());
+ }
+ else if (jo.get("pserver") != null) {
+ if (jo.get("pserver").getAsJsonObject().get("hostname").toString().equals("\"test-pserver-dsl\"")){
+ hasPserver1 = true;
+ }
+ if (jo.get("pserver").getAsJsonObject().get("hostname").toString().equals("\"test-pserver-dsl-02\"")) {
+ hasPserver2 = true;
+ }
+ } else {
+ Assert.fail();
+ }
+ }
+ Assert.assertTrue(hasPserver1 && hasPserver2);
+ }
+
+ @Test
+ public void testDslQueryOnNodesWithEdges2_WithResourceFormatWithUnionAsStartNode_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ dslQueryMap.put("dsl-query", "[pnf*('pnf-name','test-pnf-name-01'),pserver(>cloud-region*('cloud-owner','test-cloud-owner-01'))]");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ String endpoint = "/aai/v16/dsl?format=resource";
+
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+
+ JsonParser jsonParser = new JsonParser();
+ JsonObject results = jsonParser.parse(responseString).getAsJsonObject();
+ JsonArray resultsArray = results.get("results").getAsJsonArray();
+ for (JsonElement je : resultsArray) {
+ JsonObject jo = je.getAsJsonObject();
+ if (jo.get("pnf") != null) {
+ Assert.assertEquals("\"test-pnf-name-01\"", jo.get("pnf").getAsJsonObject().get("pnf-name").toString());
+ }
+ else if (jo.get("cloud-region") != null) {
+ Assert.assertEquals("\"test-cloud-owner-01\"", jo.get("cloud-region").getAsJsonObject().get("cloud-owner").toString());
+ } else {
+ Assert.fail();
+ }
+ }
+ }
+
+ @Test
+ public void testDslQuery_IsAgnosticWithBooleanPropertyAsString_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ String endpoint = "/aai/v19/dsl?format=resource&nodesOnly=true";
+
+ // With expected boolean value "false" as a boolean value (no quotes)
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', 1)");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+
+ // Confirm that the vserver was returned in the response
+ Assert.assertTrue(responseString.contains("\"vserver-id\":\"test-vserver-id-2\"") );
+
+ dslQueryMap.remove("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', 1)");
+
+ // With expected boolean value of in-maint, "false", in string form (with single quotes)
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', 'false')");
+ payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+
+ httpEntity = new HttpEntity(payload, headers);
+ responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ responseString = responseEntity.getBody().toString();
+ // Confirm that the vserver was returned in the response
+ Assert.assertTrue(responseString.contains("\"vserver-id\":\"test-vserver-id-2\"") );
+ }
+
+ @Test
+ public void testDslQuery_IsAgnosticWithWrongBooleanPropertyAsString_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ String endpoint = "/aai/v19/dsl?format=resource&nodesOnly=true";
+
+ // all string values not boolean related default to false
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', 'bogusBoolean')>l-interface*('priority', 123)");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ // Confirm that the l-interface was returned in the response
+ Assert.assertTrue(responseString.contains("\"interface-name\":\"test-interface-name-02\"") );
+ }
+
+ @Test
+ public void testDslQuery_IsAgnosticWithBooleanPropertyAsInteger0_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ String endpoint = "/aai/v19/dsl?format=resource&nodesOnly=true";
+
+ // 0 is false, should return value
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', 0)>l-interface*('priority', 123)");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ // Confirm that the l-interface was returned in the response
+ Assert.assertTrue(responseString.contains("\"interface-name\":\"test-interface-name-02\"") );
+ }
+
+ @Test
+ public void testDslQuery_IsAgnosticWithBooleanPropertyAsInteger1_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ String endpoint = "/aai/v19/dsl?format=resource&nodesOnly=true";
+
+ // 0 is false, should return value
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', 1)>l-interface*('priority', 123)");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ // Confirm that the l-interface was returned in the response
+ Assert.assertTrue(!responseString.contains("\"interface-name\":\"test-interface-name-02\"") );
+ }
+
+ @Test
+ public void testDslQuery_IsAgnosticWithBooleanPropertyAsTrue_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ String endpoint = "/aai/v19/dsl?format=resource&nodesOnly=true";
+
+ // 0 is false, should return value
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', true)>l-interface*('priority', 123)");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ // Confirm that the l-interface was returned in the response
+ Assert.assertTrue(!responseString.contains("\"interface-name\":\"test-interface-name-02\"") );
+ }
+
+ @Test
+ public void testDslQuery_IsAgnosticWithBooleanPropertyAsTrueString_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ String endpoint = "/aai/v19/dsl?format=resource&nodesOnly=true";
+
+ // 0 is false, should return value
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', 'true')>l-interface*('priority', 123)");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+ // Confirm that the l-interface was returned in the response
+ Assert.assertTrue(!responseString.contains("\"interface-name\":\"test-interface-name-02\"") );
+ }
+
+ @Test
+ public void testDslQuery_IsAgnosticWithIntegerPropertyAsString_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ String endpoint = "/aai/v19/dsl?format=resource&nodesOnly=true";
+
+ // With expected boolean value "false" as a boolean value (no quotes)
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', false)>l-interface*('priority', '00123')");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+
+ // Confirm that the l-interface was returned in the response
+ Assert.assertTrue(responseString.contains("\"interface-name\":\"test-interface-name-02\"") );
+ dslQueryMap.remove("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', false)>l-interface*('priority', '00123')");
+
+ // With expected boolean value of in-maint, "false", in string form (with single quotes)
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>tenant*>vserver*('in-maint', 'false')>l-interface*('priority', 00123)");
+ payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+
+ httpEntity = new HttpEntity(payload, headers);
+ responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ responseString = responseEntity.getBody().toString();
+
+ // Confirm that the l-interface was returned in the response
+ Assert.assertTrue(responseString.contains("\"interface-name\":\"test-interface-name-02\"") );
+ }
+
+ @Test
+ public void testDslQuery_IsAgnosticWithLongPropertyAsString_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ String endpoint = "/aai/v19/dsl?format=resource&nodesOnly=true";
+
+ // With expected boolean value "false" as a boolean value (no quotes)
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>oam-network*('cvlan-tag', '456')");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+
+ // Confirm that the oam-network was returned in the response
+ Assert.assertTrue(responseString.contains("\"cvlan-tag\":456"));
+ dslQueryMap.remove("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>oam-network*('cvlan-tag', '456')");
+
+ dslQueryMap.put("dsl-query", "cloud-region*('cloud-owner', 'test-cloud-owner-02')>oam-network*('cvlan-tag', 456)");
+ payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+
+ httpEntity = new HttpEntity(payload, headers);
+ responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ responseString = responseEntity.getBody().toString();
+
+ // Confirm that the oam-network was returned in the response
+ Assert.assertTrue(responseString.contains("\"cvlan-tag\":456"));
+ }
+
+ @Test
+ public void testDslQuery_IsAgnosticWithPrimitivePropertiesInList_ReturnSuccessfulResponse() throws Exception {
+ Map<String, String> dslQueryMap = new HashMap<>();
+ String endpoint = "/aai/v19/dsl?format=resource&nodesOnly=true";
+
+ // With expected boolean value "false" as a boolean value (no quotes)
+ dslQueryMap.put("dsl-query", "complex('state')>pserver*('number-of-cpus', '234', '364', 2342)");
+ String payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+ httpEntity = new HttpEntity(payload, headers);
+ ResponseEntity responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ String responseString = responseEntity.getBody().toString();
+
+ // Confirm that the pserver was returned in the response
+ Assert.assertTrue(responseString.contains("\"number-of-cpus\":364"));
+ dslQueryMap.remove("dsl-query", "complex('state')>pserver*('number-of-cpus', '234', '364', 2342)");
+
+ dslQueryMap.put("dsl-query", "complex('state')>pserver*('number-of-cpus', '234', 364, 2342)");
+ payload = PayloadUtil.getTemplatePayload("dsl-query.json", dslQueryMap);
+
+ httpEntity = new HttpEntity(payload, headers);
+ responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class);
+ responseString = responseEntity.getBody().toString();
+
+ // Confirm that the pserver was returned in the response
+ Assert.assertTrue(responseString.contains("\"number-of-cpus\":364"));
+ }
}