From 7b465fbe49eadf89ce16c7d8569ffed10ff95efd Mon Sep 17 00:00:00 2001 From: abatos Date: Tue, 26 Sep 2017 09:43:07 -0400 Subject: [PATCH] Fix dependency issue on older version of Tinkerpop Removed the explicit dependency on the older versions of the Tinkerpop stack. This was causing problems with both the Titan and Janusgraph implementations of the deployment. Change-Id: I873ad3e9c92239774aa5ee30cf755700de52267b Issue-ID: AAI-295 Signed-off-by: Adrian Batos --- pom.xml | 40 +- .../org/openecomp/crud/dao/champ/ChampDaoTest.java | 1201 ++++++++++---------- .../openecomp/schema/AaiResourceServiceTest.java | 8 - 3 files changed, 619 insertions(+), 630 deletions(-) diff --git a/pom.xml b/pom.xml index 1fc4e33..e78968a 100644 --- a/pom.xml +++ b/pom.xml @@ -142,33 +142,31 @@ 2.2.0 + org.apache.tinkerpop - gremlin-core - 3.0.1-incubating - - - org.slf4j - slf4j-log4j12 - - - org.slf4j - jcl-over-slf4j - - - - - - - + gremlin-core + 3.2.3 + provided + + + org.slf4j + slf4j-log4j12 + + + org.slf4j + jcl-over-slf4j + + + + + org.apache.tinkerpop tinkergraph-gremlin - 3.0.1-incubating - test + 3.2.3 + provided - - org.json json diff --git a/src/test/java/org/openecomp/crud/dao/champ/ChampDaoTest.java b/src/test/java/org/openecomp/crud/dao/champ/ChampDaoTest.java index 930999c..32e0423 100644 --- a/src/test/java/org/openecomp/crud/dao/champ/ChampDaoTest.java +++ b/src/test/java/org/openecomp/crud/dao/champ/ChampDaoTest.java @@ -4,7 +4,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; -import org.openecomp.aai.champcore.graph.impl.InMemoryChampGraphImpl; +import org.openecomp.aai.champ.graph.impl.InMemoryChampGraphImpl; import org.openecomp.crud.dao.GraphDao; import org.openecomp.crud.entity.Edge; import org.openecomp.crud.entity.Vertex; @@ -13,7 +13,6 @@ import org.openecomp.crud.exception.CrudException; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Properties; import static org.junit.Assert.*; @@ -23,603 +22,603 @@ import static org.junit.Assert.*; */ public class ChampDaoTest { -// private static final String GRAPH_NAME = "my_test_graph"; -// -// private GraphDao champDao = null; -// -// -// /** -// * Perform setup steps that must be done prior to executing each test. -// */ -// @Before -// public void setup() { -// -// // Create an instance of the Champ DAO, backed by the Champ library's in-memory back end -// // for testing purposes. -// Map champDaoProperties = new HashMap(); -// champDaoProperties.put(ChampDao.CONFIG_STORAGE_BACKEND, "in-memory"); -// champDaoProperties.put(ChampDao.CONFIG_GRAPH_NAME, GRAPH_NAME); -// champDao = new ChampDao(new InMemoryChampGraphImpl.Builder().properties(champDaoProperties).build()); -// } -// -// -// /** -// * Perform tear down steps that must be done after executing each test. -// */ -// @After -// public void tearDown() { -// -// // Release the Champ DAO instance that we were using for the test. -// if (champDao != null) { -// ((ChampDao) champDao).close(); -// } -// } -// -// -// /** -// * Tests the ability of the {@link ChampDao} to create a vertex. -// * -// * @throws CrudException -// */ -// @Test -// public void createVertexTest() throws CrudException { -// -// String VERTEX_TYPE = "Test_Vertex"; -// -// Map properties = new HashMap(); -// properties.put("property1", "something"); -// properties.put("property2", "something else"); -// -// // Create the vertex. -// Vertex createdVertex = champDao.addVertex(VERTEX_TYPE, properties); -// -// // Validate that the returned {@link Vertex} has the right label assigned to it. -// assertTrue("Unexpected vertex type '" + createdVertex.getType() + "' returned from DAO", -// createdVertex.getType().equals(VERTEX_TYPE)); -// -// // Validate that all of the properties that we provided to the DAO are in fact assigned -// // to the {@link Vertex} that we got back. -// assertTrue("Vertex property list returned from DAO did not contain all expected properties - expected: " + -// properties.keySet() + " actual: " + createdVertex.getProperties().keySet(), -// createdVertex.getProperties().keySet().containsAll(properties.keySet())); -// -// // Validate that the values assigned to the properties in the returned {@link Vertex} -// // match the ones that we provided. -// for (String propertyKey : properties.keySet()) { -// -// assertTrue(createdVertex.getProperties().get(propertyKey).equals(properties.get(propertyKey))); -// } -// } -// -// -// /** -// * Tests the ability of the {@link ChampDao} to retrieve a vertex from the graph data store -// * by its unique identifier. -// * -// * @throws CrudException -// */ -// @Test -// public void getVertexByIdTest() throws CrudException { -// -// String VERTEX_TYPE = "Test_Vertex"; -// -// Map properties = new HashMap(); -// properties.put("property1", "something"); -// properties.put("property2", "something else"); -// -// // Create the vertex. -// Vertex createdVertex = champDao.addVertex(VERTEX_TYPE, properties); -// -// // Make sure the {@link Vertex} returned from the create method includes an id that we can -// // use to retrieve it. -// assertTrue("No valid id returned for the created vertex", createdVertex.getId().isPresent()); -// -// // Now, retrieve the {@link Vertex} by its identifier. -// Vertex retrievedVertex = champDao.getVertex(createdVertex.getId().get(), VERTEX_TYPE); -// -// // Validate that the retrieved {@link Vertex} has the right label assigned to it. -// assertTrue("Unexpected vertex type '" + retrievedVertex.getType() + "' returned from DAO", -// retrievedVertex.getType().equals(VERTEX_TYPE)); -// -// // Validate that all of the properties that we provided when we created the {@link Vertex} -// // are present in the {@link Vertex} that we retrieved. -// assertTrue("Vertex property list returned from DAO did not contain all expected properties - expected: " + -// properties.keySet() + " actual: " + retrievedVertex.getProperties().keySet(), -// retrievedVertex.getProperties().keySet().containsAll(properties.keySet())); -// -// // Validate that the values assigned to the properties in the retrieved {@link Vertex} -// // match the ones that we provided when we created it. -// for (String propertyKey : properties.keySet()) { -// -// assertTrue(retrievedVertex.getProperties().get(propertyKey).equals(properties.get(propertyKey))); -// } -// } -// -// -// /** -// * Tests the ability of the {@link ChampDao} to update an already existing vertex. -// * -// * @throws CrudException -// */ -// @Test -// public void updateVertexTest() throws CrudException { -// -// final String VERTEX_TYPE = "Test_Vertex"; -// -// Map properties = new HashMap(); -// properties.put("property1", "something"); -// properties.put("property2", "something else"); -// -// // Create the vertex. -// Vertex createdVertex = champDao.addVertex(VERTEX_TYPE, properties); -// -// // Make sure the {@link Vertex} returned from the create method includes an id that we can -// // use to retrieve it. -// assertTrue("No valid id returned for the created vertex", createdVertex.getId().isPresent()); -// -// // Modify the properties list... -// properties.put("property3", "a new property"); -// properties.remove("property1"); -// -// // ...and apply it to our vertex. -// Vertex updatedVertex = champDao.updateVertex(createdVertex.getId().get(), createdVertex.getType(), properties); -// -// assertTrue("Vertex property list returned from DAO update operation did not contain all expected properties - expected: " + -// properties.keySet() + " actual: " + updatedVertex.getProperties().keySet(), -// updatedVertex.getProperties().keySet().containsAll(properties.keySet())); -// -// // Validate that the values assigned to the properties in the updated {@link Vertex} -// // match the ones that we provided when we created it. -// for (String propertyKey : properties.keySet()) { -// -// assertTrue("Unexpected value for property '" + propertyKey + "' - Expected: " + -// properties.get(propertyKey) + " Actual: " + -// updatedVertex.getProperties().get(propertyKey), -// updatedVertex.getProperties().get(propertyKey).equals(properties.get(propertyKey))); -// } -// -// // Validate that the property that we removed is NOT in the set of properties from our -// // updated {@link Vertex}. -// assertFalse("Property 'property1' should no longer be associated with updated vertex", -// updatedVertex.getProperties().containsKey("property1")); -// } -// -// -// /** -// * Tests the ability of the {@link ChampDao} to retrieve multiple vertices which match -// * a particular set of supplied properties. -// * -// * @throws CrudException -// */ -// @Test -// public void getVerticesTest() throws CrudException { -// -// final String FIRST_VERTEX_TYPE = "pserver"; -// final String SECOND_VERTEX_TYPE = "complex"; -// -// // Create some vertices. -// -// Map vertex1Properties = new HashMap(); -// vertex1Properties.put("O/S", "Linux"); -// vertex1Properties.put("version", "6.5"); -// vertex1Properties.put("hostname", "kll0001"); -// champDao.addVertex(FIRST_VERTEX_TYPE, vertex1Properties); -// -// Map vertex2Properties = new HashMap(); -// vertex2Properties.put("O/S", "Linux"); -// vertex2Properties.put("version", "6.5"); -// vertex2Properties.put("hostname", "kll0002"); -// champDao.addVertex(FIRST_VERTEX_TYPE, vertex2Properties); -// -// Map vertex3Properties = new HashMap(); -// vertex3Properties.put("O/S", "Linux"); -// vertex3Properties.put("version", "7.2"); -// vertex3Properties.put("hostname", "kll0003"); -// champDao.addVertex(FIRST_VERTEX_TYPE, vertex3Properties); -// -// Map vertex4Properties = new HashMap(); -// vertex4Properties.put("O/S", "Windows"); -// vertex4Properties.put("version", "10"); -// vertex4Properties.put("hostname", "Dev Laptop"); -// champDao.addVertex(FIRST_VERTEX_TYPE, vertex4Properties); -// -// Map vertex5Properties = new HashMap(); -// vertex5Properties.put("Street", "Baker"); -// vertex5Properties.put("Number", "222B"); -// champDao.addVertex(SECOND_VERTEX_TYPE, vertex5Properties); -// -// // Create a set of properties to use for our query. -// Map queryProperties = new HashMap(); -// queryProperties.put("O/S", "Linux"); -// queryProperties.put("version", "6.5"); -// -// // Validate that we filter our 'get vertices' results by type -// List allVerticesByType = champDao.getVertices(FIRST_VERTEX_TYPE, MapBuilder.builder().build()); -// for (Vertex v : allVerticesByType) { -// assertTrue("Unexpected vertex type returned from query. Expected: " + -// FIRST_VERTEX_TYPE + " Actual: " + v.getType(), -// v.getType().equals(FIRST_VERTEX_TYPE)); -// } -// -// // Now, request the vertices that match our parameters. -// List vertices = champDao.getVertices(FIRST_VERTEX_TYPE, queryProperties); -// -// // Validate that got back the expected number of vertices. -// assertEquals(vertices.size(), 2); -// -// // Validate that the vertices we got back contain the expected parameters. -// for (Vertex v : vertices) { -// -// assertTrue("Vertex from query result does not contain expected vertex 'O/S'", -// v.getProperties().containsKey("O/S")); -// assertTrue("Vertex from query result contains unexpected value for 'O/S' parameter - Expected: 'Linux' Actual: '" + -// v.getProperties().get("O/S") + "'", -// v.getProperties().get("O/S").equals("Linux")); -// -// assertTrue("Vertex from query result does not contain expected vertex 'O/S'", -// v.getProperties().containsKey("version")); -// assertTrue("Vertex from query result contains unexpected value for 'O/S' parameter - Expected: 'Linux' Actual: '" + -// v.getProperties().get("O/S") + "'", -// v.getProperties().get("version").equals("6.5")); -// } -// } -// -// @Test -// public void deleteVertexTest() throws CrudException { -// -// boolean deletedVertexNotFound = false; -// -// // Create a vertex. -// Vertex createdVertex = champDao.addVertex("test_type", MapBuilder.builder() -// .withKeyValue("O/S", "Linux") -// .withKeyValue("version", "6.5") -// .withKeyValue("hostname", "kll0001") -// .build()); -// -// // Verify that we can retrieve the vertex from the graph data base. -// Vertex retrievedVertex = champDao.getVertex(createdVertex.getId().get(), "test_type"); -// -// // Now, delete the vertex. -// champDao.deleteVertex(createdVertex.getId().get(), "test_type"); -// -// // Now, try to retrieve it again. This time we should fail to find it. -// try { -// champDao.getVertex(createdVertex.getId().get(), "test_type"); -// -// } catch (CrudException e) { -// assertTrue(e.getMessage().contains("No vertex with id")); -// deletedVertexNotFound = true; -// } -// -// assertTrue("Should not have been able to retrieve deleted vertex", deletedVertexNotFound); -// } -// -// @Test -// public void createEdgeTest() throws CrudException { -// -// String EDGE_TYPE = "has"; -// -// // Create the source vertex for the edge. -// Map srcVertexProperties = new HashMap(); -// srcVertexProperties.put("O/S", "Linux"); -// srcVertexProperties.put("version", "6.5"); -// srcVertexProperties.put("hostname", "kll0001"); -// Vertex sourceVertex = champDao.addVertex("vserver", srcVertexProperties); -// -// // Create the target vertex for the edge. -// Map dstVertexProperties = new HashMap(); -// dstVertexProperties.put("O/S", "Linux"); -// dstVertexProperties.put("version", "6.5"); -// dstVertexProperties.put("hostname", "kll0002"); -// Vertex destVertex = champDao.addVertex("VNF", dstVertexProperties); -// -// // Now, create the edge itself. -// Map edgeProperties = new HashMap(); -// edgeProperties.put("prop", "val"); -// Edge createdEdge = champDao.addEdge("has", sourceVertex, destVertex, edgeProperties); -// -// // Validate that the Edge object returned from the create method matches what we were -// // trying to create. -// assertTrue("Unexpected type for Edge returned from create method. Expected: " + EDGE_TYPE -// + " Actual: " + createdEdge.getType(), -// createdEdge.getType().equals("has")); -// assertTrue("Unexpected properties for Edge returned from create method. Expected: " + edgeProperties -// + " Actual: " + createdEdge.getProperties(), -// createdEdge.getProperties().equals(edgeProperties)); -// -// } -// -// @Test -// public void createEdgeWithMissingSrcOrTargetTest() throws CrudException { -// -// String EDGE_TYPE = "has"; -// -// // Create the source vertex for the edge. -// Map srcVertexProperties = new HashMap(); -// srcVertexProperties.put("O/S", "Linux"); -// srcVertexProperties.put("version", "6.5"); -// srcVertexProperties.put("hostname", "kll0001"); -// Vertex sourceVertex = champDao.addVertex("vserver", srcVertexProperties); -// -// // Create the target vertex for the edge. -// Map dstVertexProperties = new HashMap(); -// dstVertexProperties.put("O/S", "Linux"); -// dstVertexProperties.put("version", "6.5"); -// dstVertexProperties.put("hostname", "kll0002"); -// Vertex destVertex = champDao.addVertex("VNF", dstVertexProperties); -// -// // Now, try creating the Edge but specify an id for the source vertex that does -// // not exist. -// Map edgeProperties = new HashMap(); -// edgeProperties.put("prop", "val"); -// try { -// champDao.addEdge(EDGE_TYPE, new Vertex.Builder("miss").id("99").build(), destVertex, edgeProperties); -// } catch (CrudException e) { -// assertTrue(e.getMessage().contains("Error creating edge - source vertex")); -// } -// -// // Now, try created the Edge with a valid source vertex, but specify an id for the -// // target vertex that does not exist. -// try { -// champDao.addEdge(EDGE_TYPE, sourceVertex, new Vertex.Builder("miss").id("99").build(), edgeProperties); -// } catch (CrudException e) { -// assertTrue(e.getMessage().contains("Error creating edge - target vertex")); -// } -// -// } -// -// @Test -// public void getEdgeByIdTest() throws CrudException { -// -// String EDGE_TYPE = "has"; -// -// // Create the source vertex for the edge. -// Map srcVertexProperties = new HashMap(); -// srcVertexProperties.put("O/S", "Linux"); -// srcVertexProperties.put("version", "6.5"); -// srcVertexProperties.put("hostname", "kll0001"); -// Vertex sourceVertex = champDao.addVertex("vserver", srcVertexProperties); -// -// // Create the target vertex for the edge. -// Map dstVertexProperties = new HashMap(); -// dstVertexProperties.put("O/S", "Linux"); -// dstVertexProperties.put("version", "6.5"); -// dstVertexProperties.put("hostname", "kll0002"); -// Vertex destVertex = champDao.addVertex("VNF", dstVertexProperties); -// -// // Now, create the edge itself. -// Map edgeProperties = new HashMap(); -// edgeProperties.put("prop", "val"); -// Edge createdEdge = champDao.addEdge("has", sourceVertex, destVertex, edgeProperties); -// -// // Retrieve the edge we just created by specifying its unique identifier. -// Edge retrievedEdge = champDao.getEdge(createdEdge.getId().get(), "has"); -// -// // Validate that the contents of the object that we got back matches what we thought we -// // created. -// assertTrue("Unexpected type for Edge returned from get method. Expected: " + EDGE_TYPE -// + " Actual: " + retrievedEdge.getType(), -// retrievedEdge.getType().equals(EDGE_TYPE)); -// assertTrue("Unexpected properties for Edge returned from get method. Expected: " + edgeProperties -// + " Actual: " + retrievedEdge.getProperties(), -// retrievedEdge.getProperties().equals(edgeProperties)); -// } -// -// @Test -// public void getEdgesTest() throws CrudException { -// -// final String EDGE_TYPE_HAS = "has"; -// final String EDGE_TYPE_RUNS = "runs"; -// -// // Create some vertices and edges that we can query agains. -// Vertex complex = champDao.addVertex("complex", MapBuilder.builder() -// .withKeyValue("Province", "Ontario") -// .withKeyValue("City", "Ottawa") -// .withKeyValue("Street", "303 Terry Fox") -// .build()); -// -// Vertex vserver = champDao.addVertex("vserver", MapBuilder.builder() -// .withKeyValue("O/S", "Linux") -// .withKeyValue("version", "6.5") -// .withKeyValue("hostname", "kll0001") -// .build()); -// -// Vertex vnf1 = champDao.addVertex("vserver", MapBuilder.builder() -// .withKeyValue("Application", "OpenDaylight") -// .build()); -// -// Vertex vnf2 = champDao.addVertex("vserver", MapBuilder.builder() -// .withKeyValue("Application", "Cammunda") -// .build()); -// -// Edge edge1 = champDao.addEdge(EDGE_TYPE_HAS, complex, vserver, -// MapBuilder.builder() -// .withKeyValue("usesResource", "false") -// .withKeyValue("hasDelTarget", "false") -// .build()); -// -// Edge edge2 = champDao.addEdge(EDGE_TYPE_RUNS, vserver, vnf1, -// MapBuilder.builder() -// .withKeyValue("usesResource", "false") -// .withKeyValue("hasDelTarget", "true") -// .build()); -// -// Edge edge3 = champDao.addEdge(EDGE_TYPE_RUNS, vserver, vnf2, -// MapBuilder.builder() -// .withKeyValue("usesResource", "false") -// .withKeyValue("hasDelTarget", "false") -// .build()); -// -// // Query for all HAS edges. -// List hasEdges = champDao.getEdges(EDGE_TYPE_HAS, new HashMap()); -// -// assertEquals("Unexpected number of edges of type 'has' found. Expected: 1 Actual: " + hasEdges.size(), -// hasEdges.size(), 1); -// assertTrue("Result of query for 'has' type edges does not contain the expected results", -// containsEdge(edge1, hasEdges)); -// -// // Query for all RUNS edges. -// List runsEdges = champDao.getEdges(EDGE_TYPE_RUNS, new HashMap()); -// -// assertEquals("Unexpected number of edges of type 'runs' found. Expected: 2 Actual: " + runsEdges.size(), -// runsEdges.size(), 2); -// assertTrue("Result of query for 'runs' type edges does not contain the expected results", -// containsEdge(edge2, runsEdges)); -// assertTrue("Result of query for 'runs' type edges does not contain the expected results", -// containsEdge(edge2, runsEdges)); -// -// // Query for all HAS edges with the property 'hasDelTarget' equal to 'true'. -// List runsEdgesWithDelTargetTrue = -// champDao.getEdges(EDGE_TYPE_RUNS, MapBuilder.builder() -// .withKeyValue("hasDelTarget", "true") -// .build()); -// -// assertEquals("Unexpected number of edges of type 'has' with 'hasDelTarget=true' found. Expected: 1 Actual: " -// + runsEdgesWithDelTargetTrue.size(), -// runsEdgesWithDelTargetTrue.size(), 1); -// assertTrue("Result of query for 'runs' type edges with delTarget set to TRUE does not contain the expected results", -// containsEdge(edge2, runsEdgesWithDelTargetTrue)); -// } -// -// @Test -// @Ignore // For now - pending some expected fixes to the Champ library. -// public void updateEdgeTest() throws CrudException { -// -// // Create the source vertex for the edge. -// Vertex sourceVertex = champDao.addVertex("vserver", MapBuilder.builder() -// .withKeyValue("O/S", "Linux") -// .withKeyValue("version", "6.5") -// .withKeyValue("hostname", "kll0001") -// .build()); -// -// // Create the target vertex for the edge. -// Vertex destVertex = champDao.addVertex("VNF", MapBuilder.builder() -// .withKeyValue("O/S", "Linux") -// .withKeyValue("version", "6.5") -// .withKeyValue("hostname", "kll0002") -// .build()); -// -// // Now, create the edge itself. -// Edge createdEdge = champDao.addEdge("has", -// sourceVertex, -// destVertex, -// MapBuilder.builder() -// .withKeyValue("key1", "value1") -// .withKeyValue("key2", "value2") -// .withKeyValue("key3", "value3") -// .build()); -// -// // Make sure the Edge returned from the create method includes an id that we can -// // use to retrieve it. -// assertTrue("No valid id returned for the created edge", createdEdge.getId().isPresent()); -// -// // Retrieve the properties map for our edge and make some changes. -// Map properties = createdEdge.getProperties(); -// properties.put("key4", "value4"); -// properties.remove("key2"); -// -// // Now update the edge with the new properties map. -// Edge updatedEdge = champDao.updateEdge(createdEdge); -// -// assertTrue("Edge property list returned from DAO update operation did not contain all expected properties - expected: " + -// properties.keySet() + " actual: " + updatedEdge.getProperties().keySet(), -// updatedEdge.getProperties().keySet().containsAll(properties.keySet())); -// -// // Validate that the values assigned to the properties in the updated Edge -// // match the ones that we provided when we created it. -// for (String propertyKey : properties.keySet()) { -// -// assertTrue("Unexpected value for property '" + propertyKey + "' - Expected: " + -// properties.get(propertyKey) + " Actual: " + -// updatedEdge.getProperties().get(propertyKey), -// updatedEdge.getProperties().get(propertyKey).equals(properties.get(propertyKey))); -// } -// -// // Validate that the property that we removed is NOT in the set of properties from our -// // updated edge. -// // *** We will leave this validation commented out for now, as the Champ library actually -// // merges update properties instead of replacing them... -//// assertFalse("Property 'key2' should no longer be associated with updated edge", -//// updatedEdge.getProperties().containsKey("key2")); -// } -// -// @Test -// public void deleteEdgeTest() throws CrudException { -// -// boolean deletedEdgeNotFound = false; -// -// // Create the source vertex for the edge. -// Vertex sourceVertex = champDao.addVertex("vserver", MapBuilder.builder() -// .withKeyValue("O/S", "Linux") -// .withKeyValue("version", "6.5") -// .withKeyValue("hostname", "kll0001") -// .build()); -// -// // Create the target vertex for the edge. -// Vertex destVertex = champDao.addVertex("VNF", MapBuilder.builder() -// .withKeyValue("O/S", "Linux") -// .withKeyValue("version", "6.5") -// .withKeyValue("hostname", "kll0002") -// .build()); -// -// // Now, create the edge itself. -// Edge createdEdge = champDao.addEdge("has", -// sourceVertex, -// destVertex, -// MapBuilder.builder() -// .withKeyValue("key1", "value1") -// .withKeyValue("key2", "value2") -// .withKeyValue("key3", "value3") -// .build()); -// -// // Verify that we can retrieve the edge that we just created. -// Edge retrievedEdge = champDao.getEdge(createdEdge.getId().get(), "has"); -// -// // Now, delete it. -// champDao.deleteEdge(createdEdge.getId().get(), "has"); -// -// // Try retrieving it again. This time we should not find it. -// try { -// champDao.getEdge(createdEdge.getId().get(), "has"); -// } catch (CrudException e) { -// -// assertTrue(e.getMessage().contains("No edge with id")); -// deletedEdgeNotFound = true; -// } -// -// assertTrue("Should not have been able to retrieve deleted edge.", deletedEdgeNotFound); -// } -// -// private boolean containsEdge(Edge anEdge, List edges) { -// -// for (Edge e : edges) { -// if (e.getId().isPresent() && anEdge.getId().isPresent() && (e.getId().get().equals(anEdge.getId().get()))) { -// return true; -// } -// -// } -// return false; -// } -// -// public static class MapBuilder { -// -// private Map map; -// -// private MapBuilder() { -// map = new HashMap(); -// } -// -// public static MapBuilder builder() { -// return new MapBuilder(); -// } -// -// public MapBuilder withKeyValue(String key, Object value) { -// map.put(key, value); -// return this; -// } -// -// public Map build() { -// return map; -// } -// } + private static final String GRAPH_NAME = "my_test_graph"; + + private GraphDao champDao = null; + + + /** + * Perform setup steps that must be done prior to executing each test. + */ + @Before + public void setup() { + + // Create an instance of the Champ DAO, backed by the Champ library's in-memory back end + // for testing purposes. + Map champDaoProperties = new HashMap(); + champDaoProperties.put(ChampDao.CONFIG_STORAGE_BACKEND, "in-memory"); + champDaoProperties.put(ChampDao.CONFIG_GRAPH_NAME, GRAPH_NAME); + champDao = new ChampDao(new InMemoryChampGraphImpl.Builder().properties(champDaoProperties).build()); + } + + + /** + * Perform tear down steps that must be done after executing each test. + */ + @After + public void tearDown() { + + // Release the Champ DAO instance that we were using for the test. + if (champDao != null) { + ((ChampDao) champDao).close(); + } + } + + + /** + * Tests the ability of the {@link ChampDao} to create a vertex. + * + * @throws CrudException + */ + @Test + public void createVertexTest() throws CrudException { + + String VERTEX_TYPE = "Test_Vertex"; + + Map properties = new HashMap(); + properties.put("property1", "something"); + properties.put("property2", "something else"); + + // Create the vertex. + Vertex createdVertex = champDao.addVertex(VERTEX_TYPE, properties); + + // Validate that the returned {@link Vertex} has the right label assigned to it. + assertTrue("Unexpected vertex type '" + createdVertex.getType() + "' returned from DAO", + createdVertex.getType().equals(VERTEX_TYPE)); + + // Validate that all of the properties that we provided to the DAO are in fact assigned + // to the {@link Vertex} that we got back. + assertTrue("Vertex property list returned from DAO did not contain all expected properties - expected: " + + properties.keySet() + " actual: " + createdVertex.getProperties().keySet(), + createdVertex.getProperties().keySet().containsAll(properties.keySet())); + + // Validate that the values assigned to the properties in the returned {@link Vertex} + // match the ones that we provided. + for (String propertyKey : properties.keySet()) { + + assertTrue(createdVertex.getProperties().get(propertyKey).equals(properties.get(propertyKey))); + } + } + + + /** + * Tests the ability of the {@link ChampDao} to retrieve a vertex from the graph data store + * by its unique identifier. + * + * @throws CrudException + */ + @Test + public void getVertexByIdTest() throws CrudException { + + String VERTEX_TYPE = "Test_Vertex"; + + Map properties = new HashMap(); + properties.put("property1", "something"); + properties.put("property2", "something else"); + + // Create the vertex. + Vertex createdVertex = champDao.addVertex(VERTEX_TYPE, properties); + + // Make sure the {@link Vertex} returned from the create method includes an id that we can + // use to retrieve it. + assertTrue("No valid id returned for the created vertex", createdVertex.getId().isPresent()); + + // Now, retrieve the {@link Vertex} by its identifier. + Vertex retrievedVertex = champDao.getVertex(createdVertex.getId().get(), VERTEX_TYPE); + + // Validate that the retrieved {@link Vertex} has the right label assigned to it. + assertTrue("Unexpected vertex type '" + retrievedVertex.getType() + "' returned from DAO", + retrievedVertex.getType().equals(VERTEX_TYPE)); + + // Validate that all of the properties that we provided when we created the {@link Vertex} + // are present in the {@link Vertex} that we retrieved. + assertTrue("Vertex property list returned from DAO did not contain all expected properties - expected: " + + properties.keySet() + " actual: " + retrievedVertex.getProperties().keySet(), + retrievedVertex.getProperties().keySet().containsAll(properties.keySet())); + + // Validate that the values assigned to the properties in the retrieved {@link Vertex} + // match the ones that we provided when we created it. + for (String propertyKey : properties.keySet()) { + + assertTrue(retrievedVertex.getProperties().get(propertyKey).equals(properties.get(propertyKey))); + } + } + + + /** + * Tests the ability of the {@link ChampDao} to update an already existing vertex. + * + * @throws CrudException + */ + @Test + public void updateVertexTest() throws CrudException { + + final String VERTEX_TYPE = "Test_Vertex"; + + Map properties = new HashMap(); + properties.put("property1", "something"); + properties.put("property2", "something else"); + + // Create the vertex. + Vertex createdVertex = champDao.addVertex(VERTEX_TYPE, properties); + + // Make sure the {@link Vertex} returned from the create method includes an id that we can + // use to retrieve it. + assertTrue("No valid id returned for the created vertex", createdVertex.getId().isPresent()); + + // Modify the properties list... + properties.put("property3", "a new property"); + properties.remove("property1"); + + // ...and apply it to our vertex. + Vertex updatedVertex = champDao.updateVertex(createdVertex.getId().get(), createdVertex.getType(), properties); + + assertTrue("Vertex property list returned from DAO update operation did not contain all expected properties - expected: " + + properties.keySet() + " actual: " + updatedVertex.getProperties().keySet(), + updatedVertex.getProperties().keySet().containsAll(properties.keySet())); + + // Validate that the values assigned to the properties in the updated {@link Vertex} + // match the ones that we provided when we created it. + for (String propertyKey : properties.keySet()) { + + assertTrue("Unexpected value for property '" + propertyKey + "' - Expected: " + + properties.get(propertyKey) + " Actual: " + + updatedVertex.getProperties().get(propertyKey), + updatedVertex.getProperties().get(propertyKey).equals(properties.get(propertyKey))); + } + + // Validate that the property that we removed is NOT in the set of properties from our + // updated {@link Vertex}. + assertFalse("Property 'property1' should no longer be associated with updated vertex", + updatedVertex.getProperties().containsKey("property1")); + } + + + /** + * Tests the ability of the {@link ChampDao} to retrieve multiple vertices which match + * a particular set of supplied properties. + * + * @throws CrudException + */ + @Test + public void getVerticesTest() throws CrudException { + + final String FIRST_VERTEX_TYPE = "pserver"; + final String SECOND_VERTEX_TYPE = "complex"; + + // Create some vertices. + + Map vertex1Properties = new HashMap(); + vertex1Properties.put("O/S", "Linux"); + vertex1Properties.put("version", "6.5"); + vertex1Properties.put("hostname", "kll0001"); + champDao.addVertex(FIRST_VERTEX_TYPE, vertex1Properties); + + Map vertex2Properties = new HashMap(); + vertex2Properties.put("O/S", "Linux"); + vertex2Properties.put("version", "6.5"); + vertex2Properties.put("hostname", "kll0002"); + champDao.addVertex(FIRST_VERTEX_TYPE, vertex2Properties); + + Map vertex3Properties = new HashMap(); + vertex3Properties.put("O/S", "Linux"); + vertex3Properties.put("version", "7.2"); + vertex3Properties.put("hostname", "kll0003"); + champDao.addVertex(FIRST_VERTEX_TYPE, vertex3Properties); + + Map vertex4Properties = new HashMap(); + vertex4Properties.put("O/S", "Windows"); + vertex4Properties.put("version", "10"); + vertex4Properties.put("hostname", "Dev Laptop"); + champDao.addVertex(FIRST_VERTEX_TYPE, vertex4Properties); + + Map vertex5Properties = new HashMap(); + vertex5Properties.put("Street", "Baker"); + vertex5Properties.put("Number", "222B"); + champDao.addVertex(SECOND_VERTEX_TYPE, vertex5Properties); + + // Create a set of properties to use for our query. + Map queryProperties = new HashMap(); + queryProperties.put("O/S", "Linux"); + queryProperties.put("version", "6.5"); + + // Validate that we filter our 'get vertices' results by type + List allVerticesByType = champDao.getVertices(FIRST_VERTEX_TYPE, MapBuilder.builder().build()); + for (Vertex v : allVerticesByType) { + assertTrue("Unexpected vertex type returned from query. Expected: " + + FIRST_VERTEX_TYPE + " Actual: " + v.getType(), + v.getType().equals(FIRST_VERTEX_TYPE)); + } + + // Now, request the vertices that match our parameters. + List vertices = champDao.getVertices(FIRST_VERTEX_TYPE, queryProperties); + + // Validate that got back the expected number of vertices. + assertEquals(vertices.size(), 2); + + // Validate that the vertices we got back contain the expected parameters. + for (Vertex v : vertices) { + + assertTrue("Vertex from query result does not contain expected vertex 'O/S'", + v.getProperties().containsKey("O/S")); + assertTrue("Vertex from query result contains unexpected value for 'O/S' parameter - Expected: 'Linux' Actual: '" + + v.getProperties().get("O/S") + "'", + v.getProperties().get("O/S").equals("Linux")); + + assertTrue("Vertex from query result does not contain expected vertex 'O/S'", + v.getProperties().containsKey("version")); + assertTrue("Vertex from query result contains unexpected value for 'O/S' parameter - Expected: 'Linux' Actual: '" + + v.getProperties().get("O/S") + "'", + v.getProperties().get("version").equals("6.5")); + } + } + + @Test + public void deleteVertexTest() throws CrudException { + + boolean deletedVertexNotFound = false; + + // Create a vertex. + Vertex createdVertex = champDao.addVertex("test_type", MapBuilder.builder() + .withKeyValue("O/S", "Linux") + .withKeyValue("version", "6.5") + .withKeyValue("hostname", "kll0001") + .build()); + + // Verify that we can retrieve the vertex from the graph data base. + Vertex retrievedVertex = champDao.getVertex(createdVertex.getId().get(), "test_type"); + + // Now, delete the vertex. + champDao.deleteVertex(createdVertex.getId().get(), "test_type"); + + // Now, try to retrieve it again. This time we should fail to find it. + try { + champDao.getVertex(createdVertex.getId().get(), "test_type"); + + } catch (CrudException e) { + assertTrue(e.getMessage().contains("No vertex with id")); + deletedVertexNotFound = true; + } + + assertTrue("Should not have been able to retrieve deleted vertex", deletedVertexNotFound); + } + + @Test + public void createEdgeTest() throws CrudException { + + String EDGE_TYPE = "has"; + + // Create the source vertex for the edge. + Map srcVertexProperties = new HashMap(); + srcVertexProperties.put("O/S", "Linux"); + srcVertexProperties.put("version", "6.5"); + srcVertexProperties.put("hostname", "kll0001"); + Vertex sourceVertex = champDao.addVertex("vserver", srcVertexProperties); + + // Create the target vertex for the edge. + Map dstVertexProperties = new HashMap(); + dstVertexProperties.put("O/S", "Linux"); + dstVertexProperties.put("version", "6.5"); + dstVertexProperties.put("hostname", "kll0002"); + Vertex destVertex = champDao.addVertex("VNF", dstVertexProperties); + + // Now, create the edge itself. + Map edgeProperties = new HashMap(); + edgeProperties.put("prop", "val"); + Edge createdEdge = champDao.addEdge("has", sourceVertex, destVertex, edgeProperties); + + // Validate that the Edge object returned from the create method matches what we were + // trying to create. + assertTrue("Unexpected type for Edge returned from create method. Expected: " + EDGE_TYPE + + " Actual: " + createdEdge.getType(), + createdEdge.getType().equals("has")); + assertTrue("Unexpected properties for Edge returned from create method. Expected: " + edgeProperties + + " Actual: " + createdEdge.getProperties(), + createdEdge.getProperties().equals(edgeProperties)); + + } + + @Test + public void createEdgeWithMissingSrcOrTargetTest() throws CrudException { + + String EDGE_TYPE = "has"; + + // Create the source vertex for the edge. + Map srcVertexProperties = new HashMap(); + srcVertexProperties.put("O/S", "Linux"); + srcVertexProperties.put("version", "6.5"); + srcVertexProperties.put("hostname", "kll0001"); + Vertex sourceVertex = champDao.addVertex("vserver", srcVertexProperties); + + // Create the target vertex for the edge. + Map dstVertexProperties = new HashMap(); + dstVertexProperties.put("O/S", "Linux"); + dstVertexProperties.put("version", "6.5"); + dstVertexProperties.put("hostname", "kll0002"); + Vertex destVertex = champDao.addVertex("VNF", dstVertexProperties); + + // Now, try creating the Edge but specify an id for the source vertex that does + // not exist. + Map edgeProperties = new HashMap(); + edgeProperties.put("prop", "val"); + try { + champDao.addEdge(EDGE_TYPE, new Vertex.Builder("miss").id("99").build(), destVertex, edgeProperties); + } catch (CrudException e) { + assertTrue(e.getMessage().contains("Error creating edge - source vertex")); + } + + // Now, try created the Edge with a valid source vertex, but specify an id for the + // target vertex that does not exist. + try { + champDao.addEdge(EDGE_TYPE, sourceVertex, new Vertex.Builder("miss").id("99").build(), edgeProperties); + } catch (CrudException e) { + assertTrue(e.getMessage().contains("Error creating edge - target vertex")); + } + + } + + @Test + public void getEdgeByIdTest() throws CrudException { + + String EDGE_TYPE = "has"; + + // Create the source vertex for the edge. + Map srcVertexProperties = new HashMap(); + srcVertexProperties.put("O/S", "Linux"); + srcVertexProperties.put("version", "6.5"); + srcVertexProperties.put("hostname", "kll0001"); + Vertex sourceVertex = champDao.addVertex("vserver", srcVertexProperties); + + // Create the target vertex for the edge. + Map dstVertexProperties = new HashMap(); + dstVertexProperties.put("O/S", "Linux"); + dstVertexProperties.put("version", "6.5"); + dstVertexProperties.put("hostname", "kll0002"); + Vertex destVertex = champDao.addVertex("VNF", dstVertexProperties); + + // Now, create the edge itself. + Map edgeProperties = new HashMap(); + edgeProperties.put("prop", "val"); + Edge createdEdge = champDao.addEdge("has", sourceVertex, destVertex, edgeProperties); + + // Retrieve the edge we just created by specifying its unique identifier. + Edge retrievedEdge = champDao.getEdge(createdEdge.getId().get(), "has"); + + // Validate that the contents of the object that we got back matches what we thought we + // created. + assertTrue("Unexpected type for Edge returned from get method. Expected: " + EDGE_TYPE + + " Actual: " + retrievedEdge.getType(), + retrievedEdge.getType().equals(EDGE_TYPE)); + assertTrue("Unexpected properties for Edge returned from get method. Expected: " + edgeProperties + + " Actual: " + retrievedEdge.getProperties(), + retrievedEdge.getProperties().equals(edgeProperties)); + } + + @Test + public void getEdgesTest() throws CrudException { + + final String EDGE_TYPE_HAS = "has"; + final String EDGE_TYPE_RUNS = "runs"; + + // Create some vertices and edges that we can query agains. + Vertex complex = champDao.addVertex("complex", MapBuilder.builder() + .withKeyValue("Province", "Ontario") + .withKeyValue("City", "Ottawa") + .withKeyValue("Street", "303 Terry Fox") + .build()); + + Vertex vserver = champDao.addVertex("vserver", MapBuilder.builder() + .withKeyValue("O/S", "Linux") + .withKeyValue("version", "6.5") + .withKeyValue("hostname", "kll0001") + .build()); + + Vertex vnf1 = champDao.addVertex("vserver", MapBuilder.builder() + .withKeyValue("Application", "OpenDaylight") + .build()); + + Vertex vnf2 = champDao.addVertex("vserver", MapBuilder.builder() + .withKeyValue("Application", "Cammunda") + .build()); + + Edge edge1 = champDao.addEdge(EDGE_TYPE_HAS, complex, vserver, + MapBuilder.builder() + .withKeyValue("usesResource", "false") + .withKeyValue("hasDelTarget", "false") + .build()); + + Edge edge2 = champDao.addEdge(EDGE_TYPE_RUNS, vserver, vnf1, + MapBuilder.builder() + .withKeyValue("usesResource", "false") + .withKeyValue("hasDelTarget", "true") + .build()); + + Edge edge3 = champDao.addEdge(EDGE_TYPE_RUNS, vserver, vnf2, + MapBuilder.builder() + .withKeyValue("usesResource", "false") + .withKeyValue("hasDelTarget", "false") + .build()); + + // Query for all HAS edges. + List hasEdges = champDao.getEdges(EDGE_TYPE_HAS, new HashMap()); + + assertEquals("Unexpected number of edges of type 'has' found. Expected: 1 Actual: " + hasEdges.size(), + hasEdges.size(), 1); + assertTrue("Result of query for 'has' type edges does not contain the expected results", + containsEdge(edge1, hasEdges)); + + // Query for all RUNS edges. + List runsEdges = champDao.getEdges(EDGE_TYPE_RUNS, new HashMap()); + + assertEquals("Unexpected number of edges of type 'runs' found. Expected: 2 Actual: " + runsEdges.size(), + runsEdges.size(), 2); + assertTrue("Result of query for 'runs' type edges does not contain the expected results", + containsEdge(edge2, runsEdges)); + assertTrue("Result of query for 'runs' type edges does not contain the expected results", + containsEdge(edge2, runsEdges)); + + // Query for all HAS edges with the property 'hasDelTarget' equal to 'true'. + List runsEdgesWithDelTargetTrue = + champDao.getEdges(EDGE_TYPE_RUNS, MapBuilder.builder() + .withKeyValue("hasDelTarget", "true") + .build()); + + assertEquals("Unexpected number of edges of type 'has' with 'hasDelTarget=true' found. Expected: 1 Actual: " + + runsEdgesWithDelTargetTrue.size(), + runsEdgesWithDelTargetTrue.size(), 1); + assertTrue("Result of query for 'runs' type edges with delTarget set to TRUE does not contain the expected results", + containsEdge(edge2, runsEdgesWithDelTargetTrue)); + } + + @Test + @Ignore // For now - pending some expected fixes to the Champ library. + public void updateEdgeTest() throws CrudException { + + // Create the source vertex for the edge. + Vertex sourceVertex = champDao.addVertex("vserver", MapBuilder.builder() + .withKeyValue("O/S", "Linux") + .withKeyValue("version", "6.5") + .withKeyValue("hostname", "kll0001") + .build()); + + // Create the target vertex for the edge. + Vertex destVertex = champDao.addVertex("VNF", MapBuilder.builder() + .withKeyValue("O/S", "Linux") + .withKeyValue("version", "6.5") + .withKeyValue("hostname", "kll0002") + .build()); + + // Now, create the edge itself. + Edge createdEdge = champDao.addEdge("has", + sourceVertex, + destVertex, + MapBuilder.builder() + .withKeyValue("key1", "value1") + .withKeyValue("key2", "value2") + .withKeyValue("key3", "value3") + .build()); + + // Make sure the Edge returned from the create method includes an id that we can + // use to retrieve it. + assertTrue("No valid id returned for the created edge", createdEdge.getId().isPresent()); + + // Retrieve the properties map for our edge and make some changes. + Map properties = createdEdge.getProperties(); + properties.put("key4", "value4"); + properties.remove("key2"); + + // Now update the edge with the new properties map. + Edge updatedEdge = champDao.updateEdge(createdEdge); + + assertTrue("Edge property list returned from DAO update operation did not contain all expected properties - expected: " + + properties.keySet() + " actual: " + updatedEdge.getProperties().keySet(), + updatedEdge.getProperties().keySet().containsAll(properties.keySet())); + + // Validate that the values assigned to the properties in the updated Edge + // match the ones that we provided when we created it. + for (String propertyKey : properties.keySet()) { + + assertTrue("Unexpected value for property '" + propertyKey + "' - Expected: " + + properties.get(propertyKey) + " Actual: " + + updatedEdge.getProperties().get(propertyKey), + updatedEdge.getProperties().get(propertyKey).equals(properties.get(propertyKey))); + } + + // Validate that the property that we removed is NOT in the set of properties from our + // updated edge. + // *** We will leave this validation commented out for now, as the Champ library actually + // merges update properties instead of replacing them... + assertFalse("Property 'key2' should no longer be associated with updated edge", + updatedEdge.getProperties().containsKey("key2")); + } + + @Test + public void deleteEdgeTest() throws CrudException { + + boolean deletedEdgeNotFound = false; + + // Create the source vertex for the edge. + Vertex sourceVertex = champDao.addVertex("vserver", MapBuilder.builder() + .withKeyValue("O/S", "Linux") + .withKeyValue("version", "6.5") + .withKeyValue("hostname", "kll0001") + .build()); + + // Create the target vertex for the edge. + Vertex destVertex = champDao.addVertex("VNF", MapBuilder.builder() + .withKeyValue("O/S", "Linux") + .withKeyValue("version", "6.5") + .withKeyValue("hostname", "kll0002") + .build()); + + // Now, create the edge itself. + Edge createdEdge = champDao.addEdge("has", + sourceVertex, + destVertex, + MapBuilder.builder() + .withKeyValue("key1", "value1") + .withKeyValue("key2", "value2") + .withKeyValue("key3", "value3") + .build()); + + // Verify that we can retrieve the edge that we just created. + Edge retrievedEdge = champDao.getEdge(createdEdge.getId().get(), "has"); + + // Now, delete it. + champDao.deleteEdge(createdEdge.getId().get(), "has"); + + // Try retrieving it again. This time we should not find it. + try { + champDao.getEdge(createdEdge.getId().get(), "has"); + } catch (CrudException e) { + + assertTrue(e.getMessage().contains("No edge with id")); + deletedEdgeNotFound = true; + } + + assertTrue("Should not have been able to retrieve deleted edge.", deletedEdgeNotFound); + } + + private boolean containsEdge(Edge anEdge, List edges) { + + for (Edge e : edges) { + if (e.getId().isPresent() && anEdge.getId().isPresent() && (e.getId().get().equals(anEdge.getId().get()))) { + return true; + } + + } + return false; + } + + public static class MapBuilder { + + private Map map; + + private MapBuilder() { + map = new HashMap(); + } + + public static MapBuilder builder() { + return new MapBuilder(); + } + + public MapBuilder withKeyValue(String key, Object value) { + map.put(key, value); + return this; + } + + public Map build() { + return map; + } + } } diff --git a/src/test/java/org/openecomp/schema/AaiResourceServiceTest.java b/src/test/java/org/openecomp/schema/AaiResourceServiceTest.java index fa80ba5..5aafb7c 100644 --- a/src/test/java/org/openecomp/schema/AaiResourceServiceTest.java +++ b/src/test/java/org/openecomp/schema/AaiResourceServiceTest.java @@ -3,28 +3,20 @@ package org.openecomp.schema; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import java.util.AbstractMap; -import java.util.AbstractSet; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import org.junit.Before; import org.junit.Test; import org.openecomp.aai.exceptions.AAIException; import org.openecomp.aai.serialization.db.EdgeProperty; -import org.openecomp.aai.serialization.db.EdgePropertyMap; import org.openecomp.aai.serialization.db.EdgeRule; import org.openecomp.aai.serialization.db.EdgeRules; import org.openecomp.aai.serialization.db.EdgeType; -import org.openecomp.aai.util.AAIConstants; import org.openecomp.crud.exception.CrudException; import org.openecomp.crud.service.AaiResourceService; import org.openecomp.crud.service.EdgePayload; -import com.google.gson.Gson; import com.google.gson.JsonElement; -import com.google.gson.JsonPrimitive; public class AaiResourceServiceTest { -- 2.16.6