One of the tests in db serializer is failing
since it is expecting the resource version to
be updated and resource version uses current timestamp
and the unit test is running so fast sometimes
as it is failing due to that so we put sleep
Issue-ID: AAI-215
Change-Id: I3c0f43dd999cbf518a8b5561f5f2c41540d6544c
Signed-off-by: Venkata Harish K Kajur <vk250x@att.com>
* 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
* 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
* 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.
* 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.
import java.util.List;
public class DbSerializerTest extends AAISetup {
import java.util.List;
public class DbSerializerTest extends AAISetup {
//to use, set thrown.expect to whatever your test needs
//this line establishes default of expecting no exception to be thrown
@Rule
//to use, set thrown.expect to whatever your test needs
//this line establishes default of expecting no exception to be thrown
@Rule
adminSpy = spy(dbEngine.asAdmin());
createGraph();
adminSpy = spy(dbEngine.asAdmin());
createGraph();
engine = new TitanDBEngine(queryStyle, type, loader);
dbser = new DBSerializer(Version.getLatest(), engine, introspectorFactoryType, "AAI-TEST");
}
engine = new TitanDBEngine(queryStyle, type, loader);
dbser = new DBSerializer(Version.getLatest(), engine, introspectorFactoryType, "AAI-TEST");
}
return exceptionMessage;
}
return exceptionMessage;
}
@Test
public void createNewVertexTest() throws AAIException {
engine.startTransaction();
@Test
public void createNewVertexTest() throws AAIException {
engine.startTransaction();
Introspector testObj = loader.introspectorFromName("generic-vnf");
Introspector testObj = loader.introspectorFromName("generic-vnf");
Vertex testVertex = dbser.createNewVertex(testObj);
Vertex fromGraph = engine.tx().traversal().V().has("aai-node-type","generic-vnf").toList().get(0);
assertEquals(testVertex.id(), fromGraph.id());
Vertex testVertex = dbser.createNewVertex(testObj);
Vertex fromGraph = engine.tx().traversal().V().has("aai-node-type","generic-vnf").toList().get(0);
assertEquals(testVertex.id(), fromGraph.id());
- public void touchStandardVertexPropertiesTest() throws AAIException {
+ public void touchStandardVertexPropertiesTest() throws AAIException, InterruptedException {
engine.startTransaction();
DBSerializer dbser2 = new DBSerializer(Version.getLatest(), engine, introspectorFactoryType, "AAI-TEST-2");
engine.startTransaction();
DBSerializer dbser2 = new DBSerializer(Version.getLatest(), engine, introspectorFactoryType, "AAI-TEST-2");
Graph graph = TinkerGraph.open();
Vertex vert = graph.addVertex("aai-node-type", "generic-vnf");
Graph graph = TinkerGraph.open();
Vertex vert = graph.addVertex("aai-node-type", "generic-vnf");
dbser.touchStandardVertexProperties(vert, true);
String resverStart = (String)vert.property(AAIProperties.RESOURCE_VERSION.toString()).value();
String lastModTimeStart = (String)vert.property(AAIProperties.LAST_MOD_TS.toString()).value();
dbser.touchStandardVertexProperties(vert, true);
String resverStart = (String)vert.property(AAIProperties.RESOURCE_VERSION.toString()).value();
String lastModTimeStart = (String)vert.property(AAIProperties.LAST_MOD_TS.toString()).value();
+
+ Thread.sleep(10); //bc the resource version is set based on current time in milliseconds,
+ //if this test runs through too fast the value may not change
+ //causing the test to fail. sleeping ensures a different value
+
dbser2.touchStandardVertexProperties(vert, false);
assertFalse(resverStart.equals((String)vert.property(AAIProperties.RESOURCE_VERSION.toString()).value()));
assertFalse(lastModTimeStart.equals((String)vert.property(AAIProperties.LAST_MOD_TS.toString()).value()));
assertEquals("AAI-TEST-2", (String)vert.property(AAIProperties.LAST_MOD_SOURCE_OF_TRUTH.toString()).value());
engine.rollback();
}
dbser2.touchStandardVertexProperties(vert, false);
assertFalse(resverStart.equals((String)vert.property(AAIProperties.RESOURCE_VERSION.toString()).value()));
assertFalse(lastModTimeStart.equals((String)vert.property(AAIProperties.LAST_MOD_TS.toString()).value()));
assertEquals("AAI-TEST-2", (String)vert.property(AAIProperties.LAST_MOD_SOURCE_OF_TRUTH.toString()).value());
engine.rollback();
}
@Test
public void verifyResourceVersion_SunnyDayTest() throws AAIException {
engine.startTransaction();
@Test
public void verifyResourceVersion_SunnyDayTest() throws AAIException {
engine.startTransaction();
assertTrue(dbser.verifyResourceVersion("delete", "vnfc", "abc", "abc", "vnfcs/vnfc/vnfcId"));
engine.rollback();
}
assertTrue(dbser.verifyResourceVersion("delete", "vnfc", "abc", "abc", "vnfcs/vnfc/vnfcId"));
engine.rollback();
}
@Test
public void verifyResourceVersion_CreateWithRVTest() throws AAIException {
engine.startTransaction();
@Test
public void verifyResourceVersion_CreateWithRVTest() throws AAIException {
engine.startTransaction();
thrown.expect(AAIException.class);
thrown.expectMessage("resource-version passed for create of generic-vnfs/generic-vnf/myid");
try {
thrown.expect(AAIException.class);
thrown.expectMessage("resource-version passed for create of generic-vnfs/generic-vnf/myid");
try {
@Test
public void verifyResourceVersion_MissingRVTest() throws AAIException {
engine.startTransaction();
@Test
public void verifyResourceVersion_MissingRVTest() throws AAIException {
engine.startTransaction();
thrown.expect(AAIException.class);
thrown.expectMessage("resource-version not passed for update of generic-vnfs/generic-vnf/myid");
try {
thrown.expect(AAIException.class);
thrown.expectMessage("resource-version not passed for update of generic-vnfs/generic-vnf/myid");
try {
@Test
public void verifyResourceVersion_MismatchRVTest() throws AAIException {
engine.startTransaction();
@Test
public void verifyResourceVersion_MismatchRVTest() throws AAIException {
engine.startTransaction();
thrown.expect(AAIException.class);
thrown.expectMessage("resource-version MISMATCH for update of generic-vnfs/generic-vnf/myid");
try {
thrown.expect(AAIException.class);
thrown.expectMessage("resource-version MISMATCH for update of generic-vnfs/generic-vnf/myid");
try {
@Test
public void trimClassNameTest() throws AAIException {
assertEquals("GenericVnf", dbser.trimClassName("GenericVnf"));
assertEquals("GenericVnf", dbser.trimClassName("org.onap.aai.GenericVnf"));
}
@Test
public void trimClassNameTest() throws AAIException {
assertEquals("GenericVnf", dbser.trimClassName("GenericVnf"));
assertEquals("GenericVnf", dbser.trimClassName("org.onap.aai.GenericVnf"));
}
@Test
public void getURIForVertexTest() throws AAIException, URISyntaxException, UnsupportedEncodingException {
engine.startTransaction();
@Test
public void getURIForVertexTest() throws AAIException, URISyntaxException, UnsupportedEncodingException {
engine.startTransaction();
Vertex cr = engine.tx().addVertex("aai-node-type", "cloud-region", "cloud-owner", "me", "cloud-region-id", "123");
Vertex ten = engine.tx().addVertex("aai-node-type", "tenant", "tenant-id", "453");
EdgeRules rules = EdgeRules.getInstance();
rules.addTreeEdge(engine.tx().traversal(), cr, ten);
Vertex cr = engine.tx().addVertex("aai-node-type", "cloud-region", "cloud-owner", "me", "cloud-region-id", "123");
Vertex ten = engine.tx().addVertex("aai-node-type", "tenant", "tenant-id", "453");
EdgeRules rules = EdgeRules.getInstance();
rules.addTreeEdge(engine.tx().traversal(), cr, ten);
URI compare = new URI("/cloud-infrastructure/cloud-regions/cloud-region/me/123/tenants/tenant/453");
assertEquals(compare, dbser.getURIForVertex(ten));
URI compare = new URI("/cloud-infrastructure/cloud-regions/cloud-region/me/123/tenants/tenant/453");
assertEquals(compare, dbser.getURIForVertex(ten));
cr.property("aai-node-type").remove();
URI compareFailure = new URI("/unknown-uri");
assertEquals(compareFailure, dbser.getURIForVertex(ten));
engine.rollback();
}
cr.property("aai-node-type").remove();
URI compareFailure = new URI("/unknown-uri");
assertEquals(compareFailure, dbser.getURIForVertex(ten));
engine.rollback();
}
@Test
public void getVertexPropertiesTest() throws AAIException, UnsupportedEncodingException {
engine.startTransaction();
@Test
public void getVertexPropertiesTest() throws AAIException, UnsupportedEncodingException {
engine.startTransaction();
Vertex cr = engine.tx().addVertex("aai-node-type", "cloud-region", "cloud-owner", "me", "cloud-region-id", "123");
Vertex cr = engine.tx().addVertex("aai-node-type", "cloud-region", "cloud-owner", "me", "cloud-region-id", "123");
Introspector crIntro = dbser.getVertexProperties(cr);
assertEquals("cloud-region", crIntro.getDbName());
assertEquals("me", crIntro.getValue("cloud-owner"));
assertEquals("123", crIntro.getValue("cloud-region-id"));
engine.rollback();
}
Introspector crIntro = dbser.getVertexProperties(cr);
assertEquals("cloud-region", crIntro.getDbName());
assertEquals("me", crIntro.getValue("cloud-owner"));
assertEquals("123", crIntro.getValue("cloud-region-id"));
engine.rollback();
}
@Test
public void setCachedURIsTest() throws AAIException, UnsupportedEncodingException, URISyntaxException {
engine.startTransaction();
@Test
public void setCachedURIsTest() throws AAIException, UnsupportedEncodingException, URISyntaxException {
engine.startTransaction();
Vertex cr = engine.tx().addVertex("aai-node-type", "cloud-region", "cloud-owner", "me", "cloud-region-id", "123");
Vertex ten = engine.tx().addVertex("aai-node-type", "tenant", "tenant-id", "453");
Vertex cr = engine.tx().addVertex("aai-node-type", "cloud-region", "cloud-owner", "me", "cloud-region-id", "123");
Vertex ten = engine.tx().addVertex("aai-node-type", "tenant", "tenant-id", "453");
- Vertex vs = engine.tx().addVertex("aai-node-type", "vserver", "vserver-id", "vs1",
- AAIProperties.AAI_URI.toString(),
+ Vertex vs = engine.tx().addVertex("aai-node-type", "vserver", "vserver-id", "vs1",
+ AAIProperties.AAI_URI.toString(),
"/cloud-infrastructure/cloud-regions/cloud-region/me/123/tenants/tenant/453/vservers/vserver/vs1");
EdgeRules rules = EdgeRules.getInstance();
rules.addTreeEdge(engine.tx().traversal(), cr, ten);
rules.addTreeEdge(engine.tx().traversal(), ten, vs);
"/cloud-infrastructure/cloud-regions/cloud-region/me/123/tenants/tenant/453/vservers/vserver/vs1");
EdgeRules rules = EdgeRules.getInstance();
rules.addTreeEdge(engine.tx().traversal(), cr, ten);
rules.addTreeEdge(engine.tx().traversal(), ten, vs);
List<Vertex> vertices = new ArrayList<Vertex>(Arrays.asList(cr, ten, vs));
Introspector crIn = dbser.getVertexProperties(cr);
Introspector tenIn = dbser.getVertexProperties(ten);
Introspector vsIn = dbser.getVertexProperties(vs);
List<Introspector> intros = new ArrayList<Introspector>(Arrays.asList(crIn, tenIn, vsIn));
List<Vertex> vertices = new ArrayList<Vertex>(Arrays.asList(cr, ten, vs));
Introspector crIn = dbser.getVertexProperties(cr);
Introspector tenIn = dbser.getVertexProperties(ten);
Introspector vsIn = dbser.getVertexProperties(vs);
List<Introspector> intros = new ArrayList<Introspector>(Arrays.asList(crIn, tenIn, vsIn));
dbser.setCachedURIs(vertices, intros);
dbser.setCachedURIs(vertices, intros);
-
- assertEquals("/cloud-infrastructure/cloud-regions/cloud-region/me/123",
+
+ assertEquals("/cloud-infrastructure/cloud-regions/cloud-region/me/123",
(String)cr.property(AAIProperties.AAI_URI.toString()).value());
(String)cr.property(AAIProperties.AAI_URI.toString()).value());
- assertEquals("/cloud-infrastructure/cloud-regions/cloud-region/me/123/tenants/tenant/453",
+ assertEquals("/cloud-infrastructure/cloud-regions/cloud-region/me/123/tenants/tenant/453",
(String)ten.property(AAIProperties.AAI_URI.toString()).value());
assertEquals("/cloud-infrastructure/cloud-regions/cloud-region/me/123/tenants/tenant/453/vservers/vserver/vs1",
(String)vs.property(AAIProperties.AAI_URI.toString()).value());
engine.rollback();
}
(String)ten.property(AAIProperties.AAI_URI.toString()).value());
assertEquals("/cloud-infrastructure/cloud-regions/cloud-region/me/123/tenants/tenant/453/vservers/vserver/vs1",
(String)vs.property(AAIProperties.AAI_URI.toString()).value());
engine.rollback();
}
@Test
public void getEdgeBetweenTest() throws AAIException {
engine.startTransaction();
@Test
public void getEdgeBetweenTest() throws AAIException {
engine.startTransaction();
Vertex cr = engine.tx().addVertex("aai-node-type", "cloud-region", "cloud-owner", "me", "cloud-region-id", "123");
Vertex ten = engine.tx().addVertex("aai-node-type", "tenant", "tenant-id", "453");
EdgeRules rules = EdgeRules.getInstance();
rules.addTreeEdge(engine.tx().traversal(), cr, ten);
Vertex cr = engine.tx().addVertex("aai-node-type", "cloud-region", "cloud-owner", "me", "cloud-region-id", "123");
Vertex ten = engine.tx().addVertex("aai-node-type", "tenant", "tenant-id", "453");
EdgeRules rules = EdgeRules.getInstance();
rules.addTreeEdge(engine.tx().traversal(), cr, ten);
Edge e = dbser.getEdgeBetween(EdgeType.TREE, ten, cr);
assertEquals("has", e.label());
engine.rollback();
}
Edge e = dbser.getEdgeBetween(EdgeType.TREE, ten, cr);
assertEquals("has", e.label());
engine.rollback();
}
@Test
public void deleteEdgeTest() throws AAIException, UnsupportedEncodingException {
engine.startTransaction();
@Test
public void deleteEdgeTest() throws AAIException, UnsupportedEncodingException {
engine.startTransaction();
Vertex gvnf = engine.tx().addVertex("aai-node-type","generic-vnf","vnf-id","myvnf");
Vertex vnfc = engine.tx().addVertex("aai-node-type","vnfc","vnfc-name","a-name");
EdgeRules rules = EdgeRules.getInstance();
rules.addEdge(engine.tx().traversal(), gvnf, vnfc);
Vertex gvnf = engine.tx().addVertex("aai-node-type","generic-vnf","vnf-id","myvnf");
Vertex vnfc = engine.tx().addVertex("aai-node-type","vnfc","vnfc-name","a-name");
EdgeRules rules = EdgeRules.getInstance();
rules.addEdge(engine.tx().traversal(), gvnf, vnfc);
Introspector relData = loader.introspectorFromName("relationship-data");
relData.setValue("relationship-key", "vnfc.vnfc-name");
relData.setValue("relationship-value", "a-name");
Introspector relData = loader.introspectorFromName("relationship-data");
relData.setValue("relationship-key", "vnfc.vnfc-name");
relData.setValue("relationship-value", "a-name");
relationship.setValue("related-to", "vnfc");
relationship.setValue("related-link", "/network/vnfcs/vnfc/a-name");
relationship.setValue("relationship-data",relData);
relationship.setValue("related-to", "vnfc");
relationship.setValue("related-link", "/network/vnfcs/vnfc/a-name");
relationship.setValue("relationship-data",relData);
assertTrue(dbser.deleteEdge(relationship, gvnf));
assertTrue(dbser.deleteEdge(relationship, gvnf));
assertFalse(engine.tx().traversal().V(gvnf).both("uses").hasNext());
assertFalse(engine.tx().traversal().V(vnfc).both("uses").hasNext());
engine.rollback();
}
assertFalse(engine.tx().traversal().V(gvnf).both("uses").hasNext());
assertFalse(engine.tx().traversal().V(vnfc).both("uses").hasNext());
engine.rollback();
}
@Test
public void createEdgeTest() throws AAIException, UnsupportedEncodingException {
engine.startTransaction();
@Test
public void createEdgeTest() throws AAIException, UnsupportedEncodingException {
engine.startTransaction();
Vertex gvnf = engine.tx().addVertex("aai-node-type","generic-vnf","vnf-id","myvnf");
Vertex vnfc = engine.tx().addVertex("aai-node-type","vnfc","vnfc-name","a-name");
Vertex gvnf = engine.tx().addVertex("aai-node-type","generic-vnf","vnf-id","myvnf");
Vertex vnfc = engine.tx().addVertex("aai-node-type","vnfc","vnfc-name","a-name");
//sunny day case
Introspector relData = loader.introspectorFromName("relationship-data");
relData.setValue("relationship-key", "vnfc.vnfc-name");
//sunny day case
Introspector relData = loader.introspectorFromName("relationship-data");
relData.setValue("relationship-key", "vnfc.vnfc-name");
relationship.setValue("related-to", "vnfc");
relationship.setValue("related-link", "/network/vnfcs/vnfc/a-name");
relationship.setValue("relationship-data",relData);
relationship.setValue("related-to", "vnfc");
relationship.setValue("related-link", "/network/vnfcs/vnfc/a-name");
relationship.setValue("relationship-data",relData);
assertTrue(dbser.createEdge(relationship, gvnf));
assertTrue(engine.tx().traversal().V(gvnf).both("uses").hasNext());
assertTrue(engine.tx().traversal().V(vnfc).both("uses").hasNext());
assertTrue(dbser.createEdge(relationship, gvnf));
assertTrue(engine.tx().traversal().V(gvnf).both("uses").hasNext());
assertTrue(engine.tx().traversal().V(vnfc).both("uses").hasNext());
//rainy day case, edge to nonexistant object
Introspector relData2 = loader.introspectorFromName("relationship-data");
relData2.setValue("relationship-key", "vnfc.vnfc-name");
//rainy day case, edge to nonexistant object
Introspector relData2 = loader.introspectorFromName("relationship-data");
relData2.setValue("relationship-key", "vnfc.vnfc-name");
relationship2.setValue("related-to", "vnfc");
relationship2.setValue("related-link", "/network/vnfcs/vnfc/b-name");
relationship2.setValue("relationship-data",relData2);
relationship2.setValue("related-to", "vnfc");
relationship2.setValue("related-link", "/network/vnfcs/vnfc/b-name");
relationship2.setValue("relationship-data",relData2);
thrown.expect(AAIException.class);
thrown.expectMessage("Node of type vnfc. Could not find object at: /network/vnfcs/vnfc/b-name");
try {
thrown.expect(AAIException.class);
thrown.expectMessage("Node of type vnfc. Could not find object at: /network/vnfcs/vnfc/b-name");
try {
@Test
public void serializeSingleVertexTopLevelTest() throws AAIException, UnsupportedEncodingException {
engine.startTransaction();
@Test
public void serializeSingleVertexTopLevelTest() throws AAIException, UnsupportedEncodingException {
engine.startTransaction();
Introspector gvnf = loader.introspectorFromName("generic-vnf");
Vertex gvnfVert = dbser.createNewVertex(gvnf);
Introspector gvnf = loader.introspectorFromName("generic-vnf");
Vertex gvnfVert = dbser.createNewVertex(gvnf);
gvnf.setValue("vnf-id", "myvnf");
dbser.serializeSingleVertex(gvnfVert, gvnf, "test");
assertTrue(engine.tx().traversal().V().has("aai-node-type","generic-vnf").has("vnf-id","myvnf").hasNext());
engine.rollback();
}
gvnf.setValue("vnf-id", "myvnf");
dbser.serializeSingleVertex(gvnfVert, gvnf, "test");
assertTrue(engine.tx().traversal().V().has("aai-node-type","generic-vnf").has("vnf-id","myvnf").hasNext());
engine.rollback();
}
@Test
public void serializeSingleVertexChildTest() throws AAIException, UnsupportedEncodingException {
engine.startTransaction();
@Test
public void serializeSingleVertexChildTest() throws AAIException, UnsupportedEncodingException {
engine.startTransaction();
Vertex cr = engine.tx().addVertex("aai-node-type", "cloud-region", "cloud-owner", "me", "cloud-region-id", "123");
Introspector tenIn = loader.introspectorFromName("tenant");
Vertex ten = dbser.createNewVertex(tenIn);
EdgeRules rules = EdgeRules.getInstance();
rules.addTreeEdge(engine.tx().traversal(), cr, ten);
Vertex cr = engine.tx().addVertex("aai-node-type", "cloud-region", "cloud-owner", "me", "cloud-region-id", "123");
Introspector tenIn = loader.introspectorFromName("tenant");
Vertex ten = dbser.createNewVertex(tenIn);
EdgeRules rules = EdgeRules.getInstance();
rules.addTreeEdge(engine.tx().traversal(), cr, ten);
tenIn.setValue("tenant-id", "453");
tenIn.setValue("tenant-name", "mytenant");
dbser.serializeSingleVertex(ten, tenIn, "test");
tenIn.setValue("tenant-id", "453");
tenIn.setValue("tenant-name", "mytenant");
dbser.serializeSingleVertex(ten, tenIn, "test");
assertTrue(engine.tx().traversal().V().has("aai-node-type","tenant").has("tenant-id","453").has("tenant-name","mytenant").hasNext());
engine.rollback();
}
assertTrue(engine.tx().traversal().V().has("aai-node-type","tenant").has("tenant-id","453").has("tenant-name","mytenant").hasNext());
engine.rollback();
}
* 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
* 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
* 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.
* 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.