diff options
Diffstat (limited to 'aai-resources/src/test/java')
59 files changed, 2203 insertions, 5641 deletions
diff --git a/aai-resources/src/test/java/org/onap/aai/AAISetup.java b/aai-resources/src/test/java/org/onap/aai/AAISetup.java index 1ae7f51..a93127b 100644 --- a/aai-resources/src/test/java/org/onap/aai/AAISetup.java +++ b/aai-resources/src/test/java/org/onap/aai/AAISetup.java @@ -23,21 +23,81 @@ import static org.junit.Assert.assertNotNull; import java.io.IOException; import java.io.InputStream; +import java.util.Map; import org.apache.commons.io.IOUtils; import org.junit.BeforeClass; -import org.onap.aai.serialization.queryformats.QueryFormatTestHelper; -import org.onap.aai.util.AAIConstants; +import org.onap.aai.config.SpringContextAware; +import org.onap.aai.config.IntrospectionConfig; +import org.onap.aai.introspection.LoaderFactory; +import org.onap.aai.logging.LoggingContext; +import org.onap.aai.nodes.NodeIngestor; +import org.onap.aai.config.RestBeanConfig; +import org.onap.aai.rest.db.HttpEntry; +import org.onap.aai.setup.SchemaLocationsBean; +import org.onap.aai.setup.SchemaVersion; +import org.onap.aai.setup.SchemaVersions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.onap.aai.introspection.MoxyLoader; +import org.junit.ClassRule; +import org.junit.Rule; +import org.onap.aai.edges.EdgeIngestor; +import org.onap.aai.setup.AAIConfigTranslator; +import org.onap.aai.serialization.db.EdgeSerializer; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.rules.SpringClassRule; +import org.springframework.test.context.junit4.rules.SpringMethodRule; + +@ContextConfiguration(classes = { + SchemaLocationsBean.class, + SchemaVersions.class, + AAIConfigTranslator.class, + NodeIngestor.class, + EdgeIngestor.class, + EdgeSerializer.class, + SpringContextAware.class, + IntrospectionConfig.class, + RestBeanConfig.class +}) +@TestPropertySource(properties = { + "schema.uri.base.path = /aai" , + "schema.ingest.file = src/test/resources/application-test.properties" +}) public abstract class AAISetup { + @Autowired + protected NodeIngestor nodeIngestor; + + @Autowired + protected LoaderFactory loaderFactory; + + @Autowired + protected Map<SchemaVersion, MoxyLoader> moxyLoaderInstance; + + @Autowired + protected HttpEntry traversalHttpEntry; + + @Autowired + protected HttpEntry traversalUriHttpEntry; + + @Autowired + protected SchemaVersions schemaVersions; + + @ClassRule + public static final SpringClassRule springClassRule = new SpringClassRule(); + + @Rule + public final SpringMethodRule springMethodRule = new SpringMethodRule(); + @BeforeClass public static void setupBundleconfig() throws Exception { System.setProperty("AJSC_HOME", "./"); System.setProperty("BUNDLECONFIG_DIR", "src/main/resources/"); -// QueryFormatTestHelper.setFinalStatic(AAIConstants.class.getField("AAI_HOME_ETC_OXM"), "bundleconfig-local/etc/oxm/"); + LoggingContext.init(); } - + public String getPayload(String filename) throws IOException { InputStream inputStream = getClass() diff --git a/aai-resources/src/test/java/org/onap/aai/HttpTestUtil.java b/aai-resources/src/test/java/org/onap/aai/HttpTestUtil.java new file mode 100644 index 0000000..6b49b78 --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/HttpTestUtil.java @@ -0,0 +1,377 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import org.javatuples.Pair; +import org.mockito.Mockito; +import org.onap.aai.config.SpringContextAware; +import org.onap.aai.dbmap.DBConnectionType; +import org.onap.aai.exceptions.AAIException; +import org.onap.aai.introspection.Introspector; +import org.onap.aai.introspection.Loader; +import org.onap.aai.setup.SchemaVersion; +import org.onap.aai.setup.SchemaVersions; +import org.onap.aai.parsers.query.QueryParser; +import org.onap.aai.parsers.uri.URIToObject; +import org.onap.aai.rest.db.DBRequest; +import org.onap.aai.rest.db.HttpEntry; +import org.onap.aai.restcore.HttpMethod; +import org.onap.aai.restcore.RESTAPI; +import org.onap.aai.serialization.engines.TransactionalGraphEngine; + +import javax.ws.rs.core.*; +import java.io.UnsupportedEncodingException; +import java.net.URI; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import static org.mockito.Matchers.anyObject; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.when; + +public class HttpTestUtil extends RESTAPI { + + private static final EELFLogger logger = EELFManager.getInstance().getLogger(HttpTestUtil.class); + + protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json"); + + private static final String EMPTY = ""; + + protected HttpHeaders httpHeaders; + protected UriInfo uriInfo; + + protected MultivaluedMap<String, String> headersMultiMap; + protected MultivaluedMap<String, String> queryParameters; + + protected List<String> aaiRequestContextList; + protected List<MediaType> outputMediaTypes; + protected SchemaVersions schemaVersions; + + public void init(){ + + httpHeaders = Mockito.mock(HttpHeaders.class); + uriInfo = Mockito.mock(UriInfo.class); + + headersMultiMap = new MultivaluedHashMap<>(); + queryParameters = Mockito.spy(new MultivaluedHashMap<>()); + + headersMultiMap.add("X-FromAppId", "JUNIT"); + headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString()); + headersMultiMap.add("Real-Time", "true"); + headersMultiMap.add("Accept", "application/json"); + headersMultiMap.add("aai-request-context", ""); + + outputMediaTypes = new ArrayList<>(); + outputMediaTypes.add(APPLICATION_JSON); + + aaiRequestContextList = new ArrayList<>(); + aaiRequestContextList.add(""); + + when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap); + when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes); + + when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList); + + when(uriInfo.getQueryParameters()).thenReturn(queryParameters); + when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters); + + doReturn(null).when(queryParameters).remove(anyObject()); + when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON); + schemaVersions = SpringContextAware.getBean(SchemaVersions.class); + } + + public Response doPut(String uri, String payload) throws AAIException { + + this.init(); + Response response = null; + boolean success = true; + TransactionalGraphEngine dbEngine = null; + + try { + + uri = uri.replaceAll("/aai/", ""); + logger.info("Starting the put request for the uri {} with payload {}", uri, payload); + + String [] arr = uri.split("/"); + + SchemaVersion version = null; + + if(arr != null && arr.length > 1){ + if(arr[0].matches("^v\\d+")){ + version = new SchemaVersion(arr[0]); + uri = uri.replaceAll("^v\\d+", ""); + } + } + + if(version == null){ + version = schemaVersions.getDefaultVersion(); + } + Mockito.when(uriInfo.getPath()).thenReturn(uri); + + DBConnectionType type = DBConnectionType.REALTIME; + //HttpEntry httpEntry = new HttpEntry(version, ModelType.MOXY, QueryStyle.TRAVERSAL, type); + HttpEntry resourceHttpEntry = SpringContextAware.getBean("traversalHttpEntry", HttpEntry.class); + resourceHttpEntry.setHttpEntryProperties(version, type); + Loader loader = resourceHttpEntry.getLoader(); + dbEngine = resourceHttpEntry.getDbEngine(); + + URI uriObject = UriBuilder.fromPath(uri).build(); + URIToObject uriToObject = new URIToObject(loader, uriObject); + + String objType = uriToObject.getEntityName(); + QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject); + + + logger.info("Unmarshalling the payload to this {}", objType); + + Introspector obj; + HttpMethod httpMethod; + if(uri.contains("/relationship-list/relationship")){ + obj = loader.unmarshal("relationship", payload, org.onap.aai.restcore.MediaType.getEnum("application/json")); + httpMethod = HttpMethod.PUT_EDGE; + } else { + obj = loader.unmarshal(objType, payload, org.onap.aai.restcore.MediaType.getEnum("application/json")); + httpMethod = HttpMethod.PUT; + this.validateIntrospector(obj, loader, uriObject, httpMethod); + } + + + DBRequest dbRequest = + new DBRequest.Builder(httpMethod, uriObject, uriQuery, obj, httpHeaders, uriInfo, "JUNIT-TRANSACTION") + .rawRequestContent(payload).build(); + + List<DBRequest> dbRequestList = new ArrayList<>(); + dbRequestList.add(dbRequest); + + Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = resourceHttpEntry.process(dbRequestList, "JUNIT"); + response = responsesTuple.getValue1().get(0).getValue1(); + + } catch (AAIException e) { + response = this.consumerExceptionResponseGenerator(httpHeaders, uriInfo, HttpMethod.PUT, e); + success = false; + } catch(Exception e){ + AAIException ex = new AAIException("AAI_4000", e); + response = this.consumerExceptionResponseGenerator(httpHeaders, uriInfo, HttpMethod.PUT, ex); + success = false; + } finally { + if(success){ + if(response != null){ + if((response.getStatus() / 100) == 2){ + logger.info("Successfully completed the PUT request with status {} and committing it to DB", response.getStatus()); + } else { + logFailure(HttpMethod.PUT, response); + } + } + dbEngine.commit(); + } else { + if(response != null) { + logFailure(HttpMethod.PUT, response); + } + dbEngine.rollback(); + } + } + + return response; + } + + public Response doGet(String uri) throws UnsupportedEncodingException, AAIException { + + this.init(); + Response response = null; + boolean success = true; + TransactionalGraphEngine dbEngine = null; + + try { + + uri = uri.replaceAll("/aai/", ""); + logger.info("Starting the GET request for the uri {} with depth {}", uri, "all"); + + String [] arr = uri.split("/"); + + SchemaVersion version = null; + + if(arr != null && arr.length > 1){ + if(arr[0].matches("^v\\d+")){ + version = new SchemaVersion(arr[0]); + uri = uri.replaceAll("^v\\d+", ""); + } + } + + if(version == null){ + version = schemaVersions.getDefaultVersion(); + } + + DBConnectionType type = DBConnectionType.REALTIME; + // HttpEntry httpEntry = new HttpEntry(version, ModelType.MOXY, QueryStyle.TRAVERSAL, type); + HttpEntry resourceHttpEntry = SpringContextAware.getBean("traversalHttpEntry", HttpEntry.class); + resourceHttpEntry.setHttpEntryProperties(version, type); + Loader loader = resourceHttpEntry.getLoader(); + dbEngine = resourceHttpEntry.getDbEngine(); + + URI uriObject = UriBuilder.fromPath(uri).build(); + URIToObject uriToObject = new URIToObject(loader, uriObject); + + String objType = uriToObject.getEntityName(); + queryParameters.add("depth", "all"); + QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject, queryParameters); + + Mockito.when(uriInfo.getPath()).thenReturn(uri); + + logger.info("Unmarshalling the payload to this {}", objType); + + Introspector obj = loader.introspectorFromName(objType); + + DBRequest dbRequest = + new DBRequest.Builder(HttpMethod.GET, uriObject, uriQuery, obj, httpHeaders, uriInfo, "JUNIT-TRANSACTION") + .build(); + + List<DBRequest> dbRequestList = new ArrayList<>(); + dbRequestList.add(dbRequest); + + Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = resourceHttpEntry.process(dbRequestList, "JUNIT"); + response = responsesTuple.getValue1().get(0).getValue1(); + + } catch (AAIException e) { + response = this.consumerExceptionResponseGenerator(httpHeaders, uriInfo, HttpMethod.PUT, e); + success = false; + } catch(Exception e){ + AAIException ex = new AAIException("AAI_4000", e); + response = this.consumerExceptionResponseGenerator(httpHeaders, uriInfo, HttpMethod.PUT, ex); + success = false; + } finally { + if(success){ + if(response != null){ + if((response.getStatus() / 100) == 2){ + logger.info("Successfully completed the GET request with status {} and committing it to DB", response.getStatus()); + } else { + logFailure(HttpMethod.GET, response); + } + } + dbEngine.commit(); + } else { + logFailure(HttpMethod.GET, response); + dbEngine.rollback(); + } + } + + return response; + } + + public Response doDelete(String uri, String resourceVersion) throws UnsupportedEncodingException, AAIException { + + this.init(); + Response response = null; + boolean success = true; + TransactionalGraphEngine dbEngine = null; + + try { + + uri = uri.replaceAll("/aai/", ""); + logger.info("Starting the delete request for the uri {} with resource version {}", uri, resourceVersion); + + String [] arr = uri.split("/"); + + SchemaVersion version = null; + + if(arr != null && arr.length > 1){ + if(arr[0].matches("^v\\d+")){ + version = new SchemaVersion(arr[0]); + if(!uri.contains("relationship-list/relationship")){ + uri = uri.replaceAll("^v\\d+", ""); + } + } + } + + if(version == null){ + version = schemaVersions.getDefaultVersion(); + } + + Mockito.when(uriInfo.getPath()).thenReturn(uri); + DBConnectionType type = DBConnectionType.REALTIME; + // HttpEntry httpEntry = new HttpEntry(version, ModelType.MOXY, QueryStyle.TRAVERSAL, type); + HttpEntry resourceHttpEntry = SpringContextAware.getBean("traversalHttpEntry", HttpEntry.class); + resourceHttpEntry.setHttpEntryProperties(version, type); + Loader loader = resourceHttpEntry.getLoader(); + dbEngine = resourceHttpEntry.getDbEngine(); + + URI uriObject = UriBuilder.fromPath(uri).build(); + URIToObject uriToObject = new URIToObject(loader, uriObject); + + String objType = uriToObject.getEntityName(); + queryParameters.add("resource-version", resourceVersion); + QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject, queryParameters); + + logger.info("Unmarshalling the payload to this {}", objType); + + Introspector obj; + HttpMethod httpMethod; + if(uri.contains("/relationship-list/relationship")){ + obj = loader.introspectorFromName("relationship"); + httpMethod = HttpMethod.DELETE_EDGE; + } else { + obj = loader.introspectorFromName(objType); + httpMethod = HttpMethod.DELETE; + } + + DBRequest dbRequest = + new DBRequest.Builder(httpMethod, uriObject, uriQuery, obj, httpHeaders, uriInfo, "JUNIT-TRANSACTION") + .build(); + + List<DBRequest> dbRequestList = new ArrayList<>(); + dbRequestList.add(dbRequest); + + Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = resourceHttpEntry.process(dbRequestList, "JUNIT"); + response = responsesTuple.getValue1().get(0).getValue1(); + + } catch (AAIException e) { + response = this.consumerExceptionResponseGenerator(httpHeaders, uriInfo, HttpMethod.PUT, e); + success = false; + } catch(Exception e){ + AAIException ex = new AAIException("AAI_4000", e); + response = this.consumerExceptionResponseGenerator(httpHeaders, uriInfo, HttpMethod.PUT, ex); + success = false; + } finally { + if(success){ + if(response != null){ + if((response.getStatus() / 100) == 2){ + logger.info("Successfully completed the DELETE request with status {} and committing it to DB", response.getStatus()); + } else { + logFailure(HttpMethod.DELETE, response); + } + } + dbEngine.commit(); + } else { + logFailure(HttpMethod.DELETE, response); + dbEngine.rollback(); + } + } + + return response; + } + + public static void logFailure(HttpMethod httpMethod, Response response){ + logger.info("Unable to complete the {} request with status {} and rolling back", httpMethod.toString(), response.getStatus()); + logger.info("Response body of failed request {}", response.getEntity()); + + } +} diff --git a/aai-resources/src/test/java/org/onap/aai/IncreaseNodesToolTest.java b/aai-resources/src/test/java/org/onap/aai/IncreaseNodesToolTest.java new file mode 100644 index 0000000..5d91fb3 --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/IncreaseNodesToolTest.java @@ -0,0 +1,88 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai; + +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; +import org.janusgraph.core.JanusGraph; +import org.janusgraph.core.JanusGraphTransaction; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.apache.tinkerpop.gremlin.structure.Vertex; + +import static org.mockito.Mockito.*; + +public class IncreaseNodesToolTest extends AAISetup { + + @Mock + JanusGraphTransaction janusGraphtransaction; + + @Mock + JanusGraph janusGraph; + + @Mock + GraphTraversalSource graphTraversalSource; + + @Mock + Vertex mockVertex; + + @Mock + GraphTraversal<org.apache.tinkerpop.gremlin.structure.Vertex, org.apache.tinkerpop.gremlin.structure.Vertex> graphTraversalVertex; + + private IncreaseNodesTool increaseNodesTool; + + + String [] args = {"-numberOfNodes", "5" ,"-nodeType", "pserver", "-uri", "/cloud-infrastructure/pservers/pserver/"}; + + @Before + public void setup(){ + increaseNodesTool = new IncreaseNodesTool(loaderFactory, schemaVersions); + } + + @Test + public void addVertex() throws Exception { + + when(janusGraph.newTransaction()).thenReturn(janusGraphtransaction); + when(janusGraphtransaction.traversal()).thenReturn(graphTraversalSource); + when(graphTraversalSource.addV()).thenReturn(graphTraversalVertex); + when(graphTraversalVertex.next()).thenReturn(mockVertex); + increaseNodesTool.run(janusGraph,args); + + Mockito.verify(janusGraph).newTransaction(); + + Mockito.verify(graphTraversalSource,times(5)).addV(); + } + + @Test + public void addVertexfFail() throws Exception { + + when(janusGraph.newTransaction()).thenReturn(janusGraphtransaction); + when(janusGraphtransaction.traversal()).thenThrow(new RuntimeException()); + + increaseNodesTool.run(janusGraph,args); + + Mockito.verify(janusGraphtransaction).rollback(); + } + +} + diff --git a/aai-resources/src/test/java/org/onap/aai/PayloadUtil.java b/aai-resources/src/test/java/org/onap/aai/PayloadUtil.java new file mode 100644 index 0000000..9c99163 --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/PayloadUtil.java @@ -0,0 +1,98 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai; + +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static org.junit.Assert.assertNotNull; + +public class PayloadUtil { + + private static final Map<String, String> cache = new HashMap<>(); + private static final Pattern TEMPLATE_PATTERN = Pattern.compile("\\$\\{[^}]+\\}"); + + public static String getResourcePayload(String fileName) throws IOException { + + InputStream inputStream = PayloadUtil.class.getClassLoader().getResourceAsStream("payloads/resource/" + fileName); + + String message = String.format("Unable to find the %s in src/test/resources", fileName); + assertNotNull(message, inputStream); + + String resource = IOUtils.toString(inputStream); + + inputStream.close(); + return resource; + } + + public static String getTemplatePayload(String fileName, Map<String, String> templateValueMap) throws Exception { + + InputStream inputStream = PayloadUtil.class.getClassLoader().getResourceAsStream("payloads/templates/" + fileName); + + String message = String.format("Unable to find the %s in src/test/resources", fileName); + assertNotNull(message, inputStream); + + String resource; + + if(cache.containsKey(fileName)){ + resource = cache.get(fileName); + } else { + resource = IOUtils.toString(inputStream); + cache.put(fileName, resource); + } + + Matcher matcher = TEMPLATE_PATTERN.matcher(resource); + + String resourceWithTemplateValues = resource; + + while(matcher.find()){ + int start = matcher.start() + 2; + int end = matcher.end() - 1; + String key = resource.substring(start, end); + if(templateValueMap.containsKey(key)){ + resourceWithTemplateValues = resourceWithTemplateValues.replaceAll("\\$\\{" + key +"\\}", templateValueMap.get(key)); + } else { + throw new RuntimeException("Unable to find the key value pair in map for the template processing for key " + key); + } + } + + inputStream.close(); + return resourceWithTemplateValues; + } + + public static String getPayload(String fileName) throws IOException { + + InputStream inputStream = PayloadUtil.class.getClassLoader().getResourceAsStream("payloads/" + fileName); + + String message = String.format("Unable to find the %s in src/test/resources/payloads/", fileName); + assertNotNull(message, inputStream); + + String resource = IOUtils.toString(inputStream); + + inputStream.close(); + return resource; + } +} diff --git a/aai-resources/src/test/java/org/onap/aai/dbgen/DupeToolTest.java b/aai-resources/src/test/java/org/onap/aai/dbgen/DupeToolTest.java deleted file mode 100644 index e9e95eb..0000000 --- a/aai-resources/src/test/java/org/onap/aai/dbgen/DupeToolTest.java +++ /dev/null @@ -1,148 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.dbgen; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import org.janusgraph.core.JanusGraphTransaction; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.AAIGraph; -import org.onap.aai.serialization.db.EdgeRules; - -import static org.junit.Assert.*; - - -public class DupeToolTest extends AAISetup { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(DupeToolTest.class); - - private DupeTool dupeTool; - - @Before - public void setup(){ - dupeTool = new DupeTool(); - dupeTool.SHOULD_EXIT_VM = false; - createGraph(); - } - - private void createGraph() { - JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction(); - - EdgeRules edgeRules = EdgeRules.getInstance(); - - boolean success = true; - - try { - - GraphTraversalSource g = transaction.traversal(); - - Vertex cloudRegionVertex = g.addV() - .property("aai-node-type", "cloud-region") - .property("cloud-owner", "test-owner") - .property("cloud-region-id", "test-region") - .property("source-of-truth", "JUNIT") - .next(); - - Vertex tenantVertex = g.addV() - .property("aai-node-type", "tenant") - .property("tenant-id", "test-tenant") - .property("source-of-truth", "JUNIT") - .next(); - - Vertex pserverVertex = g.addV() - .property("aai-node-type", "pserver") - .property("hostname", "test-pserver") - .property("in-maint", false) - .property("source-of-truth", "JUNIT") - .next(); - - for(int i = 0; i < 100; ++i){ - g.addV() - .property("aai-node-type", "pserver") - .property("hostname", "test-pserver") - .property("in-maint", false) - .property("source-of-truth", "JUNIT") - .next(); - } - - edgeRules.addTreeEdge(g, cloudRegionVertex, tenantVertex); - edgeRules.addEdge(g, cloudRegionVertex, pserverVertex); - - } catch(Exception ex){ - success = false; - logger.error("Unable to create the vertexes", ex); - } finally { - if(success){ - transaction.commit(); - } else { - transaction.rollback(); - fail("Unable to setup the graph"); - } - } - } - - @Test - public void testDupeTool(){ - - String[] args = { - "-userId", "testuser", - "-nodeType", "pserver", - "-timeWindowMinutes", "30", - "-autoFix", - "-maxFix", "30", - "-sleepMinutes", "0" - }; - - dupeTool.main(args); - } - - @After - public void tearDown(){ - - JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction(); - boolean success = true; - - try { - - GraphTraversalSource g = transaction.traversal(); - - g.V().has("source-of-truth", "JUNIT") - .toList() - .forEach(v -> v.remove()); - - } catch(Exception ex){ - success = false; - logger.error("Unable to remove the vertexes", ex); - } finally { - if(success){ - transaction.commit(); - } else { - transaction.rollback(); - fail("Unable to teardown the graph"); - } - } - - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/dbgen/ForceDeleteToolTest.java b/aai-resources/src/test/java/org/onap/aai/dbgen/ForceDeleteToolTest.java deleted file mode 100644 index f5b1da4..0000000 --- a/aai-resources/src/test/java/org/onap/aai/dbgen/ForceDeleteToolTest.java +++ /dev/null @@ -1,208 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.dbgen; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import org.janusgraph.core.JanusGraphTransaction; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Edge; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.After; -import org.junit.Before; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.AAIGraph; -import org.onap.aai.serialization.db.EdgeRules; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.util.List; - -import static org.junit.Assert.fail; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class ForceDeleteToolTest extends AAISetup { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(ForceDeleteToolTest.class); - - private ForceDeleteTool deleteTool; - - private Vertex cloudRegionVertex; - @Before - public void setup(){ - deleteTool = new ForceDeleteTool(); - deleteTool.SHOULD_EXIT_VM = false; - JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction(); - - EdgeRules edgeRules = EdgeRules.getInstance(); - - boolean success = true; - - try { - - GraphTraversalSource g = transaction.traversal(); - - cloudRegionVertex = g.addV() - .property("aai-node-type", "cloud-region") - .property("cloud-owner", "test-owner") - .property("cloud-region-id", "test-region") - .property("source-of-truth", "JUNIT") - .next(); - - Vertex tenantVertex = g.addV() - .property("aai-node-type", "tenant") - .property("tenant-id", "test-tenant") - .property("source-of-truth", "JUNIT") - .next(); - - Vertex pserverVertex = g.addV() - .property("aai-node-type", "pserver") - .property("hostname", "test-pserver") - .property("in-maint", false) - .property("source-of-truth", "JUNIT") - .next(); - - edgeRules.addTreeEdge(g, cloudRegionVertex, tenantVertex); - edgeRules.addEdge(g, cloudRegionVertex, pserverVertex); - - } catch(Exception ex){ - success = false; - logger.error("Unable to create the vertexes", ex); - } finally { - if(success){ - transaction.commit(); - } else { - transaction.rollback(); - fail("Unable to setup the graph"); - } - } - - - } - - @Test - public void testCollectDataForVertex(){ - - String [] args = { - - "-action", - "COLLECT_DATA", - "-userId", - "someuser", - "-params4Collect", - "cloud-owner|test-owner" - }; - - deleteTool.main(args); - } - - @Test - public void testDeleteNode(){ - - String id = cloudRegionVertex.id().toString(); - - String [] args = { - - "-action", - "DELETE_NODE", - "-userId", - "someuser", - "-vertexId", - id - }; - - deleteTool.main(args); - } - - @Test - public void testCollectDataForEdge(){ - - JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction(); - GraphTraversalSource g = transaction.traversal(); - List<Edge> edges = g.E().toList(); - String cloudRegionToPserverId = edges.get(0).id().toString(); - - String [] args = { - - "-action", - "COLLECT_DATA", - "-userId", - "someuser", - "-edgeId", - cloudRegionToPserverId - }; - - deleteTool.main(args); - } - - @Test - public void testDeleteForEdge(){ - - InputStream systemInputStream = System.in; - ByteArrayInputStream in = new ByteArrayInputStream("y".getBytes()); - System.setIn(in); - JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction(); - GraphTraversalSource g = transaction.traversal(); - List<Edge> edges = g.E().toList(); - String cloudRegionToPserverId = edges.get(0).id().toString(); - - String [] args = { - - "-action", - "DELETE_EDGE", - "-userId", - "someuser", - "-edgeId", - cloudRegionToPserverId - }; - - deleteTool.main(args); - System.setIn(systemInputStream); - } - @After - public void tearDown(){ - - JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction(); - boolean success = true; - - try { - - GraphTraversalSource g = transaction.traversal(); - - g.V().has("source-of-truth", "JUNIT") - .toList() - .forEach(v -> v.remove()); - - } catch(Exception ex){ - success = false; - logger.error("Unable to remove the vertexes", ex); - } finally { - if(success){ - transaction.commit(); - } else { - transaction.rollback(); - fail("Unable to teardown the graph"); - } - } - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/dbgen/tags/UpdateEdgeTagsTest.java b/aai-resources/src/test/java/org/onap/aai/dbgen/tags/UpdateEdgeTagsTest.java deleted file mode 100644 index 89c4955..0000000 --- a/aai-resources/src/test/java/org/onap/aai/dbgen/tags/UpdateEdgeTagsTest.java +++ /dev/null @@ -1,228 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.dbgen.tags; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.schema.JanusGraphManagement; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Direction; -import org.apache.tinkerpop.gremlin.structure.Edge; -import org.apache.tinkerpop.gremlin.structure.Graph; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.mockito.Mockito; -import org.onap.aai.AAISetup; -import org.onap.aai.db.props.AAIProperties; -import org.onap.aai.dbmap.AAIGraph; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.db.AAIDirection; -import org.onap.aai.serialization.db.EdgeProperty; -import org.onap.aai.serialization.db.EdgeRules; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; -import org.onap.aai.exceptions.AAIException; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import java.util.Iterator; - -public class UpdateEdgeTagsTest extends AAISetup { - - private final static Version version = Version.v12; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - private Loader loader; - private TransactionalGraphEngine dbEngine; - private JanusGraph graph; - private JanusGraph passedGraph; - private UpdateEdgeTagsCmd edgeOp; - private GraphTraversalSource g; - private Graph tx; - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Before - public void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend","inmemory").open(); - JanusGraphManagement janusgraphManagement = graph.openManagement(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - - Vertex gvnf = g.addV().property(AAIProperties.NODE_TYPE, "generic-vnf") - .property("vnf-id", "test-vnf") - .next(); - - Vertex lInterface = g.addV().property(AAIProperties.NODE_TYPE, "l-interface") - .property("interface-name", "toscaMigration-test-lint") - .next(); - - Vertex logicalLink = g.addV().property(AAIProperties.NODE_TYPE, "logical-link") - .property("link-name", "toscaMigration-logical-link") - .next(); - - - - gvnf.addEdge("hasLInterface", lInterface, EdgeProperty.CONTAINS.toString(), AAIDirection.OUT.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - - lInterface.addEdge("usesLogicalLink", logicalLink, EdgeProperty.CONTAINS.toString(), AAIDirection.NONE.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - lInterface.addEdge("sourceLInterface", logicalLink, EdgeProperty.CONTAINS.toString(), AAIDirection.NONE.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - - Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next(); - Vertex vnfc = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next(); - pserver.addEdge("tosca.relationships.HostedOn", vnfc, EdgeProperty.CONTAINS.toString(), AAIDirection.NONE.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - GraphTraversalSource traversal = g; - - passedGraph = spy(graph); - when(passedGraph.traversal()).thenReturn(traversal); - - Iterator<Edge> edgeItr = traversal.E(); - while( edgeItr != null && edgeItr.hasNext() ){ - Edge tEdge = edgeItr.next(); - String edLab = tEdge.label().toString(); - System.out.println("key = " + tEdge.inVertex().<String>property("aai-node-type").orElse(null)+"|"+ tEdge.outVertex().<String>property("aai-node-type").orElse(null)+ ", label = " + tEdge.label() - + ", for id = " + tEdge.id().toString() + ", set: "+tEdge.keys()+":"+tEdge.values()); - System.out.println("DEBUG - label = " + edLab); - } - - } - - @After - public void cleanUp() { - tx.tx().rollback(); - graph.close(); - } - - @Test - public void verifyDirectionWasReversed_OriginalGraph() { - - edgeOp = new UpdateEdgeTagsCmd("all", "/updateEdgeTestRules.json"); - edgeOp.setGraph(passedGraph); - try { - edgeOp.execute(); - } catch (AAIException e) { - e.printStackTrace(); - } - Iterator<Edge> edgeItr = g.E(); - while( edgeItr != null && edgeItr.hasNext() ){ - Edge tmpEd = edgeItr.next(); - System.out.println("Edge = " + tmpEd.inVertex().property("aai-node-type") + ", label = " + tmpEd.label() - + ", for id = " + tmpEd.id().toString() +","+tmpEd.keys()+tmpEd.value("contains-other-v")); - try { - System.out.println("Edge prevent-delete = " +tmpEd.value("prevent-delete")); - System.out.println("Edge description = " +tmpEd.value("description")); - } catch (Exception e) {;} finally {;} - } - assertEquals("Graph should have four(4) Edges with contains-other-v=OUT" - , Long.valueOf(4) - , g.E().has("contains-other-v",AAIDirection.IN.toString()).count().next()); - assertEquals("Graph should have zero(0) Edges with contains-other-v=NONE" - , Long.valueOf(0) - , g.E().has("contains-other-v",AAIDirection.NONE.toString()).count().next()); - } - - @Test - public void verifyDirectionWasReversed_withFilter() { - - edgeOp = new UpdateEdgeTagsCmd("vnfc|pserver", "/updateEdgeTestRules.json"); - edgeOp.setGraph(passedGraph); - try { - edgeOp.execute(); - } catch (AAIException e) { - e.printStackTrace(); - } - Iterator<Edge> edgeItr = g.E(); - while( edgeItr != null && edgeItr.hasNext() ){ - Edge tmpEd = edgeItr.next(); - System.out.println("Edge = " + tmpEd.inVertex().property("aai-node-type") + ", label = " + tmpEd.label() - + ", for id = " + tmpEd.id().toString() +","+tmpEd.keys()+tmpEd.value("contains-other-v")); - } - assertEquals("Graph should have one(1) Edges with contains-other-v=OUT" - , Long.valueOf(1) - , g.E().has("contains-other-v",AAIDirection.OUT.toString()).count().next()); - assertEquals("Graph should have one(1) Edges with contains-other-v=IN" - , Long.valueOf(1) - , g.E().has("contains-other-v",AAIDirection.IN.toString()).count().next()); - assertEquals("Graph should have two(2) Edges with contains-other-v=NONE" - , Long.valueOf(2) - , g.E().has("contains-other-v",AAIDirection.NONE.toString()).count().next()); - } - - @Test - public void verifyFaultyRuleFile_MissingEdgeSpec() throws AAIException { - - thrown.expect(AAIException.class); - thrown.expectMessage("No EdgeRule found for nodeTypes: pserver|vnfc|blah"); - - Vertex pserver = g.V().has(AAIProperties.NODE_TYPE, "pserver").has("hostname", "a-name").next(); - Vertex vnfc = g.V().has(AAIProperties.NODE_TYPE,"vnfc").has("vnfc-name","a-name").next(); - pserver.addEdge("blah", vnfc, EdgeProperty.CONTAINS.toString(), AAIDirection.NONE.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - //Edge "blah" is not found in updateEdgeTestRules.json - edgeOp = new UpdateEdgeTagsCmd("all", "/updateEdgeTestRules.json"); - edgeOp.setGraph(passedGraph); - edgeOp.execute(); - } - - @Test - public void verifyNewPropertyWasNOTAdded() { - //Edge rules in updateEdgeTestRules.json have "description" and "newProperty" - // but they don't transfer - edgeOp = new UpdateEdgeTagsCmd("all", "/updateEdgeTestRules.json"); - edgeOp.setGraph(passedGraph); - try { - edgeOp.execute(); - } catch (AAIException e) { - e.printStackTrace(); - } - assertEquals("Graph could have zero(4) Edges with newProperty=newValue" - , Long.valueOf(0) - , g.E().has("newProperty","newValue").count().next()); - assertEquals("Graph should have one(1) Edge with description=A l-interface/logical-link(1) edge description" - , Long.valueOf(0) - , g.E().has("description","A l-interface/logical-link(0) edge description").count().next()); - } -} - -
\ No newline at end of file diff --git a/aai-resources/src/test/java/org/onap/aai/migration/EdgeSwingMigratorTest.java b/aai-resources/src/test/java/org/onap/aai/migration/EdgeSwingMigratorTest.java deleted file mode 100644 index 89da7fa..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/EdgeSwingMigratorTest.java +++ /dev/null @@ -1,258 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration; - -import static org.junit.Assert.*; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Optional; - -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Direction; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.apache.tinkerpop.gremlin.structure.Edge; -import org.apache.tinkerpop.gremlin.structure.Property; -import org.javatuples.Pair; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import org.onap.aai.AAISetup; -import org.onap.aai.db.props.AAIProperties; -import org.onap.aai.dbmap.AAIGraph; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.exceptions.AAIException; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.db.EdgeRules; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.JanusGraphTransaction; -import org.janusgraph.core.schema.JanusGraphManagement; - -public class EdgeSwingMigratorTest extends AAISetup { - - private final static Version version = Version.getLatest(); - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - private Loader loader; - private TransactionalGraphEngine dbEngine; - private JanusGraph graph; - private GraphTraversalSource g; - private JanusGraphTransaction tx; - private MockEdgeSwingMigrator migration; - private EdgeRules rules; - private Vertex modelVer1 = null; - private Vertex modelVer3 = null; - - - @Before - public void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend","inmemory").open(); - JanusGraphManagement janusgraphManagement = graph.openManagement(); - tx = graph.newTransaction(); - g = graph.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - rules = EdgeRules.getInstance(); - createFirstVertexAndRelatedVertexes(); - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - GraphTraversalSource traversal = g; - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - Mockito.doReturn(janusgraphManagement).when(adminSpy).getManagementSystem(); - - - migration = new MockEdgeSwingMigrator(spy); - migration.run(); - } - - private void createFirstVertexAndRelatedVertexes() throws AAIException { - Vertex model1 = g.addV().property("aai-node-type", "model") - .property("model-invariant-id", "model-invariant-id-1") - .property("model-type", "widget") - .next(); - modelVer1 = g.addV().property("aai-node-type", "model-ver") - .property("model-version-id", "model-version-id-1") - .property("model-name", "connector") - .property("model-version", "v1.0") - .next(); - rules.addTreeEdge(g, model1, modelVer1); - - //Create the cousin vertex - modelElement2 which will point to modelVer1 - Vertex model2 = g.addV().property("aai-node-type", "model") - .property("model-invariant-id", "model-invariant-id-2") - .property("model-type", "resource") - .next(); - Vertex modelVer2 = g.addV().property("aai-node-type", "model-ver") - .property("model-version-id", "model-version-id-2") - .property("model-name", "resourceModTestVer") - .property("model-version", "v1.0") - .next(); - rules.addTreeEdge(g, model2, modelVer2); - Vertex modelElement2 = g.addV().property("aai-node-type", "model-element") - .property("model-element-uuid", "model-element-uuid-2") - .property("new-data-del-flag", "T") - .property("cardinality", "unbounded") - .next(); - rules.addTreeEdge(g, modelVer2, modelElement2); - rules.addEdge(g, modelVer1, modelElement2); - - Vertex model3 = g.addV().property("aai-node-type", "model") - .property("model-invariant-id", "model-invariant-id-3") - .property("model-type", "widget") - .next(); - modelVer3 = g.addV().property("aai-node-type", "model-ver") - .property("model-version-id", "model-version-id-3") - .property("model-name", "connector") - .property("model-version", "v1.0") - .next(); - rules.addTreeEdge(g, model3, modelVer3); - } - - class MockEdgeSwingMigrator extends EdgeSwingMigrator { - - public MockEdgeSwingMigrator(TransactionalGraphEngine engine) { - super(engine); - } - - @Override - public List<Pair<Vertex, Vertex>> getAffectedNodePairs() { - List<Pair<Vertex, Vertex>> fromToVertPairList = new ArrayList<Pair<Vertex, Vertex>>(); - Vertex fromVert = modelVer1; - Vertex toVert = modelVer3; - fromToVertPairList.add(new Pair<>(fromVert, toVert)); - return fromToVertPairList; - } - - public String getNodeTypeRestriction(){ - return "model-element"; - } - - public String getEdgeLabelRestriction(){ - return "org.onap.relationships.inventory.IsA"; - } - - public String getEdgeDirRestriction(){ - return "IN"; - } - - @Override - public void cleanupAsAppropriate(List<Pair<Vertex, Vertex>> nodePairL) { - // For the scenario we're testing, we would define this to remove the model-ver that - // we moved off of, and also remove its parent model since it was a widget model and - // these are currently one-to-one (model-ver to model). - // - // But what gets cleaned up (if anything) after a node's edges are migrated will vary depending - // on what the edgeSwingMigration is being used for. - - - } - - @Override - public Optional<String[]> getAffectedNodeTypes() { - return Optional.of(new String[]{"model", "model-element", "model-ver"}); - } - - @Override - public String getMigrationName() { - return "MockEdgeSwingMigrator"; - } - } - - @After - public void cleanUp() { - tx.rollback(); - graph.close(); - } - - - - @Test - public void testBelongsToEdgesStillThere() { - assertEquals(true, g.V().has("aai-node-type", "model-ver").has("model-version-id", "model-version-id-1") - .out("org.onap.relationships.inventory.BelongsTo").has("model-invariant-id", "model-invariant-id-1").hasNext()); - assertEquals(true, g.V().has("aai-node-type", "model-ver").has("model-version-id", "model-version-id-3") - .out("org.onap.relationships.inventory.BelongsTo").has("model-invariant-id", "model-invariant-id-3").hasNext()); - assertEquals(true, g.V().has("aai-node-type", "model-element").has("model-element-uuid", "model-element-uuid-2") - .out("org.onap.relationships.inventory.BelongsTo").has("model-version-id", "model-version-id-2").hasNext()); - } - - @Test - public void testThatNewEdgeAdded() { - assertEquals(true, g.V().has("aai-node-type", "model-ver").has("model-version-id", "model-version-id-3") - .in("org.onap.relationships.inventory.IsA").has("model-element-uuid", "model-element-uuid-2").hasNext()); - } - - @Test - public void testThatNewEdgeHasAaiUuidAndDelProperties() { - boolean haveUuidProp = false; - boolean haveDelOtherVProp = false; - GraphTraversal<Vertex, Vertex> modVerTrav = g.V().has("aai-node-type", "model-ver").has("model-version-id", "model-version-id-3"); - while (modVerTrav.hasNext()) { - Vertex modVerVtx = modVerTrav.next(); - Iterator <Edge> edgeIter = modVerVtx.edges(Direction.IN, "org.onap.relationships.inventory.IsA"); - while( edgeIter.hasNext() ){ - Edge oldOutE = edgeIter.next(); - - Iterator <Property<Object>> propsIter2 = oldOutE.properties(); - HashMap<String, String> propMap2 = new HashMap<String,String>(); - while( propsIter2.hasNext() ){ - Property <Object> ep2 = propsIter2.next(); - if( ep2.key().equals("aai-uuid") ){ - haveUuidProp = true; - } - else if( ep2.key().equals("delete-other-v") ){ - haveDelOtherVProp = true; - } - } - } - } - - assertTrue("New IsA edge has aai-uuid property ", haveUuidProp ); - assertTrue("New IsA edge has delete-other-v property ", haveDelOtherVProp ); - } - - - @Test - public void testThatOldEdgeGone() { - assertEquals(false, g.V().has("aai-node-type", "model-ver").has("model-version-id", "model-version-id-1") - .in("org.onap.relationships.inventory.IsA").has("model-element-uuid", "model-element-uuid-2").hasNext()); - } - - -}
\ No newline at end of file diff --git a/aai-resources/src/test/java/org/onap/aai/migration/MigrationControllerInternalTest.java b/aai-resources/src/test/java/org/onap/aai/migration/MigrationControllerInternalTest.java deleted file mode 100644 index 4ba200a..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/MigrationControllerInternalTest.java +++ /dev/null @@ -1,281 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import org.janusgraph.core.JanusGraphTransaction; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.AAIGraph; -import org.onap.aai.exceptions.AAIException; -import org.onap.aai.serialization.db.EdgeRules; - -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.StringContains.containsString; - -public class MigrationControllerInternalTest extends AAISetup { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(MigrationControllerInternalTest.class); - - private MigrationControllerInternal migrationControllerInternal; - - @Before - public void setup() throws AAIException { - migrationControllerInternal = new MigrationControllerInternal(); - clearGraph(); - createGraph(); - } - - private void createGraph(){ - - JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction(); - boolean success = true; - - try { - GraphTraversalSource g = transaction.traversal(); - - Vertex servSub1 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .property("source-of-truth", "JUNIT") - .next(); - Vertex servinst1 = g.addV().property( "aai-node-type", "service-instance") - .property("service-type", "DHV") - .property("source-of-truth", "JUNIT") - .next(); - Vertex allotedRsrc1 = g.addV().property( "aai-node-type", "allotted-resource") - .property("id","rsrc1") - .property("source-of-truth", "JUNIT") - .next(); - Vertex servinst2 = g.addV().property( "aai-node-type", "service-instance") - .property("service-type", "VVIG") - .property("source-of-truth", "JUNIT") - .next(); - Vertex servSub2 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "VVIG") - .property("source-of-truth", "JUNIT") - .next(); - - Vertex genericvnf1 = g.addV().property("aai-node-type", "generic-vnf") - .property("vnf-id", "vnfId1") - .property("source-of-truth", "JUNIT") - .next(); - Vertex vServer1 = g.addV().property("aai-node-type", "vserver") - .property("source-of-truth", "JUNIT") - .next(); - Vertex pServer1 = g.addV().property("aai-node-type", "pserver") - .property("source-of-truth", "JUNIT") - .next(); - Vertex pInterfaceWan1 = g.addV().property("aai-node-type", "p-interface") - .property("interface-name","ge-0/0/10") - .property("source-of-truth", "JUNIT") - .next(); - Vertex tunnelXConnectAll_Wan1 = g.addV().property( "aai-node-type", "tunnel-xconnect") - .property("id", "tunnelXConnectWan1") - .property("bandwidth-up-wan1", "300") - .property("bandwidth-down-wan1", "400") - .property("bandwidth-up-wan2", "500") - .property("bandwidth-down-wan2", "600") - .property("source-of-truth", "JUNIT") - .next(); - - Vertex pLinkWan1 = g.addV().property("aai-node-type", "physical-link") - .property("link-name", "pLinkWan1") - .property("service-provider-bandwidth-up-units", "empty") - .property("service-provider-bandwidth-down-units", "empty") - .property("source-of-truth", "JUNIT") - .next(); - Vertex servSub3 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .property("source-of-truth", "JUNIT") - .next(); - Vertex servinst3 = g.addV().property( "aai-node-type", "service-instance") - .property("service-type", "DHV") - .property("source-of-truth", "JUNIT") - .next(); - Vertex allotedRsrc3 = g.addV().property( "aai-node-type", "allotted-resource") - .property("id","rsrc3") - .property("source-of-truth", "JUNIT") - .next(); - Vertex servinst4 = g.addV().property( "aai-node-type", "service-instance") - .property("service-type", "VVIG") - .property("source-of-truth", "JUNIT") - .next(); - Vertex servSub4 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "VVIG") - .property("source-of-truth", "JUNIT") - .next(); - - Vertex genericvnf3 = g.addV().property("aai-node-type", "generic-vnf") - .property("vnf-id", "vnfId3") - .property("source-of-truth", "JUNIT") - .next(); - Vertex vServer3 = g.addV().property("aai-node-type", "vserver") - .property("source-of-truth", "JUNIT") - .next(); - Vertex pServer3 = g.addV().property("aai-node-type", "pserver") - .property("source-of-truth", "JUNIT") - .next(); - Vertex pInterfaceWan3 = g.addV().property("aai-node-type", "p-interface") - .property("interface-name","ge-0/0/11") - .property("source-of-truth", "JUNIT") - .next(); - Vertex tunnelXConnectAll_Wan3 = g.addV().property( "aai-node-type", "tunnel-xconnect") - .property("id", "tunnelXConnectWan3") - .property("bandwidth-up-wan1", "300") - .property("bandwidth-down-wan1", "400") - .property("bandwidth-up-wan2", "500") - .property("bandwidth-down-wan2", "600") - .property("source-of-truth", "JUNIT") - .next(); - - Vertex pLinkWan3 = g.addV().property("aai-node-type", "physical-link") - .property("link-name", "pLinkWan3") - .property("service-provider-bandwidth-up-units", "empty") - .property("service-provider-bandwidth-down-units", "empty") - .property("source-of-truth", "JUNIT") - .next(); - - EdgeRules rules = EdgeRules.getInstance(); - - rules.addTreeEdge(g,servSub1,servinst1); - rules.addEdge(g,servinst1,allotedRsrc1); - rules.addTreeEdge(g,servinst2,servSub2); - rules.addTreeEdge(g,allotedRsrc1,servinst2); - - rules.addTreeEdge(g,allotedRsrc1,tunnelXConnectAll_Wan1); - - - rules.addEdge(g,servinst1,genericvnf1); - rules.addEdge(g,genericvnf1,vServer1); - rules.addEdge(g,vServer1,pServer1); - rules.addTreeEdge(g,pServer1,pInterfaceWan1); - rules.addEdge(g,pInterfaceWan1,pLinkWan1); - - rules.addTreeEdge(g,servSub3,servinst3); - rules.addEdge(g,servinst3,allotedRsrc3); - rules.addTreeEdge(g,servinst4,servSub4); - rules.addTreeEdge(g,allotedRsrc3,servinst4); - - rules.addTreeEdge(g,allotedRsrc3,tunnelXConnectAll_Wan3); - - - rules.addEdge(g,servinst3,genericvnf3); - rules.addEdge(g,genericvnf3,vServer3); - rules.addEdge(g,vServer3,pServer3); - rules.addTreeEdge(g,pServer3,pInterfaceWan3); - rules.addEdge(g,pInterfaceWan3,pLinkWan3); - - } catch(Exception ex){ - success = false; - logger.error("Unable to create the graph {}", ex); - } finally { - if(success){ - transaction.commit(); - } else { - transaction.rollback(); - } - - } - } - - @Test - public void testListAllOfMigrations() throws Exception { - PrintStream oldOutputStream = System.out; - final ByteArrayOutputStream myOut = new ByteArrayOutputStream(); - System.setOut(new PrintStream(myOut)); - - String [] args = { - "-c", "./bundleconfig-local/etc/appprops/janusgraph-realtime.properties", - "-l" - }; - - migrationControllerInternal.run(args); - - String content = myOut.toString(); - assertThat(content, containsString("List of all migrations")); - System.setOut(oldOutputStream); - } - - @Test - public void testRunSpecificMigration() throws Exception { - String [] args = "-c ./bundleconfig-local/etc/appprops/janusgraph-realtime.properties -m SDWANSpeedChangeMigration".split(" "); - migrationControllerInternal.run(args); - } - - @Test - public void testRunSpecificMigrationAndCommit() throws Exception { - String [] args = { - "-c", "./bundleconfig-local/etc/appprops/janusgraph-realtime.properties", - "-m", "SDWANSpeedChangeMigration", - "--commit" - }; - migrationControllerInternal.run(args); - } - - @Test - public void testRunSpecificMigrationFromLoadingSnapshotAndCommit() throws Exception{ - clearGraph(); - String [] args = { - "-d", "./snapshots/sdwan_test_migration.graphson", - "-c", "./bundleconfig-local/etc/appprops/janusgraph-realtime.properties", - "-m", "SDWANSpeedChangeMigration" - }; - migrationControllerInternal.run(args); - } - - @After - public void tearDown(){ - clearGraph(); - } - - public void clearGraph(){ - - JanusGraphTransaction janusgraphTransaction = AAIGraph.getInstance().getGraph().newTransaction(); - - boolean success = true; - - try { - GraphTraversalSource g = janusgraphTransaction.traversal(); - - g.V().has("source-of-truth", "JUNIT") - .toList() - .forEach((v) -> v.remove()); - - } catch(Exception ex) { - success = false; - logger.error("Unable to remove all of the vertexes", ex); - } finally { - if(success){ - janusgraphTransaction.commit(); - } else { - janusgraphTransaction.rollback(); - } - } - - } -}
\ No newline at end of file diff --git a/aai-resources/src/test/java/org/onap/aai/migration/PropertyMigratorTest.java b/aai-resources/src/test/java/org/onap/aai/migration/PropertyMigratorTest.java deleted file mode 100644 index 2b7d58d..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/PropertyMigratorTest.java +++ /dev/null @@ -1,126 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import org.janusgraph.core.Cardinality; -import org.janusgraph.core.JanusGraphTransaction; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.Before; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.AAIGraph; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import java.util.List; -import java.util.Optional; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class PropertyMigratorTest extends AAISetup { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(PropertyMigratorTest.class); - - public static class PserverPropMigrator extends PropertyMigrator { - - public PserverPropMigrator(TransactionalGraphEngine engine, String oldName, String newName, Class<?> type, Cardinality cardinality) { - super(engine, oldName, newName, type, cardinality); - } - - @Override - public boolean isIndexed() { - return true; - } - - @Override - public Optional<String[]> getAffectedNodeTypes() { - return Optional.of(new String[]{ "pserver" }); - } - - @Override - public String getMigrationName() { - return "PserverPropMigrator"; - } - } - - @Before - public void setup(){ - AAIGraph.getInstance(); - JanusGraphTransaction janusgraphTransaction = AAIGraph.getInstance().getGraph().newTransaction(); - boolean success = true; - - try { - GraphTraversalSource g = janusgraphTransaction.traversal(); - g.addV() - .property("aai-node-type", "pserver") - .property("hostname", "fake-hostname") - .property("inv-status", "some status") - .property("source-of-truth", "JUNIT") - .next(); - } catch(Exception ex){ - success = false; - logger.error("Unable to commit the transaction {}", ex); - - } finally { - if(success){ - janusgraphTransaction.commit(); - } else { - janusgraphTransaction.rollback(); - } - - } - } - - @Test - public void testAfterPropertyMigration(){ - - String oldPropName = "inv-status"; - String newPropName = "inventory-status"; - - Loader loader = LoaderFactory.createLoaderForVersion(ModelType.MOXY, Version.v11); - JanusGraphDBEngine dbEngine = new JanusGraphDBEngine(QueryStyle.TRAVERSAL, DBConnectionType.REALTIME, loader); - dbEngine.startTransaction(); - - PropertyMigrator propertyMigrator = new PserverPropMigrator(dbEngine, oldPropName, newPropName, String.class, Cardinality.SINGLE); - propertyMigrator.run(); - assertEquals("Expecting the property to be success", Status.SUCCESS, propertyMigrator.getStatus()); - dbEngine.commit(); - - JanusGraphTransaction janusgraphTransaction = AAIGraph.getInstance().getGraph().newTransaction(); - GraphTraversalSource g = janusgraphTransaction.traversal(); - - List<Vertex> oldVList = g.V().has("aai-node-type", "pserver").has(oldPropName).toList(); - List<Vertex> newVList = g.V().has("aai-node-type", "pserver").has(newPropName).toList(); - - assertEquals("Expecting the vertex list with old property to be zero", 0, oldVList.size()); - assertEquals("Expecting the vertex list with new property to be 1", 1, newVList.size()); - assertEquals("Expecting the equipment type to be some equipment", "some status", newVList.get(0).property(newPropName).value()); - } -}
\ No newline at end of file diff --git a/aai-resources/src/test/java/org/onap/aai/migration/ValueMigratorTest.java b/aai-resources/src/test/java/org/onap/aai/migration/ValueMigratorTest.java deleted file mode 100644 index 7850fd2..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/ValueMigratorTest.java +++ /dev/null @@ -1,154 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.JanusGraphTransaction; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.junit.Before; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.db.EdgeRules; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertEquals; - -public class ValueMigratorTest extends AAISetup{ - - public static class SampleValueMigrator extends ValueMigrator { - public SampleValueMigrator(TransactionalGraphEngine engine, Map map, Boolean updateExistingValues){ - super(engine, map, updateExistingValues); - } - @Override - public Status getStatus() { - return Status.SUCCESS; - } - @Override - public Optional<String[]> getAffectedNodeTypes() { - return null; - } - @Override - public String getMigrationName() { - return "SampleValueMigrator"; - } - } - - private final static Version version = Version.v10; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - private Loader loader; - private TransactionalGraphEngine dbEngine; - private JanusGraph graph; - private SampleValueMigrator migration; - private EdgeRules rules; - private GraphTraversalSource g; - private JanusGraphTransaction tx; - private SampleValueMigrator existingValuesMigration; - - @Before - public void setup() throws Exception{ - graph = JanusGraphFactory.build().set("storage.backend", "inmemory").open(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - rules = EdgeRules.getInstance(); - Map<String, Map> map = new HashMap<>(); - Map<String, Boolean> pair = new HashMap<>(); - pair.put("in-maint", true); - map.put("pserver", pair); - map.put("pnf", pair); - g.addV().property("aai-node-type", "pserver") - .property("pserver-id", "pserver0") - .next(); - g.addV().property("aai-node-type", "pserver") - .property("pserver-id", "pserver1") - .property("in-maint", "") - .next(); - g.addV().property("aai-node-type", "pserver") - .property("pserver-id", "pserver2") - .property("in-maint", false) - .next(); - g.addV().property("aai-node-type", "pnf") - .property("pnf-name","pnf1" ) - .property("in-maint", false) - .next(); - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - GraphTraversalSource traversal = g; - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - migration = new SampleValueMigrator(spy, map, false); - migration.run(); - - map = new HashMap<>(); - pair = new HashMap<>(); - pair.put("in-maint", true); - map.put("pnf", pair); - existingValuesMigration = new SampleValueMigrator(spy, map, true); - existingValuesMigration.run(); - } - - @Test - public void testMissingProperty(){ - assertTrue("Value of pnf should be updated since the property doesn't exist", - g.V().has("aai-node-type", "pserver").has("pserver-id", "pserver0").has("in-maint", true).hasNext()); - } - - @Test - public void testExistingValue() { - assertTrue("Value of pserver shouldn't be updated since it already exists", - g.V().has("aai-node-type", "pserver").has("pserver-id", "pserver2").has("in-maint", false).hasNext()); - } - - @Test - public void testEmptyValue() { - assertTrue("Value of pserver should be updated since the value is an empty string", - g.V().has("aai-node-type", "pserver").has("pserver-id", "pserver1").has("in-maint", true).hasNext()); - } - - @Test - public void testUpdateExistingValues() { - assertTrue("Value of pnf should be updated even though it already exists", - g.V().has("aai-node-type", "pnf").has("pnf-name", "pnf1").has("in-maint", true).hasNext()); - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/migration/VertexMergeTest.java b/aai-resources/src/test/java/org/onap/aai/migration/VertexMergeTest.java deleted file mode 100644 index 90cd921..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/VertexMergeTest.java +++ /dev/null @@ -1,179 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration; - -import org.janusgraph.core.Cardinality; -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.schema.JanusGraphManagement; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Graph; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.*; -import org.onap.aai.AAISetup; -import org.onap.aai.db.props.AAIProperties; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.db.DBSerializer; -import org.onap.aai.serialization.db.EdgeRules; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import java.io.UnsupportedEncodingException; -import java.util.*; - -import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -@Ignore -public class VertexMergeTest extends AAISetup { - - - private final static Version version = Version.v10; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - private Loader loader; - private TransactionalGraphEngine dbEngine; - private JanusGraph graph; - private EdgeRules rules; - private GraphTraversalSource g; - private Graph tx; - - @Before - public void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend","inmemory").open(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - rules = EdgeRules.getInstance(); - - JanusGraphManagement mgmt = graph.openManagement(); - mgmt.makePropertyKey("test-list").dataType(String.class).cardinality(Cardinality.SET).make(); - mgmt.commit(); - Vertex pserverSkeleton = g.addV().property("aai-node-type", "pserver").property("hostname", "TEST1") - .property("source-of-truth", "AAI-EXTENSIONS").property("fqdn", "test1.com").property("test-list", "value1").next(); - - Vertex pInterface1 = g.addV().property("aai-node-type", "p-interface").property("interface-name", "p-interface1") - .property(AAIProperties.AAI_URI, "/cloud-infrastructure/pservers/pserver/TEST1/p-interfaces/p-interface/p-interface1").next(); - - Vertex pInterface2 = g.addV().property("aai-node-type", "p-interface").property("interface-name", "p-interface2") - .property(AAIProperties.AAI_URI, "/cloud-infrastructure/pservers/pserver/TEST1/p-interfaces/p-interface/p-interface2").next(); - - Vertex pInterface2Secondary = g.addV().property("aai-node-type", "p-interface").property("interface-name", "p-interface2").property("special-prop", "value") - .property(AAIProperties.AAI_URI, "/cloud-infrastructure/pservers/pserver/TEST1/p-interfaces/p-interface/p-interface2").next(); - - Vertex lInterface1 = g.addV().property("aai-node-type", "l-interface").property("interface-name", "l-interface1").property("special-prop", "value") - .property(AAIProperties.AAI_URI, "/cloud-infrastructure/pservers/pserver/TEST1/p-interfaces/p-interface/p-interface2/l-interfaces/l-interface/l-interface1").next(); - - Vertex lInterface1Canopi = g.addV().property("aai-node-type", "l-interface").property("interface-name", "l-interface1") - .property(AAIProperties.AAI_URI, "/cloud-infrastructure/pservers/pserver/TEST1/p-interfaces/p-interface/p-interface2/l-interfaces/l-interface/l-interface1").next(); - - Vertex logicalLink = g.addV().property("aai-node-type", "logical-link").property("link-name", "logical-link1") - .property(AAIProperties.AAI_URI, "/network/logical-links/logical-link/logical-link1").next(); - Vertex pserverCanopi = g.addV().property("aai-node-type", "pserver").property("hostname", "TEST1") - .property("source-of-truth", "CANOPI-WS").property("fqdn", "test2.com").property("test-list", "value2").next(); - - Vertex complex1 = g.addV().property("aai-node-type", "complex").property("physical-location-id", "complex1") - .property("source-of-truth", "RO").next(); - - Vertex complex2 = g.addV().property("aai-node-type", "complex").property("physical-location-id", "complex2") - .property("source-of-truth", "RCT").next(); - - Vertex vserver1 = g.addV().property("aai-node-type", "vserver").property("vserver-id", "vserver1") - .property("source-of-truth", "RO").next(); - - Vertex vserver2 = g.addV().property("aai-node-type", "vserver").property("vserver-id", "vserver2") - .property("source-of-truth", "RCT").next(); - Vertex vserver3 = g.addV().property("aai-node-type", "vserver").property("vserver-id", "vserver3") - .property("source-of-truth", "RCT").next(); - Vertex vserver4 = g.addV().property("aai-node-type", "vserver").property("vserver-id", "vserver4") - .property("source-of-truth", "RCT").next(); - Vertex vserver5 = g.addV().property("aai-node-type", "vserver").property("vserver-id", "vserver5") - .property("source-of-truth", "RCT").next(); - - - rules.addEdge(g, pserverSkeleton, complex1); - rules.addEdge(g, pserverSkeleton, vserver1); - rules.addEdge(g, pserverSkeleton, vserver2); - rules.addTreeEdge(g, pserverSkeleton, pInterface1); - rules.addTreeEdge(g, pserverSkeleton, pInterface2Secondary); - rules.addTreeEdge(g, pInterface2Secondary, lInterface1); - rules.addEdge(g, lInterface1, logicalLink); - rules.addEdge(g, pserverCanopi, complex2); - rules.addEdge(g, pserverCanopi, vserver3); - rules.addEdge(g, pserverCanopi, vserver4); - rules.addEdge(g, pserverCanopi, vserver5); - rules.addTreeEdge(g, pserverCanopi, pInterface2); - rules.addTreeEdge(g, pInterface2, lInterface1Canopi); - - Map<String, Set<String>> forceCopy = new HashMap<>(); - Set<String> forceSet = new HashSet<>(); - forceSet.add("fqdn"); - forceCopy.put("pserver", forceSet); - - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - GraphTraversalSource traversal = g; - GraphTraversalSource readOnly = g; - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - when(adminSpy.getReadOnlyTraversalSource()).thenReturn(readOnly); - DBSerializer serializer = new DBSerializer(version, spy, introspectorFactoryType, "Merge test"); - - VertexMerge merge = new VertexMerge.Builder(loader, spy, serializer).build(); - merge.performMerge(pserverCanopi, pserverSkeleton, forceCopy); - } - - @After - public void cleanUp() { - tx.tx().rollback(); - graph.close(); - } - - @Test - public void run() throws UnsupportedEncodingException { - - assertEquals("pserver merged", false, g.V().has("hostname", "TEST1").has("source-of-truth", "AAI-EXTENSIONS").hasNext()); - assertThat("pserver list merge", Arrays.asList("value1", "value2"), containsInAnyOrder(g.V().has("hostname", "TEST1").values("test-list").toList().toArray())); - assertEquals("canopi pserver has one edge to vserver2", 1, g.V().has("hostname", "TEST1").both().has("vserver-id", "vserver2").toList().size()); - assertEquals("canopi pserver has one edge to vserver1", 1, g.V().has("hostname", "TEST1").both().has("vserver-id", "vserver1").toList().size()); - assertEquals("canopi pserver retained edge to complex2", true, g.V().has("hostname", "TEST1").both().has("physical-location-id", "complex2").hasNext()); - assertEquals("canopi pserver received forced prop", "test1.com", g.V().has("hostname", "TEST1").values("fqdn").next()); - assertEquals("pserver skeleton child copied", true, g.V().has("hostname", "TEST1").both().has("interface-name", "p-interface1").hasNext()); - assertEquals("pserver skeleton child merged", true, g.V().has("hostname", "TEST1").both().has("interface-name", "p-interface2").has("special-prop", "value").hasNext()); - assertEquals("l-interface child merged", true, g.V().has("hostname", "TEST1").both().has("interface-name", "p-interface2").both().has("interface-name", "l-interface1").has("special-prop", "value").hasNext()); - assertEquals("l-interface child cousin edge merged", true, g.V().has("hostname", "TEST1").both().has("interface-name", "p-interface2").both().has("interface-name", "l-interface1").both().has("link-name", "logical-link1").hasNext()); - assertEquals("one l-interface1 found", new Long(1), g.V().has("interface-name", "l-interface1").count().next()); - assertEquals("one p-interface2 found", new Long(1), g.V().has("interface-name", "p-interface2").count().next()); - - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/migration/v12/ContainmentDeleteOtherVPropertyMigrationTest.java b/aai-resources/src/test/java/org/onap/aai/migration/v12/ContainmentDeleteOtherVPropertyMigrationTest.java deleted file mode 100644 index f80229c..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/v12/ContainmentDeleteOtherVPropertyMigrationTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration.v12; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.schema.JanusGraphManagement; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Edge; -import org.apache.tinkerpop.gremlin.structure.Graph; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.db.AAIDirection; -import org.onap.aai.serialization.db.EdgeProperty; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -public class ContainmentDeleteOtherVPropertyMigrationTest extends AAISetup { - - private final static Version version = Version.v12; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - private Loader loader; - private TransactionalGraphEngine dbEngine; - private JanusGraph graph; - private ContainmentDeleteOtherVPropertyMigration migration; - private GraphTraversalSource g; - private Graph tx; - - @Before - public void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend","inmemory").open(); - JanusGraphManagement janusgraphManagement = graph.openManagement(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - Vertex v = g.addV().property("aai-node-type", "generic-vnf") - .property("vnf-id", "delcontains-test-vnf") - .next(); - Vertex v2 = g.addV().property("aai-node-type", "l-interface") - .property("interface-name", "delcontains-test-lint") - .next(); - Edge e = v.addEdge("hasLInterface", v2, EdgeProperty.CONTAINS.toString(), AAIDirection.OUT.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - - Vertex v3 = g.addV().property("aai-node-type", "allotted-resource").next(); - - Edge e2 = v2.addEdge("uses", v3, EdgeProperty.CONTAINS.toString(), AAIDirection.NONE.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - GraphTraversalSource traversal = g; - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - Mockito.doReturn(janusgraphManagement).when(adminSpy).getManagementSystem(); - migration = new ContainmentDeleteOtherVPropertyMigration(spy, "/edgeMigrationTestRules.json"); - migration.run(); - } - - @After - public void cleanUp() { - tx.tx().rollback(); - graph.close(); - } - - @Test - public void run() { - assertEquals("del other now OUT", true, - g.E().hasLabel("hasLInterface").has(EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.OUT.toString()).hasNext()); - assertEquals("contains val still same", true, - g.E().hasLabel("hasLInterface").has(EdgeProperty.CONTAINS.toString(), AAIDirection.OUT.toString()).hasNext()); - assertEquals("non-containment unchanged", true, - g.E().hasLabel("uses").has(EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()).hasNext()); - } - -} diff --git a/aai-resources/src/test/java/org/onap/aai/migration/v12/MigrateDataFromASDCToConfigurationTest.java b/aai-resources/src/test/java/org/onap/aai/migration/v12/MigrateDataFromASDCToConfigurationTest.java deleted file mode 100644 index 4fbed4c..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/v12/MigrateDataFromASDCToConfigurationTest.java +++ /dev/null @@ -1,172 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration.v12; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.JanusGraphTransaction; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.db.EdgeRules; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotEquals; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -public class MigrateDataFromASDCToConfigurationTest extends AAISetup { - - private final static Version version = Version.v12; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - private Loader loader; - private TransactionalGraphEngine dbEngine; - private JanusGraph graph; - private MigrateDataFromASDCToConfiguration migration; - private EdgeRules rules; - private GraphTraversalSource g; - private JanusGraphTransaction tx; - Vertex configuration; - Vertex configuration2; - Vertex configuration3; - Vertex configuration4; - - private boolean success = true; - private String entitlementPoolUuid = ""; - private final String PARENT_NODE_TYPE = "generic-vnf"; - private String VNT = ""; - - @Before - public void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend","inmemory").open(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - rules = EdgeRules.getInstance(); - Vertex genericvnf1 = g.addV().property("aai-node-type", "generic-vnf") - .property("vnf-id", "vnfId1") - .property("vnf-type","vHNF") - .next(); - - Vertex genericvnf2 = g.addV().property("aai-node-type", "generic-vnf") - .property("vnf-id", "vnfId2") - .property("vnf-type","vHNF") - .next(); - - Vertex entitlement1 = g.addV().property("aai-node-type", "entitlement") - .property("group-uuid", "some-uuid") - .next(); - - Vertex serviceInstance1 = g.addV().property("aai-node-type", "service-instance") - .property("service-instance-id", "servinstanceTestId1") - .next(); - - configuration = g.addV().property("aai-node-type", "configuration") - .property("configuration-id", "configurationIdGraph") - .property("vendor-allowed-max-bandwidth", "20") - .next(); - configuration3 = g.addV().property("aai-node-type", "configuration") - .property("configuration-id", "configurationIdGraph3") - .property("vendor-allowed-max-bandwidth", "15") - .next(); - configuration2 = g.addV().property("aai-node-type", "configuration") - .property("configuration-id", "configurationIdGraph2") - .property("vendor-allowed-max-bandwidth", "25") - .next(); - configuration4 = g.addV().property("aai-node-type", "configuration") - .property("configuration-id", "configurationIdGraph4") - .property("vendor-allowed-max-bandwidth", "50") - .next(); - - rules.addTreeEdge(g, genericvnf1, entitlement1); - rules.addEdge(g, genericvnf1, serviceInstance1); - rules.addEdge(g, serviceInstance1, configuration); - rules.addEdge(g, serviceInstance1, configuration3); - - - rules.addEdge(g, genericvnf2, configuration2); - - - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - GraphTraversalSource traversal = g; - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - migration = new MigrateDataFromASDCToConfiguration(spy); - migration.run(); - } - - - @After - public void cleanUp() { - tx.rollback(); - graph.close(); - } - - - /*** - * checks if the VNt value was updated and if theres a second configuration object it is also to be modified - */ - - @Test - public void confirmVNtValueChanged() { - - assertEquals("1000",configuration.property("vendor-allowed-max-bandwidth").value()); - assertEquals("1000",configuration3.property("vendor-allowed-max-bandwidth").value()); - - } - - /*** - * checks to see if the entitlement object is missing the configuration objects should not be modified at all - */ - @Test - public void missingEntitlementObject() { - assertEquals("25",configuration2.property("vendor-allowed-max-bandwidth").value()); - } - /*** - * checks to see if there's a configuration object not connected to anything it should not be modified at all - */ - - @Test - public void confirmConfiguration4notchanged() { - assertEquals("50",configuration4.property("vendor-allowed-max-bandwidth").value()); - } - - - - -} diff --git a/aai-resources/src/test/java/org/onap/aai/migration/v12/MigrateServiceInstanceToConfigurationTest.java b/aai-resources/src/test/java/org/onap/aai/migration/v12/MigrateServiceInstanceToConfigurationTest.java deleted file mode 100644 index b07c728..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/v12/MigrateServiceInstanceToConfigurationTest.java +++ /dev/null @@ -1,410 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration.v12; - -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import java.util.Optional; - -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.db.EdgeRules; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.JanusGraphTransaction; - -public class MigrateServiceInstanceToConfigurationTest extends AAISetup { - - private final static Version version = Version.v12; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - - private static Loader loader; - private static TransactionalGraphEngine dbEngine; - private static JanusGraph graph; - private static MigrateServiceInstanceToConfiguration migration; - private static JanusGraphTransaction tx; - private static GraphTraversalSource g; - private static EdgeRules rules; - - @BeforeClass - public static void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend","inmemory").open(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - rules = EdgeRules.getInstance(); - - Vertex customer1 = g.addV() - .property("aai-node-type", "customer") - .property("global-customer-id", "customer-id-1") - .property("subscriber-type", "CUST") - .next(); - - Vertex customer2 = g.addV() - .property("aai-node-type", "customer") - .property("global-customer-id", "customer-id-2") - .property("subscriber-type", "CUST") - .next(); - - Vertex customer3 = g.addV() - .property("aai-node-type", "customer") - .property("global-customer-id", "customer-id-3") - .property("subscriber-type", "CUST") - .next(); - - Vertex customer4 = g.addV() - .property("aai-node-type", "customer") - .property("global-customer-id", "customer-id-4") - .property("subscriber-type", "CUST") - .next(); - - Vertex servSub1 = g.addV() - .property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .next(); - - Vertex servSub2 = g.addV() - .property("aai-node-type", "service-subscription") - .property("service-type", "OTHER") - .next(); - - Vertex servSub3 = g.addV() - .property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .next(); - - Vertex servSub4 = g.addV() - .property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .next(); - - Vertex servSub5 = g.addV() - .property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .next(); - - Vertex servInstance1 = g.addV() - .property("aai-node-type", "service-instance") - .property("service-instance-id", "service-inst-1") - .property("operational-status", "activated") - .property("bandwidth-total", "5") - .next(); - - Vertex servInstance2 = g.addV() - .property("aai-node-type", "service-instance") - .property("service-instance-id", "service-inst-2") - .property("operational-status", "activated") - .property("bandwidth-total", "8") - .next(); - - Vertex servInstance3 = g.addV() - .property("aai-node-type", "service-instance") - .property("service-instance-id", "service-inst-3") - .property("operational-status", "activated") - .property("bandwidth-total", "10") - .next(); - - Vertex servInstance4 = g.addV() - .property("aai-node-type", "service-instance") - .property("service-instance-id", "service-inst-4") - .property("operational-status", "activated") - .property("bandwidth-total", "15") - .next(); - - Vertex config1 = g.addV() - .property("aai-node-type", "configuration") - .property("configuration-id", "configuration-1") - .property("configuration-type", "DHV") - .property("tunnel-bandwidth", "7") - .next(); - - Vertex config2 = g.addV() - .property("aai-node-type", "configuration") - .property("configuration-id", "configuration-2") - .property("configuration-type", "OTHER") - .property("tunnel-bandwidth", "3") - .next(); - - Vertex config3 = g.addV() - .property("aai-node-type", "configuration") - .property("configuration-id", "configuration-3") - .property("configuration-type", "OTHER") - .property("tunnel-bandwidth", "2") - .next(); - - Vertex config4 = g.addV() - .property("aai-node-type", "configuration") - .property("configuration-id", "configuration-4") - .property("configuration-type", "OTHER") - .property("tunnel-bandwidth", "4") - .next(); - - // graph 1 - rules.addTreeEdge(g, customer1, servSub1); - rules.addTreeEdge(g, customer1, servSub2); - rules.addTreeEdge(g, servSub1, servInstance1); - rules.addTreeEdge(g, servSub2, servInstance2); - - // graph 2 - rules.addTreeEdge(g, customer2, servSub3); - - // graph 3 - rules.addTreeEdge(g, customer3, servSub4); - rules.addTreeEdge(g, servSub4, servInstance3); - rules.addEdge(g, servInstance3, config1); - rules.addEdge(g, servInstance3, config2); - - // graph 4 - rules.addTreeEdge(g, customer4, servSub5); - rules.addTreeEdge(g, servSub5, servInstance4); - rules.addEdge(g, servInstance4, config3); - rules.addEdge(g, servInstance4, config4); - - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - - GraphTraversalSource traversal = g; - GraphTraversalSource readOnly = tx.traversal(GraphTraversalSource.build().with(ReadOnlyStrategy.instance())); - when (spy.tx()).thenReturn(tx); - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - when(adminSpy.getReadOnlyTraversalSource()).thenReturn(readOnly); - - migration = new MigrateServiceInstanceToConfiguration(spy); - migration.run(); - } - - @AfterClass - public static void cleanUp() { - tx.tx().rollback(); - graph.close(); - } - - @Test - public void testRun_createConfigNode() throws Exception { - // check if graph nodes exist - assertEquals("customer node exists", true, - g.V().has("global-customer-id", "customer-id-1") - .hasNext()); - - assertEquals("service subscription node, service-type=DHV", true, - g.V().has("global-customer-id", "customer-id-1") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .hasNext()); - - assertEquals("service instance node, bandwidth-total=5", true, - g.V().has("global-customer-id", "customer-id-1") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-1").has("bandwidth-total", "5") - .hasNext()); - - // check if configuration node gets created - assertEquals("configuration node exists", true, - g.V().has("global-customer-id", "customer-id-1") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-1") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration") - .hasNext()); - - // check configuration type - assertEquals("configuration node, configuration-type=DHV", true, - g.V().has("global-customer-id", "customer-id-1") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-1") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration").has("configuration-type", "DHV") - .hasNext()); - - // check configuration tunnel-bandwidth - assertEquals("configuration node, tunnel-bandwidth=5", true, - g.V().has("global-customer-id", "customer-id-1") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-1") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration").has("tunnel-bandwidth", "5") - .hasNext()); - } - - @Test - public void testRun_configNodeNotCreated() throws Exception { - // check if graph nodes exist - assertEquals("customer node exists", true, - g.V().has("global-customer-id", "customer-id-1") - .hasNext()); - - assertEquals("service subscription node, service-type=OTHER", true, - g.V().has("global-customer-id", "customer-id-1") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "OTHER") - .hasNext()); - - assertEquals("service instance node, bandwidth-total=8", true, - g.V().has("global-customer-id", "customer-id-1") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "OTHER") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-2").has("bandwidth-total", "8") - .hasNext()); - - // configuration node should not be created - assertEquals("configuration node does not exist", false, - g.V().has("global-customer-id", "customer-id-1") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "OTHER") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-2") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration") - .hasNext()); - - // edge between service instance and configuration should not be created - assertEquals("configuration node does not exist", false, - g.V().has("global-customer-id", "customer-id-1") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "OTHER") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-2") - .out("org.onap.relationships.inventory.Uses").hasNext()); - } - - @Test - public void testRun_noServiceInstance() throws Exception { - // check if graph nodes exist - assertEquals("customer node exists", true, - g.V().has("global-customer-id", "customer-id-2") - .hasNext()); - - assertEquals("service subscription node, service-type=DHV", true, - g.V().has("global-customer-id", "customer-id-2") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .hasNext()); - - // no service instance nodes - assertEquals("no service instance nodes", false, - g.V().has("global-customer-id", "customer-id-2") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("aai-node-type", "service-instance") - .hasNext()); - } - - @Test - public void testRun_existingConfig() throws Exception { - // check if graph nodes exist - assertEquals("customer node exists", true, - g.V().has("global-customer-id", "customer-id-3") - .hasNext()); - - assertEquals("service subscription node, service-type=DHV", true, - g.V().has("global-customer-id", "customer-id-3") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .hasNext()); - - assertEquals("service instance node, bandwidth-total=10", true, - g.V().has("global-customer-id", "customer-id-3") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-3").has("bandwidth-total", "10") - .hasNext()); - - assertEquals("configuration node with type DHV, tunnel-bandwidth changed to 10", true, - g.V().has("global-customer-id", "customer-id-3") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-3") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration").has("tunnel-bandwidth", "10") - .hasNext()); - - assertEquals("configuration node with type OTHER, tunnel-bandwidth remains same", true, - g.V().has("global-customer-id", "customer-id-3") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-3") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration").has("tunnel-bandwidth", "3") - .hasNext()); - } - - @Test - public void testRun_existingConfigNotDHV() throws Exception { - // check if graph nodes exist - assertEquals("customer node exists", true, - g.V().has("global-customer-id", "customer-id-4") - .hasNext()); - - assertEquals("service subscription node, service-type=DHV", true, - g.V().has("global-customer-id", "customer-id-4") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .hasNext()); - - assertEquals("service instance node, bandwidth-total=15", true, - g.V().has("global-customer-id", "customer-id-4") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-4").has("bandwidth-total", "15") - .hasNext()); - - assertEquals("first configuration node with type OTHER, tunnel-bandwidth remains same", true, - g.V().has("global-customer-id", "customer-id-4") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-4") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration").has("tunnel-bandwidth", "2") - .hasNext()); - - assertEquals("second configuration node with type OTHER, tunnel-bandwidth remains same", true, - g.V().has("global-customer-id", "customer-id-4") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-4") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration").has("tunnel-bandwidth", "4") - .hasNext()); - - assertEquals("new configuration node created with type DHV, tunnel-bandwidth=15", true, - g.V().has("global-customer-id", "customer-id-4") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "service-inst-4") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration").has("tunnel-bandwidth", "15") - .hasNext()); - } - - @Test - public void testGetAffectedNodeTypes() { - Optional<String[]> types = migration.getAffectedNodeTypes(); - Optional<String[]> expected = Optional.of(new String[]{"service-instance"}); - - assertNotNull(types); - assertArrayEquals(expected.get(), types.get()); - } - - @Test - public void testGetMigrationName() { - String migrationName = migration.getMigrationName(); - - assertNotNull(migrationName); - assertEquals("service-instance-to-configuration", migrationName); - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/migration/v12/MigrateServiceInstanceToConfigurationTestPreMigrationMock.java b/aai-resources/src/test/java/org/onap/aai/migration/v12/MigrateServiceInstanceToConfigurationTestPreMigrationMock.java deleted file mode 100644 index 498fd0c..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/v12/MigrateServiceInstanceToConfigurationTestPreMigrationMock.java +++ /dev/null @@ -1,304 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration.v12; - -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import java.util.Optional; - -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.db.EdgeRules; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.JanusGraphTransaction; - -public class MigrateServiceInstanceToConfigurationTestPreMigrationMock extends AAISetup { - - private final static Version version = Version.v12; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - - private static Loader loader; - private static TransactionalGraphEngine dbEngine; - private static JanusGraph graph; - private static MigrateServiceInstanceToConfiguration migration; - private static JanusGraphTransaction tx; - private static GraphTraversalSource g; - private static EdgeRules rules; - - @BeforeClass - public static void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend","inmemory").open(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - rules = EdgeRules.getInstance(); - - Vertex customer = g.addV() - .property("aai-node-type", "customer") - .property("global-customer-id", "customer-9972-BandwidthMigration") - .property("subscriber-type", "CUST") - .next(); - - Vertex servSubSDNEI = g.addV() - .property("aai-node-type", "service-subscription") - .property("service-type", "SDN-ETHERNET-INTERNET") - .next(); - - Vertex servInstance22 = g.addV() - .property("aai-node-type", "service-instance") - .property("service-instance-id", "servInstance-9972-22-BandwidthMigration") - .property("operational-status", "activated") - .property("bandwidth-total", "bandwidth-total-22-BandwidthMigration") - .next(); - - Vertex servInstance11 = g.addV() - .property("aai-node-type", "service-instance") - .property("service-instance-id", "servInstance-9972-11-BandwidthMigration") - .property("operational-status", "activated") - .property("bandwidth-total", "bandwidth-total-11-BandwidthMigration") - .next(); - - Vertex servSubDHV = g.addV() - .property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .next(); - - Vertex servInstance4 = g.addV() - .property("aai-node-type", "service-instance") - .property("service-instance-id", "servInstance-9972-4-BandwidthMigration") - .property("operational-status", "activated") - .property("bandwidth-total", "bandwidth-total-4-BandwidthMigration") - .next(); - - Vertex servInstance1 = g.addV() - .property("aai-node-type", "service-instance") - .property("service-instance-id", "ServInstance-9972-1-BandwidthMigration") - .property("operational-status", "activated") - .property("bandwidth-total", "2380") - .next(); - - Vertex servInstance3 = g.addV() - .property("aai-node-type", "service-instance") - .property("service-instance-id", "servInstance-9972-3-BandwidthMigration") - .property("operational-status", "activated") - .property("bandwidth-total", "bandwidth-total-3-BandwidthMigration") - .next(); - - Vertex servInstance2 = g.addV() - .property("aai-node-type", "service-instance") - .property("service-instance-id", "servInstance-9972-2-BandwidthMigration") - .property("operational-status", "activated") - .property("bandwidth-total", "bandwidth-total-2-BandwidthMigration") - .next(); - - Vertex config1 = g.addV() - .property("aai-node-type", "configuration") - .property("configuration-id", "9972-config-LB1113") - .property("configuration-type", "DHV") - .property("tunnel-bandwidth", "12") - .next(); - - Vertex config2 = g.addV() - .property("aai-node-type", "configuration") - .property("configuration-id", "9972-1config-LB1113") - .property("configuration-type", "configuration-type1-9972") - .next(); - - Vertex allottedResource = g.addV() - .property("aai-node-type", "allotted-resource") - .property("id", "allResource-9972-BandwidthMigration") - .next(); - - rules.addTreeEdge(g, customer, servSubSDNEI); - rules.addTreeEdge(g, customer, servSubDHV); - rules.addTreeEdge(g, servSubSDNEI, servInstance22); - rules.addTreeEdge(g, servSubSDNEI, servInstance11); - rules.addTreeEdge(g, servSubDHV, servInstance4); - rules.addTreeEdge(g, servSubDHV, servInstance1); - rules.addTreeEdge(g, servSubDHV, servInstance3); - rules.addTreeEdge(g, servSubDHV, servInstance2); - rules.addEdge(g, servInstance1, allottedResource); - rules.addEdge(g, servInstance1, config1); - rules.addEdge(g, servInstance2, config2); - - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - - GraphTraversalSource traversal = g; - GraphTraversalSource readOnly = tx.traversal(GraphTraversalSource.build().with(ReadOnlyStrategy.instance())); - when (spy.tx()).thenReturn(tx); - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - when(adminSpy.getReadOnlyTraversalSource()).thenReturn(readOnly); - - migration = new MigrateServiceInstanceToConfiguration(spy); - migration.run(); - } - - @AfterClass - public static void cleanUp() { - tx.tx().rollback(); - graph.close(); - } - - @Test - public void testRun() throws Exception { - // check if graph nodes exist - assertEquals("customer node exists", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .hasNext()); - - assertEquals("service subscription node, service-type=SDN-ETHERNET-INTERNET", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "SDN-ETHERNET-INTERNET") - .hasNext()); - - assertEquals("service instance node, bandwidth-total=bandwidth-total-22-BandwidthMigration", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "SDN-ETHERNET-INTERNET") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "servInstance-9972-22-BandwidthMigration") - .has("bandwidth-total", "bandwidth-total-22-BandwidthMigration") - .hasNext()); - - assertEquals("service instance node, bandwidth-total=bandwidth-total-11-BandwidthMigration", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "SDN-ETHERNET-INTERNET") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "servInstance-9972-11-BandwidthMigration") - .has("bandwidth-total", "bandwidth-total-11-BandwidthMigration") - .hasNext()); - - assertEquals("service subscription node, service-type=DHV", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .hasNext()); - - assertEquals("service instance node, bandwidth-total=servInstance-9972-4-BandwidthMigration", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "servInstance-9972-4-BandwidthMigration") - .has("bandwidth-total", "bandwidth-total-4-BandwidthMigration") - .hasNext()); - - assertEquals("service instance node, bandwidth-total=ServInstance-9972-1-BandwidthMigration", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "ServInstance-9972-1-BandwidthMigration") - .has("bandwidth-total", "2380") - .hasNext()); - - assertEquals("service instance node, bandwidth-total=servInstance-9972-3-BandwidthMigration", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "servInstance-9972-3-BandwidthMigration") - .has("bandwidth-total", "bandwidth-total-3-BandwidthMigration") - .hasNext()); - - assertEquals("service instance node, bandwidth-total=servInstance-9972-2-BandwidthMigration", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "servInstance-9972-2-BandwidthMigration") - .has("bandwidth-total", "bandwidth-total-2-BandwidthMigration") - .hasNext()); - - assertEquals("configuration node with type=configuration-type1-9972, tunnel-bandwidth does not exist", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "servInstance-9972-2-BandwidthMigration") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration") - .has("configuration-type", "configuration-type1-9972") - .hasNext()); - - // check if configuration node gets created for 2, 3, 4 - assertEquals("configuration node created with type=DHV, tunnel-bandwidth=servInstance-9972-4-BandwidthMigration", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "servInstance-9972-4-BandwidthMigration") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration") - .has("configuration-type", "DHV").has("tunnel-bandwidth", "bandwidth-total-4-BandwidthMigration") - .hasNext()); - - assertEquals("configuration node created with type=DHV, tunnel-bandwidth=servInstance-9972-3-BandwidthMigration", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "servInstance-9972-3-BandwidthMigration") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration") - .has("configuration-type", "DHV").has("tunnel-bandwidth", "bandwidth-total-3-BandwidthMigration") - .hasNext()); - - assertEquals("configuration node created with type=DHV, tunnel-bandwidth=servInstance-9972-2-BandwidthMigration", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "servInstance-9972-2-BandwidthMigration") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration") - .has("configuration-type", "DHV").has("tunnel-bandwidth", "bandwidth-total-2-BandwidthMigration") - .hasNext()); - - // configuration modified for ServInstance-9972-1-BandwidthMigration - assertEquals("configuration node modified for ServInstance-9972-1-BandwidthMigration, tunnel-bandwidth=2380", true, - g.V().has("global-customer-id", "customer-9972-BandwidthMigration") - .in("org.onap.relationships.inventory.BelongsTo").has("service-type", "DHV") - .in("org.onap.relationships.inventory.BelongsTo").has("service-instance-id", "ServInstance-9972-1-BandwidthMigration") - .out("org.onap.relationships.inventory.Uses").has("aai-node-type", "configuration") - .has("configuration-type", "DHV").has("tunnel-bandwidth", "2380") - .hasNext()); - } - - @Test - public void testGetAffectedNodeTypes() { - Optional<String[]> types = migration.getAffectedNodeTypes(); - Optional<String[]> expected = Optional.of(new String[]{"service-instance"}); - - assertNotNull(types); - assertArrayEquals(expected.get(), types.get()); - } - - @Test - public void testGetMigrationName() { - String migrationName = migration.getMigrationName(); - - assertNotNull(migrationName); - assertEquals("service-instance-to-configuration", migrationName); - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/migration/v12/SDWANSpeedChangeMigrationTest.java b/aai-resources/src/test/java/org/onap/aai/migration/v12/SDWANSpeedChangeMigrationTest.java deleted file mode 100644 index 677050a..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/v12/SDWANSpeedChangeMigrationTest.java +++ /dev/null @@ -1,379 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration.v12; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.JanusGraphTransaction; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.db.EdgeRules; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -public class SDWANSpeedChangeMigrationTest extends AAISetup { - - private final static Version version = Version.v12; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - private Loader loader; - private TransactionalGraphEngine dbEngine; - private JanusGraph graph; - private SDWANSpeedChangeMigration migration; - private EdgeRules rules; - private GraphTraversalSource g; - private JanusGraphTransaction tx; - Vertex pLinkWan1; - Vertex pLinkWan3; - Vertex pLinkWan5; - Vertex pLinkWan7; - - - - @Before - public void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend", "inmemory").open(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - rules = EdgeRules.getInstance(); - - Vertex servSub1 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .next(); - Vertex servinst1 = g.addV().property("aai-node-type", "service-instance") - .property("service-type", "DHV") - .next(); - Vertex allotedRsrc1 = g.addV().property("aai-node-type", "allotted-resource") - .property("id", "rsrc1") - .next(); - Vertex servinst2 = g.addV().property("aai-node-type", "service-instance") - .property("service-type", "VVIG") - .next(); - Vertex servSub2 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "VVIG") - .next(); - - Vertex genericvnf1 = g.addV().property("aai-node-type", "generic-vnf") - .property("vnf-id", "vnfId1") - .next(); - Vertex vServer1 = g.addV().property("aai-node-type", "vserver") - .next(); - Vertex pServer1 = g.addV().property("aai-node-type", "pserver") - .next(); - Vertex pInterfaceWan1 = g.addV().property("aai-node-type", "p-interface") - .property("interface-name", "ge-0/0/10") - .next(); - Vertex tunnelXConnectAll_Wan1 = g.addV().property("aai-node-type", "tunnel-xconnect") - .property("id", "txc1") - .property("bandwidth-up-wan1", "300 Mbps") - .property("bandwidth-down-wan1", "400 Mbps") - .property("bandwidth-up-wan2", "500 Mbps") - .property("bandwidth-down-wan2", "600 Mbps") - .next(); - - pLinkWan1 = g.addV().property("aai-node-type", "physical-link") - .property("link-name", "pLinkWan1") - .property("service-provider-bandwidth-up-value", "empty") - .property("service-provider-bandwidth-up-units", "empty") - .property("service-provider-bandwidth-down-value", "empty") - .property("service-provider-bandwidth-down-units", "empty") - .next(); - Vertex servSub3 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .next(); - Vertex servinst3 = g.addV().property("aai-node-type", "service-instance") - .property("service-type", "DHV") - .next(); - Vertex allotedRsrc3 = g.addV().property("aai-node-type", "allotted-resource") - .property("id", "rsrc1") - .next(); - Vertex servinst4 = g.addV().property("aai-node-type", "service-instance") - .property("service-type", "VVIG") - .next(); - Vertex servSub4 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "VVIG") - .next(); - - Vertex genericvnf3 = g.addV().property("aai-node-type", "generic-vnf") - .property("vnf-id", "vnfId1") - .next(); - Vertex vServer3 = g.addV().property("aai-node-type", "vserver") - .next(); - Vertex pServer3 = g.addV().property("aai-node-type", "pserver") - .next(); - Vertex pInterfaceWan3 = g.addV().property("aai-node-type", "p-interface") - .property("interface-name", "ge-0/0/11") - .next(); - Vertex tunnelXConnectAll_Wan3 = g.addV().property("aai-node-type", "tunnel-xconnect") - .property("id", "txc3") - .property("bandwidth-up-wan1", "300 Mbps") - .property("bandwidth-down-wan1", "400 Mbps") - .property("bandwidth-up-wan2", "500 Mbps") - .property("bandwidth-down-wan2", "600 Mbps") - .next(); - - pLinkWan3 = g.addV().property("aai-node-type", "physical-link") - .property("link-name", "pLinkWan3") - .property("service-provider-bandwidth-up-value", "empty") - .property("service-provider-bandwidth-up-units", "empty") - .property("service-provider-bandwidth-down-value", "empty") - .property("service-provider-bandwidth-down-units", "empty") - .next(); - - - Vertex servSub5 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .next(); - Vertex servinst5 = g.addV().property("aai-node-type", "service-instance") - .property("service-type", "DHV") - .next(); - Vertex allotedRsrc5 = g.addV().property("aai-node-type", "allotted-resource") - .property("id", "rsrc1") - .next(); - Vertex servinst6 = g.addV().property("aai-node-type", "service-instance") - .property("service-type", "VVIG") - .next(); - Vertex servSub6 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "VVIG") - .next(); - - Vertex genericvnf5 = g.addV().property("aai-node-type", "generic-vnf") - .property("vnf-id", "vnfId1") - .next(); - Vertex vServer5 = g.addV().property("aai-node-type", "vserver") - .next(); - Vertex pServer5 = g.addV().property("aai-node-type", "pserver") - .next(); - Vertex pInterfaceWan5 = g.addV().property("aai-node-type", "p-interface") - .property("interface-name", "ge-0/0/10") - .next(); - Vertex tunnelXConnectAll_Wan5 = g.addV().property("aai-node-type", "tunnel-xconnect") - .property("id", "txc5") - .property("bandwidth-up-wan1", "") - .property("bandwidth-down-wan1", "") - .property("bandwidth-up-wan2", "500 Mbps") - .property("bandwidth-down-wan2", "600 Mbps") - .next(); - - pLinkWan5 = g.addV().property("aai-node-type", "physical-link") - .property("link-name", "pLinkWan5") - .property("service-provider-bandwidth-up-value", "") - .property("service-provider-bandwidth-up-units", "") - .property("service-provider-bandwidth-down-value", "") - .property("service-provider-bandwidth-down-units", "") - .next(); - - - Vertex servSub7 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "DHV") - .next(); - Vertex servinst7 = g.addV().property("aai-node-type", "service-instance") - .property("service-type", "DHV") - .next(); - Vertex allotedRsrc7 = g.addV().property("aai-node-type", "allotted-resource") - .property("id", "rsrc1") - .next(); - Vertex servinst9 = g.addV().property("aai-node-type", "service-instance") - .property("service-type", "VVIG") - .next(); - Vertex servSub9 = g.addV().property("aai-node-type", "service-subscription") - .property("service-type", "VVIG") - .next(); - - Vertex genericvnf7 = g.addV().property("aai-node-type", "generic-vnf") - .property("vnf-id", "vnfId1") - .next(); - Vertex vServer7 = g.addV().property("aai-node-type", "vserver") - .next(); - Vertex pServer7 = g.addV().property("aai-node-type", "pserver") - .next(); - Vertex pInterfaceWan7 = g.addV().property("aai-node-type", "p-interface") - .property("interface-name", "ge-0/0/11") - .next(); - Vertex tunnelXConnectAll_Wan7 = g.addV().property("aai-node-type", "tunnel-xconnect") - .property("id", "txc7") - .property("bandwidth-up-wan1", "300 Mbps") - .property("bandwidth-down-wan1", "400 Mbps") - .property("bandwidth-up-wan2", "") - .property("bandwidth-down-wan2", "") - .next(); - - pLinkWan7 = g.addV().property("aai-node-type", "physical-link") - .property("link-name", "pLinkWan5") - .property("service-provider-bandwidth-up-value", "") - .property("service-provider-bandwidth-up-units", "") - .property("service-provider-bandwidth-down-value", "") - .property("service-provider-bandwidth-down-units", "") - .next(); - - - - rules.addTreeEdge(g, servSub1, servinst1); - rules.addEdge(g, servinst1, allotedRsrc1); - rules.addTreeEdge(g, servinst2, servSub2); - rules.addTreeEdge(g, allotedRsrc1, servinst2); - - rules.addTreeEdge(g, allotedRsrc1, tunnelXConnectAll_Wan1); - - - rules.addEdge(g, servinst1, genericvnf1); - rules.addEdge(g, genericvnf1, vServer1); - rules.addEdge(g, vServer1, pServer1); - rules.addTreeEdge(g, pServer1, pInterfaceWan1); - rules.addEdge(g, pInterfaceWan1, pLinkWan1); - - rules.addTreeEdge(g, servSub3, servinst3); - rules.addEdge(g, servinst3, allotedRsrc3); - rules.addTreeEdge(g, servinst4, servSub4); - rules.addTreeEdge(g, allotedRsrc3, servinst4); - - rules.addTreeEdge(g, allotedRsrc3, tunnelXConnectAll_Wan3); - - - rules.addEdge(g, servinst3, genericvnf3); - rules.addEdge(g, genericvnf3, vServer3); - rules.addEdge(g, vServer3, pServer3); - rules.addTreeEdge(g, pServer3, pInterfaceWan3); - rules.addEdge(g, pInterfaceWan3, pLinkWan3); - - - rules.addTreeEdge(g, servSub5, servinst5); - rules.addEdge(g, servinst5, allotedRsrc5); - rules.addTreeEdge(g, servinst6, servSub6); - rules.addTreeEdge(g, allotedRsrc5, servinst6); - - rules.addTreeEdge(g, allotedRsrc5, tunnelXConnectAll_Wan5); - - - rules.addEdge(g, servinst5, genericvnf5); - rules.addEdge(g, genericvnf5, vServer5); - rules.addEdge(g, vServer5, pServer5); - rules.addTreeEdge(g, pServer5, pInterfaceWan5); - rules.addEdge(g, pInterfaceWan5, pLinkWan5); - - rules.addTreeEdge(g, servSub7, servinst7); - rules.addEdge(g, servinst7, allotedRsrc7); - rules.addTreeEdge(g, servinst9, servSub9); - rules.addTreeEdge(g, allotedRsrc7, servinst9); - - rules.addTreeEdge(g, allotedRsrc7, tunnelXConnectAll_Wan7); - - - rules.addEdge(g, servinst7, genericvnf7); - rules.addEdge(g, genericvnf7, vServer7); - rules.addEdge(g, vServer7, pServer7); - rules.addTreeEdge(g, pServer7, pInterfaceWan7); - rules.addEdge(g, pInterfaceWan7, pLinkWan7); - - - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - GraphTraversalSource traversal = g; - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - migration = new SDWANSpeedChangeMigration(spy); - migration.run(); - } - - - @After - public void cleanUp() { - tx.rollback(); - graph.close(); - } - - - /*** - * Checks to see if the Wan1 properties were updated in the physical link - */ - - @Test - public void ConfirmWan1Changes() { - - assertEquals("300", pLinkWan1.property("service-provider-bandwidth-up-value").value().toString()); - assertEquals("Mbps", pLinkWan1.property("service-provider-bandwidth-up-units").value().toString()); - assertEquals("400", pLinkWan1.property("service-provider-bandwidth-down-value").value().toString()); - assertEquals("Mbps", pLinkWan1.property("service-provider-bandwidth-down-units").value().toString()); - - } - - /*** - * Checks to see if the Wan2 properties were updated in the physical link - */ - @Test - public void ConfirmWan2Changes() { - - assertEquals("500", pLinkWan3.property("service-provider-bandwidth-up-value").value().toString()); - assertEquals("Mbps", pLinkWan3.property("service-provider-bandwidth-up-units").value().toString()); - assertEquals("600", pLinkWan3.property("service-provider-bandwidth-down-value").value().toString()); - assertEquals("Mbps", pLinkWan3.property("service-provider-bandwidth-down-units").value().toString()); - - } - - /*** - * if tunnel xconncets missing bandwidth up 1 value the plink should not be updated - */ - - @Test - public void Wan1EmptyNoChanges() { - - assertEquals("", pLinkWan5.property("service-provider-bandwidth-up-value").value().toString()); - assertEquals("", pLinkWan5.property("service-provider-bandwidth-up-units").value().toString()); - assertEquals("", pLinkWan5.property("service-provider-bandwidth-down-value").value().toString()); - assertEquals("", pLinkWan5.property("service-provider-bandwidth-down-units").value().toString()); - - } - - /*** - * if tunnel xconncets missing bandwidth up 2 value the plink should not be updated - */ - - @Test - public void Wan2EmptyNoChanges() { - - assertEquals("", pLinkWan7.property("service-provider-bandwidth-up-value").value().toString()); - assertEquals("", pLinkWan7.property("service-provider-bandwidth-up-units").value().toString()); - assertEquals("", pLinkWan7.property("service-provider-bandwidth-down-value").value().toString()); - assertEquals("", pLinkWan7.property("service-provider-bandwidth-down-units").value().toString()); - - } - - -} diff --git a/aai-resources/src/test/java/org/onap/aai/migration/v12/ToscaMigrationTest.java b/aai-resources/src/test/java/org/onap/aai/migration/v12/ToscaMigrationTest.java deleted file mode 100644 index 9e21947..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/v12/ToscaMigrationTest.java +++ /dev/null @@ -1,181 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration.v12; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.schema.JanusGraphManagement; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Graph; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import org.onap.aai.AAISetup; -import org.onap.aai.db.props.AAIProperties; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.db.AAIDirection; -import org.onap.aai.serialization.db.EdgeProperty; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -public class ToscaMigrationTest extends AAISetup { - - private final static Version version = Version.v12; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - private Loader loader; - private TransactionalGraphEngine dbEngine; - private JanusGraph graph; - private ToscaMigration migration; - private GraphTraversalSource g; - private Graph tx; - - @Before - public void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend","inmemory").open(); - JanusGraphManagement janusgraphManagement = graph.openManagement(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - - Vertex gvnf = g.addV().property(AAIProperties.NODE_TYPE, "generic-vnf") - .property("vnf-id", "toscaMigration-test-vnf") - .next(); - - Vertex lInterface = g.addV().property(AAIProperties.NODE_TYPE, "l-interface") - .property("interface-name", "toscaMigration-test-lint") - .next(); - - Vertex logicalLink = g.addV().property(AAIProperties.NODE_TYPE, "logical-link") - .property("link-name", "toscaMigration-logical-link") - .next(); - - - - gvnf.addEdge("hasLInterface", lInterface, EdgeProperty.CONTAINS.toString(), AAIDirection.OUT.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - - lInterface.addEdge("usesLogicalLink", logicalLink, EdgeProperty.CONTAINS.toString(), AAIDirection.NONE.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - lInterface.addEdge("sourceLInterface", logicalLink, EdgeProperty.CONTAINS.toString(), AAIDirection.NONE.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - - Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next(); - Vertex vnfc = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next(); - pserver.addEdge("blah", vnfc, EdgeProperty.CONTAINS.toString(), AAIDirection.NONE.toString(), - EdgeProperty.DELETE_OTHER_V.toString(), AAIDirection.NONE.toString()); - - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - GraphTraversalSource traversal = g; - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - Mockito.doReturn(janusgraphManagement).when(adminSpy).getManagementSystem(); - migration = new ToscaMigration(spy); - migration.run(); - - - } - - @After - public void cleanUp() { - tx.tx().rollback(); - graph.close(); - } - - @Test - public void verifyVnfHasOnlyNewEdgeTest() { - - // We want to check that this edge has the expected new label and reversed direction from - // what it was created with. NOTE - if the csv file changes what the new label is supposed - // to be, then this test will need to be updated. - - assertEquals("edge direction and label were migrated", true, - g.V().has(AAIProperties.NODE_TYPE, "generic-vnf").has("vnf-id", "toscaMigration-test-vnf").inE() - .hasLabel("org.onap.relationships.inventory.BelongsTo").hasNext()); - - - assertEquals("if we look for old edge, it should be gone", false, - g.V().has(AAIProperties.NODE_TYPE, "generic-vnf").has("vnf-id", "toscaMigration-test-vnf").outE() - .hasLabel("hasLInterface").hasNext()); - } - - @Test - public void verifyGraphHasNoOldEdgeLabelsTest() { - assertEquals("Graph should have none of the old edge label" - , Long.valueOf(0) - , g.E().hasLabel("hasLInterface","usesLogicalLink").count().next()); - assertEquals("Graph should have none of the old edge label" - , Long.valueOf(2) - , g.E().hasLabel("org.onap.relationships.inventory.BelongsTo","tosca.relationships.network.LinksTo") - .count().next()); - } - - @Test - public void verifyGenericVnfHas1EdgeTest() { - assertEquals("Generic vnf should have 1 edge" - , Long.valueOf(1) - , g.V().has(AAIProperties.NODE_TYPE, "generic-vnf") - .both() - .count().next()); - - } - - @Test - public void verifyLogicalLinkHas2EdgesTest() { - assertEquals("Logical Link should have 2 edges" - , Long.valueOf(2) - , g.V().has(AAIProperties.NODE_TYPE, "logical-link") - .both() - .count().next()); - - assertTrue("Logical Link has source edge" - , g.V().has(AAIProperties.NODE_TYPE, "logical-link").bothE("org.onap.relationships.inventory.Source").hasNext()); - - assertTrue("Logical Link has default edge" - , g.V().has(AAIProperties.NODE_TYPE, "logical-link").bothE("tosca.relationships.network.LinksTo").hasNext()); - - } - - @Test - public void checkThatEdgeWithNoRulesDoesNotGetMigratedTest() { - assertTrue("Edge with no rule did not get migrated ", g.E().hasLabel("blah").hasNext()); - } - -} - -
\ No newline at end of file diff --git a/aai-resources/src/test/java/org/onap/aai/migration/v13/MigrateInstanceGroupSubTypeTest.java b/aai-resources/src/test/java/org/onap/aai/migration/v13/MigrateInstanceGroupSubTypeTest.java deleted file mode 100644 index a29fb6b..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/v13/MigrateInstanceGroupSubTypeTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration.v13; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.JanusGraphTransaction; - - -public class MigrateInstanceGroupSubTypeTest extends AAISetup{ - - private static final String SUB_TYPE_VALUE = "SubTypeValue"; - private final static Version version = Version.v13; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - private Loader loader; - private TransactionalGraphEngine dbEngine; - private JanusGraph graph; - private MigrateInstanceGroupSubType migration; - private GraphTraversalSource g; - private JanusGraphTransaction tx; - Vertex instanceGroup; - Vertex instanceGroupWithoutTSubType; - - - @Before - public void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend", "inmemory").open(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - instanceGroup = g.addV().property("aai-node-type", MigrateInstanceGroupSubType.INSTANCE_GROUP_NODE_TYPE) - .property( MigrateInstanceGroupSubType.SUB_TYPE_PROPERTY, SUB_TYPE_VALUE) - .next(); - - instanceGroupWithoutTSubType = g.addV().property("aai-node-type", MigrateInstanceGroupSubType.INSTANCE_GROUP_NODE_TYPE) - .next(); - - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - GraphTraversalSource traversal = g; - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - migration = new MigrateInstanceGroupSubType(spy); - } - - @After - public void cleanUp() { - tx.rollback(); - graph.close(); - } - - - /*** - * checks if the type/subtype property were renamed - */ - - @Test - public void confirmTypeAndSubTypeWereRenamed() { - migration.run(); - - //instance group with sub-type - assertEquals(SUB_TYPE_VALUE, instanceGroup.property(MigrateInstanceGroupSubType.INSTANCE_GROUP_ROLE_PROPERTY).value()); - assertFalse(instanceGroup.property(MigrateInstanceGroupSubType.SUB_TYPE_PROPERTY).isPresent()); - - //instance group without subtype - assertFalse(instanceGroupWithoutTSubType.property(MigrateInstanceGroupSubType.INSTANCE_GROUP_ROLE_PROPERTY).isPresent()); - assertFalse(instanceGroupWithoutTSubType.property(MigrateInstanceGroupSubType.SUB_TYPE_PROPERTY).isPresent()); - } -}
\ No newline at end of file diff --git a/aai-resources/src/test/java/org/onap/aai/migration/v13/MigrateInstanceGroupTypeTest.java b/aai-resources/src/test/java/org/onap/aai/migration/v13/MigrateInstanceGroupTypeTest.java deleted file mode 100644 index 11e5157..0000000 --- a/aai-resources/src/test/java/org/onap/aai/migration/v13/MigrateInstanceGroupTypeTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.migration.v13; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.DBConnectionType; -import org.onap.aai.introspection.Loader; -import org.onap.aai.introspection.LoaderFactory; -import org.onap.aai.introspection.ModelType; -import org.onap.aai.introspection.Version; -import org.onap.aai.serialization.engines.QueryStyle; -import org.onap.aai.serialization.engines.JanusGraphDBEngine; -import org.onap.aai.serialization.engines.TransactionalGraphEngine; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.JanusGraphTransaction; - - -public class MigrateInstanceGroupTypeTest extends AAISetup{ - - private static final String TYPE_VALUE = "TypeValue"; - private final static Version version = Version.v13; - private final static ModelType introspectorFactoryType = ModelType.MOXY; - private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL; - private final static DBConnectionType type = DBConnectionType.REALTIME; - private Loader loader; - private TransactionalGraphEngine dbEngine; - private JanusGraph graph; - private MigrateInstanceGroupType migration; - private GraphTraversalSource g; - private JanusGraphTransaction tx; - Vertex instanceGroup; - Vertex instanceGroupWithoutType; - - - @Before - public void setUp() throws Exception { - graph = JanusGraphFactory.build().set("storage.backend", "inmemory").open(); - tx = graph.newTransaction(); - g = tx.traversal(); - loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version); - dbEngine = new JanusGraphDBEngine( - queryStyle, - type, - loader); - instanceGroup = g.addV().property("aai-node-type", MigrateInstanceGroupType.INSTANCE_GROUP_NODE_TYPE) - .property( MigrateInstanceGroupType.TYPE_PROPERTY, TYPE_VALUE) - .next(); - - instanceGroupWithoutType = g.addV().property("aai-node-type", MigrateInstanceGroupType.INSTANCE_GROUP_NODE_TYPE) - .next(); - - TransactionalGraphEngine spy = spy(dbEngine); - TransactionalGraphEngine.Admin adminSpy = spy(dbEngine.asAdmin()); - GraphTraversalSource traversal = g; - when(spy.asAdmin()).thenReturn(adminSpy); - when(adminSpy.getTraversalSource()).thenReturn(traversal); - migration = new MigrateInstanceGroupType(spy); - } - - @After - public void cleanUp() { - tx.rollback(); - graph.close(); - } - - - /*** - * checks if the type/subtype property were renamed - */ - - @Test - public void confirmTypeAndSubTypeWereRenamed() { - migration.run(); - - //instance group with type - assertEquals(TYPE_VALUE, instanceGroup.property(MigrateInstanceGroupType.INSTANCE_GROUP_TYPE_PROPERTY).value()); - assertFalse(instanceGroup.property(MigrateInstanceGroupType.TYPE_PROPERTY).isPresent()); - - //instance group without type - assertFalse(instanceGroupWithoutType.property(MigrateInstanceGroupType.INSTANCE_GROUP_TYPE_PROPERTY).isPresent()); - assertFalse(instanceGroupWithoutType.property(MigrateInstanceGroupType.TYPE_PROPERTY).isPresent()); - } -}
\ No newline at end of file diff --git a/aai-resources/src/test/java/org/onap/aai/rest/AbstractSpringRestTest.java b/aai-resources/src/test/java/org/onap/aai/rest/AbstractSpringRestTest.java new file mode 100644 index 0000000..ab9fdd1 --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/rest/AbstractSpringRestTest.java @@ -0,0 +1,128 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.rest; + +import org.apache.tinkerpop.gremlin.process.traversal.P; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; +import org.janusgraph.core.JanusGraph; +import org.janusgraph.core.JanusGraphTransaction; +import org.junit.*; +import org.onap.aai.ResourcesApp; +import org.onap.aai.ResourcesTestConfiguration; +import org.onap.aai.config.PropertyPasswordConfiguration; +import org.onap.aai.dbmap.AAIGraph; +import org.onap.aai.exceptions.AAIException; +import org.onap.aai.nodes.NodeIngestor; +import org.onap.aai.util.AAIConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.embedded.LocalServerPort; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.rules.SpringClassRule; +import org.springframework.test.context.junit4.rules.SpringMethodRule; +import org.springframework.web.client.RestTemplate; + +import java.io.UnsupportedEncodingException; +import java.util.Base64; +import java.util.Collections; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = ResourcesApp.class) +@TestPropertySource(locations = "classpath:application-test.properties") +@ContextConfiguration(initializers = PropertyPasswordConfiguration.class) +@Import(ResourcesTestConfiguration.class) +public abstract class AbstractSpringRestTest { + + @ClassRule + public static final SpringClassRule springClassRule = new SpringClassRule(); + + @Rule + public final SpringMethodRule springMethodRule = new SpringMethodRule(); + + @Autowired + protected RestTemplate restTemplate; + + @Autowired + protected NodeIngestor nodeIngestor; + + @LocalServerPort + protected int randomPort; + + protected HttpEntity httpEntity; + + protected String baseUrl; + protected HttpHeaders headers ; + + @BeforeClass + public static void setupConfig() throws AAIException { + System.setProperty("AJSC_HOME", "./"); + System.setProperty("BUNDLECONFIG_DIR", "src/main/resources/"); + } + + @Before + public void setup() throws AAIException, UnsupportedEncodingException { + + AAIConfig.init(); + AAIGraph.getInstance(); + + headers = new HttpHeaders(); + + String authorization = Base64.getEncoder().encodeToString("AAI:AAI".getBytes("UTF-8")); + + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.add("Real-Time", "true"); + headers.add("X-FromAppId", "JUNIT"); + headers.add("X-TransactionId", "JUNIT"); + + headers.add("Authorization", "Basic " + authorization); + httpEntity = new HttpEntity(headers); + baseUrl = "https://localhost:" + randomPort; + } + + @After + public void tearDown(){ + + JanusGraph janusGraph = AAIGraph.getInstance().getGraph(); + JanusGraphTransaction transaction = janusGraph.newTransaction(); + + boolean success = true; + + try { + GraphTraversalSource g = transaction.traversal(); + g.V().has("source-of-truth", P.within("JUNIT", "AAI-EXTENSIONS")) + .toList() + .stream() + .forEach(v -> v.remove()); + } catch(Exception ex){ + success = false; + } finally { + if(success){ + transaction.commit(); + } else { + transaction.rollback(); + } + } + } +} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/BulkAddConsumerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/BulkAddConsumerTest.java index 350a011..6e98a39 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/BulkAddConsumerTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/BulkAddConsumerTest.java @@ -28,11 +28,9 @@ import javax.ws.rs.core.Response; import org.apache.commons.lang3.StringUtils; import org.junit.Test; -import org.onap.aai.introspection.Version; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; - public class BulkAddConsumerTest extends BulkProcessorTestAbstraction { private static final EELFLogger logger = EELFManager.getInstance().getLogger(BulkAddConsumerTest.class.getName()); @@ -137,6 +135,6 @@ public class BulkAddConsumerTest extends BulkProcessorTestAbstraction { @Override protected String getUri() { - return "/aai/" + Version.getLatest().toString() + "/bulkadd"; + return "/aai/" + schemaVersions.getDefaultVersion().toString() + "/bulkadd"; } } diff --git a/aai-resources/src/test/java/org/onap/aai/rest/BulkProcessConsumerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/BulkProcessConsumerTest.java index b6ec0ae..1d8702a 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/BulkProcessConsumerTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/BulkProcessConsumerTest.java @@ -1,285 +1,298 @@ -/**
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.aai.rest;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-
-import javax.ws.rs.core.Response;
-
-import org.apache.commons.lang3.StringUtils;
-import org.json.JSONException;
-import org.junit.Test;
-import org.onap.aai.introspection.Version;
-import org.skyscreamer.jsonassert.JSONAssert;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import org.springframework.mock.web.MockHttpServletRequest;
-
-public class BulkProcessConsumerTest extends BulkProcessorTestAbstraction {
-
- private static final EELFLogger logger = EELFManager.getInstance().getLogger(BulkProcessConsumerTest.class.getName());
- private LegacyMoxyConsumer legacyMoxyConsumer;
-
- @Test
- public void bulkAddPayloadInBulkProcessTest() throws IOException {
-
- when(uriInfo.getPath()).thenReturn(uri);
- when(uriInfo.getPath(false)).thenReturn(uri);
-
- String payload = getBulkPayload("pserver-transactions");
- Response response = executeRequest(payload);
-
- assertEquals("Valid Response Code", Response.Status.CREATED.getStatusCode(), response.getStatus());
- assertEquals("Contains 3 {\"201\":null}", 3, StringUtils.countMatches(response.getEntity().toString(), "{\"201\":null}"));
- }
-
- @Test
- public void bulkProcessPayloadTest() throws IOException {
-
- when(uriInfo.getPath()).thenReturn(uri);
- when(uriInfo.getPath(false)).thenReturn(uri);
-
- String payload = getBulkPayload("pserver-bulk-process-transactions");
- Response response = executeRequest(payload);
-
- assertEquals("Valid Response Code", Response.Status.CREATED.getStatusCode(), response.getStatus());
- assertEquals("Contains 1 {\"201\":null}", 1, StringUtils.countMatches(response.getEntity().toString(), "{\"201\":null}"));
- assertEquals("Contains 1 {\"404\":\"{", 1, StringUtils.countMatches(response.getEntity().toString(), "{\"404\":\"{"));
- assertEquals("Contains 1 ERR.5.4.6114", 1, StringUtils.countMatches(response.getEntity().toString(), "ERR.5.4.6114"));
- }
-
- @Test
- public void bulkProcessComplexDeletePayloadTest() throws IOException {
-
- when(uriInfo.getPath()).thenReturn(uri);
- when(uriInfo.getPath(false)).thenReturn(uri);
-
- String payload = getBulkPayload("complex-bulk-process-transactions");
- Response response = executeRequest(payload);
-
- System.out.println(response.getEntity().toString());
- assertEquals("Valid Response Code", Response.Status.CREATED.getStatusCode(), response.getStatus());
- assertEquals("Contains 0 {\"201\":null}", 0, StringUtils.countMatches(response.getEntity().toString(), "{\"201\":null}"));
- assertEquals("Contains 1 {\"404\":\"{", 1, StringUtils.countMatches(response.getEntity().toString(), "{\"404\":\"{"));
- assertEquals("Contains 1 ERR.5.4.6114", 1, StringUtils.countMatches(response.getEntity().toString(), "ERR.5.4.6114"));
- }
-
- @Test
- public void testBulkDeletePserverAndComplexRelationship() throws IOException, JSONException {
-
- legacyMoxyConsumer = new LegacyMoxyConsumer();
-
- String pserverData = getPayload("payloads/relationship/pserver-bugfix.json");
- String complexData = getPayload("payloads/relationship/complex-bugfix.json");
-
- String hostname = "pserver-9876543210-77-jenkins";
- String physicalLocationId ="complex-987654321-77-jenkins";
-
- String pserverUri = String.format("cloud-infrastructure/pservers/pserver/%s", hostname);
- String complexUri = String.format("cloud-infrastructure/complexes/complex/%s", physicalLocationId);
-
- doSetupResource(pserverUri, pserverData);
- doSetupResource(complexUri, complexData);
-
- String complexToPserverRelationshipData = getPayload("payloads/relationship/pserver-complex-relationship-for-bulk.json");
- String complexToPserverRelationshipUri = String.format(
- "cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship", hostname);
-
- Response response = legacyMoxyConsumer.updateRelationship(
- complexToPserverRelationshipData,
- Version.getLatest().toString(),
- complexToPserverRelationshipUri,
- httpHeaders,
- uriInfo,
- new MockHttpServletRequest("DELETE", "http://www.test.com")
- );
-
- assertNotNull("Response from the legacy moxy consumer returned null", response);
- int code = response.getStatus();
- if(!VALID_HTTP_STATUS_CODES.contains(code)){
- System.out.println("Response Code: " + code + "\tEntity: " + response.getEntity());
- }
-
- assertEquals("Expected to return status created from the response",
- Response.Status.OK.getStatusCode(), response.getStatus());
- logger.info("Response Code: " + code + "\tEntity: " + response.getEntity());
-
- // TODO - Need to actually verify the relationship between pserver and cloud-region
-
- String payload = getBulkPayload("complex-bulk-process-delete-transactions");
- Response responseBulkDelete = executeRequest(payload);
-
- System.out.println(responseBulkDelete.getEntity().toString());
-
- code = responseBulkDelete.getStatus();
-
- if(!VALID_HTTP_STATUS_CODES.contains(code)){
- System.out.println("Response Code: " + code + "\tEntity: " + responseBulkDelete.getEntity());
- System.out.println("Response Code: " + code + "\tEntity: " + responseBulkDelete.getEntity());
- }
- assertEquals("Expected to return status created from the response",
- Response.Status.CREATED.getStatusCode(), responseBulkDelete.getStatus());
- assertEquals("Contains 0 {\"204\":null}", 1, StringUtils.countMatches(responseBulkDelete.getEntity().toString(), "{\"204\":null}"));
-
- }
-
- protected void doSetupResource(String uri, String payload) throws JSONException {
-
- when(uriInfo.getPath()).thenReturn(uri);
- when(uriInfo.getPath(false)).thenReturn(uri);
-
- Response response = legacyMoxyConsumer.getLegacy(
- "",
- "-1",
- "-1",
- Version.getLatest().toString(),
- uri,
- "all",
- "false",
- httpHeaders,
- uriInfo,
- new MockHttpServletRequest("GET", "http://www.test.com")
- );
-
- assertNotNull("Response from the legacy moxy consumer returned null", response);
- assertEquals("Expected to not have the data already in memory",
- Response.Status.NOT_FOUND.getStatusCode(), response.getStatus());
-
- response = legacyMoxyConsumer.update(
- payload,
- Version.getLatest().toString(),
- uri,
- httpHeaders,
- uriInfo,
- new MockHttpServletRequest("PUT", "http://www.test.com")
- );
-
- assertNotNull("Response from the legacy moxy consumer returned null", response);
- int code = response.getStatus();
- if(!VALID_HTTP_STATUS_CODES.contains(code)){
- System.out.println("Response Code: " + code + "\tEntity: " + response.getEntity());
- }
- assertEquals("Expected to return status created from the response",
- Response.Status.CREATED.getStatusCode(), response.getStatus());
-
- queryParameters.add("depth", "10000");
- response = legacyMoxyConsumer.getLegacy(
- "",
- "-1",
- "-1",
- Version.getLatest().toString(),
- uri,
- "all",
- "false",
- httpHeaders,
- uriInfo,
- new MockHttpServletRequest("GET", "http://www.test.com")
- );
-
- assertNotNull("Response from the legacy moxy consumer returned null", response);
- assertEquals("Expected to return the pserver data that was just put in memory",
- Response.Status.OK.getStatusCode(), response.getStatus());
-
- if("".equalsIgnoreCase(payload)){
- payload = "{}";
- }
-
- JSONAssert.assertEquals(payload, response.getEntity().toString(), false);
- }
-
-
- @Test
- public void bulkAddInvalidMethodTest() throws IOException {
-
- when(uriInfo.getPath()).thenReturn(uri);
- when(uriInfo.getPath(false)).thenReturn(uri);
-
- String payload = getBulkPayload("pserver-transactions-invalid-method");
- Response response = executeRequest(payload);
-
- assertEquals("Valid Response Code", Response.Status.CREATED.getStatusCode(), response.getStatus());
- assertEquals("Contains 1 {\"400\":\"{", 1, StringUtils.countMatches(response.getEntity().toString(), "{\"400\":\"{"));
- assertEquals("Contains 1 ERR.5.4.6118", 1, StringUtils.countMatches(response.getEntity().toString(), "ERR.5.4.6118"));
- }
-
- @Test
- public void bulkAddThrowExceptionWhenPayloadContainsNoTransactionsTest(){
-
- when(uriInfo.getPath()).thenReturn(uri);
- when(uriInfo.getPath(false)).thenReturn(uri);
-
- String payload = "{\"transactions\":[]}";
- Response response = executeRequest(payload);
-
- assertEquals("Bad Request", Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertEquals("Contains error code", true, response.getEntity().toString().contains("ERR.5.4.6118"));
- }
-
- @Test
- public void bulkAddThrowExceptionWhenInvalidJsonTest() throws IOException {
-
- when(uriInfo.getPath()).thenReturn(uri);
- when(uriInfo.getPath(false)).thenReturn(uri);
-
- String payload = "{";
- Response response = executeRequest(payload);
-
- assertEquals("Bad Request", Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertEquals("Contains error code", true, response.getEntity().toString().contains("ERR.5.4.6111"));
- }
- @Test
- public void bulkProcessCheckMeetsLimit() throws IOException{
- when(uriInfo.getPath()).thenReturn(uri);
- when(uriInfo.getPath(false)).thenReturn(uri);
-
- String payload = getBulkPayload("pserver-bulk-limit-meet");
- Response response = executeRequest(payload);
-
- assertEquals("Created", Response.Status.CREATED.getStatusCode(), response.getStatus());
- assertEquals("Contains 30 {\"201\":null}", 30, StringUtils.countMatches(response.getEntity().toString(), "{\"201\":null}"));
- }
-
- @Test
- public void bulkProcessCheckExceedsLimit() throws IOException{
- when(uriInfo.getPath()).thenReturn(uri);
- when(uriInfo.getPath(false)).thenReturn(uri);
-
- String payload = getBulkPayload("pserver-bulk-limit-exceed");
- Response response = executeRequest(payload);
-
- assertEquals("Bad Request", Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertEquals("Contains error code", true, response.getEntity().toString().contains("ERR.5.4.6147"));
- }
-
- @Override
- protected BulkConsumer getConsumer(){
- return new BulkProcessConsumer();
- }
-
- @Override
- protected String getUri() {
- return "/aai/" + Version.getLatest().toString() + "/bulkprocess";
- }
-}
+/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.rest; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.when; + +import java.io.IOException; + +import javax.ws.rs.core.Response; + +import org.apache.commons.lang3.StringUtils; +import org.json.JSONException; +import org.junit.Test; +import org.onap.aai.dbmap.AAIGraph; +import org.skyscreamer.jsonassert.JSONAssert; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import org.springframework.mock.web.MockHttpServletRequest; + +public class BulkProcessConsumerTest extends BulkProcessorTestAbstraction { + + private static final EELFLogger logger = EELFManager.getInstance().getLogger(BulkProcessConsumerTest.class.getName()); + private LegacyMoxyConsumer legacyMoxyConsumer; + + @Test + public void bulkAddPayloadInBulkProcessTest() throws IOException { + + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + String payload = getBulkPayload("pserver-transactions"); + Response response = executeRequest(payload); + + assertEquals("Valid Response Code", Response.Status.CREATED.getStatusCode(), response.getStatus()); + assertEquals("Contains 3 {\"201\":null}", 3, StringUtils.countMatches(response.getEntity().toString(), "{\"201\":null}")); + } + + @Test + public void bulkProcessPayloadTest() throws IOException { + + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + String payload = getBulkPayload("pserver-bulk-process-transactions"); + Response response = executeRequest(payload); + + assertEquals("Valid Response Code", Response.Status.CREATED.getStatusCode(), response.getStatus()); + assertEquals("Contains 1 {\"201\":null}", 1, StringUtils.countMatches(response.getEntity().toString(), "{\"201\":null}")); + assertEquals("Contains 1 {\"404\":\"{", 1, StringUtils.countMatches(response.getEntity().toString(), "{\"404\":\"{")); + assertEquals("Contains 1 ERR.5.4.6114", 1, StringUtils.countMatches(response.getEntity().toString(), "ERR.5.4.6114")); + } + + @Test + public void bulkProcessPayloadWithPatchTest() throws IOException { + + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + String payload = getBulkPayload("pserver-bulk-process-transactions-with-patch"); + Response response = executeRequest(payload); + System.out.println(response.getEntity()); + System.out.println(AAIGraph.getInstance().getGraph().newTransaction().traversal().V().has("fqdn", "NEW").count().next()); + assertEquals("Valid Response Code", Response.Status.CREATED.getStatusCode(), response.getStatus()); + } + + @Test + public void bulkProcessComplexDeletePayloadTest() throws IOException { + + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + String payload = getBulkPayload("complex-bulk-process-transactions"); + Response response = executeRequest(payload); + + System.out.println(response.getEntity().toString()); + assertEquals("Valid Response Code", Response.Status.CREATED.getStatusCode(), response.getStatus()); + assertEquals("Contains 0 {\"201\":null}", 0, StringUtils.countMatches(response.getEntity().toString(), "{\"201\":null}")); + assertEquals("Contains 1 {\"404\":\"{", 1, StringUtils.countMatches(response.getEntity().toString(), "{\"404\":\"{")); + assertEquals("Contains 1 ERR.5.4.6114", 1, StringUtils.countMatches(response.getEntity().toString(), "ERR.5.4.6114")); + } + + @Test + public void testBulkDeletePserverAndComplexRelationship() throws IOException, JSONException { + + legacyMoxyConsumer = new LegacyMoxyConsumer(); + + String pserverData = getPayload("payloads/relationship/pserver-bugfix.json"); + String complexData = getPayload("payloads/relationship/complex-bugfix.json"); + + String hostname = "pserver-9876543210-77-jenkins"; + String physicalLocationId ="complex-987654321-77-jenkins"; + + String pserverUri = String.format("cloud-infrastructure/pservers/pserver/%s", hostname); + String complexUri = String.format("cloud-infrastructure/complexes/complex/%s", physicalLocationId); + + doSetupResource(pserverUri, pserverData); + doSetupResource(complexUri, complexData); + + String complexToPserverRelationshipData = getPayload("payloads/relationship/pserver-complex-relationship-for-bulk.json"); + String complexToPserverRelationshipUri = String.format( + "cloud-infrastructure/pservers/pserver/%s/relationship-list/relationship", hostname); + + Response response = legacyMoxyConsumer.updateRelationship( + complexToPserverRelationshipData, + schemaVersions.getDefaultVersion().toString(), + complexToPserverRelationshipUri, + httpHeaders, + uriInfo, + new MockHttpServletRequest("DELETE", "http://www.test.com") + ); + + assertNotNull("Response from the legacy moxy consumer returned null", response); + int code = response.getStatus(); + if(!VALID_HTTP_STATUS_CODES.contains(code)){ + System.out.println("Response Code: " + code + "\tEntity: " + response.getEntity()); + } + + assertEquals("Expected to return status created from the response", + Response.Status.OK.getStatusCode(), response.getStatus()); + logger.info("Response Code: " + code + "\tEntity: " + response.getEntity()); + + // TODO - Need to actually verify the relationship between pserver and cloud-region + + String payload = getBulkPayload("complex-bulk-process-delete-transactions"); + Response responseBulkDelete = executeRequest(payload); + + System.out.println(responseBulkDelete.getEntity().toString()); + + code = responseBulkDelete.getStatus(); + + if(!VALID_HTTP_STATUS_CODES.contains(code)){ + System.out.println("Response Code: " + code + "\tEntity: " + responseBulkDelete.getEntity()); + System.out.println("Response Code: " + code + "\tEntity: " + responseBulkDelete.getEntity()); + } + assertEquals("Expected to return status created from the response", + Response.Status.CREATED.getStatusCode(), responseBulkDelete.getStatus()); + assertEquals("Contains 0 {\"204\":null}", 1, StringUtils.countMatches(responseBulkDelete.getEntity().toString(), "{\"204\":null}")); + + } + + protected void doSetupResource(String uri, String payload) throws JSONException { + + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + Response response = legacyMoxyConsumer.getLegacy( + "", + "-1", + "-1", + schemaVersions.getDefaultVersion().toString(), + uri, + "all", + "false", + httpHeaders, + uriInfo, + new MockHttpServletRequest("GET", "http://www.test.com") + ); + + assertNotNull("Response from the legacy moxy consumer returned null", response); + assertEquals("Expected to not have the data already in memory", + Response.Status.NOT_FOUND.getStatusCode(), response.getStatus()); + + response = legacyMoxyConsumer.update( + payload, + schemaVersions.getDefaultVersion().toString(), + uri, + httpHeaders, + uriInfo, + new MockHttpServletRequest("PUT", "http://www.test.com") + ); + + assertNotNull("Response from the legacy moxy consumer returned null", response); + int code = response.getStatus(); + if(!VALID_HTTP_STATUS_CODES.contains(code)){ + System.out.println("Response Code: " + code + "\tEntity: " + response.getEntity()); + } + assertEquals("Expected to return status created from the response", + Response.Status.CREATED.getStatusCode(), response.getStatus()); + + queryParameters.add("depth", "10000"); + response = legacyMoxyConsumer.getLegacy( + "", + "-1", + "-1", + schemaVersions.getDefaultVersion().toString(), + uri, + "all", + "false", + httpHeaders, + uriInfo, + new MockHttpServletRequest("GET", "http://www.test.com") + ); + + assertNotNull("Response from the legacy moxy consumer returned null", response); + assertEquals("Expected to return the pserver data that was just put in memory", + Response.Status.OK.getStatusCode(), response.getStatus()); + + if("".equalsIgnoreCase(payload)){ + payload = "{}"; + } + + JSONAssert.assertEquals(payload, response.getEntity().toString(), false); + } + + + @Test + public void bulkAddInvalidMethodTest() throws IOException { + + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + String payload = getBulkPayload("pserver-transactions-invalid-method"); + Response response = executeRequest(payload); + + assertEquals("Valid Response Code", Response.Status.CREATED.getStatusCode(), response.getStatus()); + assertEquals("Contains 1 {\"400\":\"{", 1, StringUtils.countMatches(response.getEntity().toString(), "{\"400\":\"{")); + assertEquals("Contains 1 ERR.5.4.6118", 1, StringUtils.countMatches(response.getEntity().toString(), "ERR.5.4.6118")); + } + + @Test + public void bulkAddThrowExceptionWhenPayloadContainsNoTransactionsTest(){ + + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + String payload = "{\"transactions\":[]}"; + Response response = executeRequest(payload); + + assertEquals("Bad Request", Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus()); + assertEquals("Contains error code", true, response.getEntity().toString().contains("ERR.5.4.6118")); + } + + @Test + public void bulkAddThrowExceptionWhenInvalidJsonTest() throws IOException { + + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + String payload = "{"; + Response response = executeRequest(payload); + + assertEquals("Bad Request", Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus()); + assertEquals("Contains error code", true, response.getEntity().toString().contains("ERR.5.4.6111")); + } + @Test + public void bulkProcessCheckMeetsLimit() throws IOException{ + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + String payload = getBulkPayload("pserver-bulk-limit-meet"); + Response response = executeRequest(payload); + + assertEquals("Created", Response.Status.CREATED.getStatusCode(), response.getStatus()); + assertEquals("Contains 30 {\"201\":null}", 30, StringUtils.countMatches(response.getEntity().toString(), "{\"201\":null}")); + } + + @Test + public void bulkProcessCheckExceedsLimit() throws IOException{ + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + String payload = getBulkPayload("pserver-bulk-limit-exceed"); + Response response = executeRequest(payload); + + assertEquals("Bad Request", Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus()); + assertEquals("Contains error code", true, response.getEntity().toString().contains("ERR.5.4.6147")); + } + + @Override + protected BulkConsumer getConsumer(){ + return new BulkProcessConsumer(); + } + + @Override + protected String getUri() { + return "/aai/" + schemaVersions.getDefaultVersion().toString() + "/bulkprocess"; + } +} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/BulkProcessorTestAbstraction.java b/aai-resources/src/test/java/org/onap/aai/rest/BulkProcessorTestAbstraction.java index 40e8f05..e735041 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/BulkProcessorTestAbstraction.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/BulkProcessorTestAbstraction.java @@ -41,8 +41,6 @@ import org.junit.BeforeClass; import org.mockito.Mockito; import org.onap.aai.AAISetup; import org.onap.aai.dbmap.AAIGraph; -import org.onap.aai.introspection.ModelInjestor; -import org.onap.aai.introspection.Version; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; @@ -74,16 +72,21 @@ public abstract class BulkProcessorTestAbstraction extends AAISetup { protected String uri; + private boolean initialized = false; private static final EELFLogger logger = EELFManager.getInstance().getLogger(BulkProcessorTestAbstraction.class.getName()); @BeforeClass public static void setupRest(){ - AAIGraph.getInstance(); - ModelInjestor.getInstance(); + // AAIGraph.getInstance(); + } @Before public void setup(){ + if(!initialized){ + initialized = true; + AAIGraph.getInstance(); + } logger.info("Starting the setup for the integration tests of Rest Endpoints"); bulkConsumer = getConsumer(); @@ -126,7 +129,7 @@ public abstract class BulkProcessorTestAbstraction extends AAISetup { return bulkConsumer.bulkProcessor( payload.replaceAll("<UUID>", UUID.randomUUID().toString()), - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), httpHeaders, uriInfo, mockReq diff --git a/aai-resources/src/test/java/org/onap/aai/rest/ConfigurationTest.java b/aai-resources/src/test/java/org/onap/aai/rest/ConfigurationTest.java index b6d8872..f030f20 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/ConfigurationTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/ConfigurationTest.java @@ -22,10 +22,10 @@ package org.onap.aai.rest; import com.jayway.jsonpath.JsonPath; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; import org.onap.aai.ResourcesApp; import org.onap.aai.ResourcesTestConfiguration; import org.onap.aai.config.PropertyPasswordConfiguration; +import org.onap.aai.config.SpringContextAware; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.embedded.LocalServerPort; import org.springframework.boot.test.context.SpringBootTest; @@ -33,7 +33,6 @@ import org.springframework.context.annotation.Import; import org.springframework.http.*; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringRunner; import org.springframework.web.client.RestTemplate; import java.io.UnsupportedEncodingException; @@ -47,13 +46,12 @@ import static org.junit.Assert.assertEquals; /** * Test REST requests against configuration resource */ -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = ResourcesApp.class) + @TestPropertySource(locations = "classpath:application-test.properties") -@ContextConfiguration(initializers = PropertyPasswordConfiguration.class) +@ContextConfiguration(initializers = PropertyPasswordConfiguration.class, classes = {SpringContextAware.class}) @Import(ResourcesTestConfiguration.class) -public class ConfigurationTest { - +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = {SpringContextAware.class, ResourcesApp.class}) +public class ConfigurationTest extends AbstractSpringRestTest { @Autowired RestTemplate restTemplate; @@ -85,18 +83,23 @@ public class ConfigurationTest { @Test public void testGetPutPatchConfiguration() { - String hostname = "pservertest" + UUID.randomUUID().toString(); - String endpoint = "/aai/v13/cloud-infrastructure/pservers/pserver/" + hostname; + String cid = "configtest" + UUID.randomUUID().toString(); + String endpoint = "/aai/v12/network/configurations/configuration/" + cid; ResponseEntity responseEntity = null; responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode()); + //String putBody = " configuration-id, configuration-type configuration-sub-type"; String putBody = "{" + - "\"hostname\": \"" + hostname + "\"," + - "\"ptnii-equip-name\": \"type1\"," + - "\"equip-type\": \"subtype1\" " + + "\"configuration-id\": \"" + cid + "\"," + + "\"configuration-type\": \"type1\"," + + "\"configuration-sub-type\": \"subtype1\", " + + "\"operational-status\": \"example1\", " + + "\"orchestration-status\": \"example1\", " + + "\"configuration-selflink\": \"example1\", " + + "\"model-customization-id\": \"example1\" " + "}"; httpEntityPut = new HttpEntity<String>(putBody, headers); responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntityPut, String.class); @@ -110,9 +113,13 @@ public class ConfigurationTest { assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); String patchBody = "{" + - "\"hostname\": \"" + hostname + "\"," + - "\"ptnii-equip-name\": \"type2\"," + - "\"equip-type\": \"subtype2\" " + + "\"configuration-id\": \"" + cid + "\"," + + "\"configuration-type\": \"type2\"," + + "\"configuration-sub-type\": \"subtype2\", " + + "\"operational-status\": \"example1\", " + + "\"orchestration-status\": \"example1\", " + + "\"configuration-selflink\": \"example1\", " + + "\"model-customization-id\": \"example1\" " + "}"; headers.put("Content-Type", Arrays.asList("application/merge-patch+json")); headers.add("X-HTTP-Method-Override", "PATCH"); @@ -126,14 +133,14 @@ public class ConfigurationTest { assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); String body = responseEntity.getBody().toString(); - String ptniiEquipName = JsonPath.read(body, "$.ptnii-equip-name"); + String configurationType = JsonPath.read(body, "$.configuration-type"); - assertEquals("type2", ptniiEquipName); + assertEquals("type2", configurationType); patchBody = "{" + - "\"hostname\": \"" + hostname + "\"," + - "\"ptnii-equip-name\": \"type3\"," + - "\"equip-type\": \"subtype3\" " + + "\"configuration-id\": \"" + cid + "\"," + + "\"configuration-type\": \"type3\"," + + "\"configuration-sub-type\": \"subtype3\" " + "}"; httpEntityPatch = new HttpEntity<String>(patchBody, headers); @@ -144,9 +151,9 @@ public class ConfigurationTest { assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); body = responseEntity.getBody().toString(); - ptniiEquipName = JsonPath.read(body, "$.ptnii-equip-name"); + configurationType = JsonPath.read(body, "$.configuration-type"); - assertEquals("type3", ptniiEquipName); + assertEquals("type3", configurationType); } diff --git a/aai-resources/src/test/java/org/onap/aai/rest/CustomerFilterSearchTest.java b/aai-resources/src/test/java/org/onap/aai/rest/CustomerFilterSearchTest.java new file mode 100644 index 0000000..f22c915 --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/rest/CustomerFilterSearchTest.java @@ -0,0 +1,66 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.rest; + +import org.junit.Test; +import org.onap.aai.PayloadUtil; +import org.springframework.http.*; + +import java.util.Base64; +import java.util.Collections; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +public class CustomerFilterSearchTest extends AbstractSpringRestTest { + + @Test + public void testWhenContentTypeMissingItWillFunctionalAndCreateObjectWithPayloadInJson() throws Exception { + + String id = "customer-987654321-91"; + String endpoint = "/aai/v11/business/customers/customer/"+ id; + HttpHeaders headers = new HttpHeaders(); + + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.add("Real-Time", "true"); + headers.add("X-FromAppId", "JUNIT"); + headers.add("X-TransactionId", "JUNIT"); + + String authorization = Base64.getEncoder().encodeToString("AAI:AAI".getBytes("UTF-8")); + headers.add("Authorization", "Basic " + authorization); + String body = PayloadUtil.getResourcePayload("customer.json"); + + httpEntity = new HttpEntity(body, headers); + baseUrl = "https://localhost:" + randomPort; + + ResponseEntity responseEntity; + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class); + + assertEquals(HttpStatus.CREATED, responseEntity.getStatusCode()); + + String searchUrl = baseUrl + "/aai/v11/business/customers?subscriber-name=subscriber-name-987654321-91&depth=0"; + httpEntity = new HttpEntity(headers); + responseEntity = restTemplate.exchange(searchUrl, HttpMethod.GET, httpEntity, String.class); + assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); + assertThat(responseEntity.getBody().toString(), containsString("global-customer-id")); + } + +} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/DepthTest.java b/aai-resources/src/test/java/org/onap/aai/rest/DepthTest.java new file mode 100644 index 0000000..c664c22 --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/rest/DepthTest.java @@ -0,0 +1,64 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.rest; + +import org.hamcrest.MatcherAssert; +import org.junit.Test; +import org.onap.aai.PayloadUtil; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +import java.io.IOException; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; + +public class DepthTest extends AbstractSpringRestTest { + + @Test + public void testOldVersionReturnAllChildrenAndNewVersionReturnDepthZero() throws IOException { + + String id = "customer-987654321-91"; + String endpoint = "/aai/v9/business/customers/customer/"+ id; + + String body = PayloadUtil.getResourcePayload("customer.json"); + + httpEntity = new HttpEntity(body, headers); + + ResponseEntity responseEntity; + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class); + assertThat(responseEntity.getStatusCode(), is(HttpStatus.CREATED)); + + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); + assertThat(responseEntity.getStatusCode(), is(HttpStatus.OK)); + String responseBody = responseEntity.getBody().toString(); + assertThat(responseBody, not(containsString("service-instance-id"))); + endpoint = "/aai/v8/business/customers/customer/"+ id; + + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); + assertThat(responseEntity.getStatusCode(), is(HttpStatus.OK)); + responseBody = responseEntity.getBody().toString(); + assertThat(responseBody, containsString("service-instance-id")); + } +} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/ExampleConsumerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/ExampleConsumerTest.java index 22980ad..3f50ba3 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/ExampleConsumerTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/ExampleConsumerTest.java @@ -27,8 +27,6 @@ import org.junit.Test; import org.mockito.Mockito; import org.onap.aai.AAISetup; import org.onap.aai.dbmap.AAIGraph; -import org.onap.aai.introspection.ModelInjestor; -import org.onap.aai.introspection.Version; import javax.ws.rs.core.*; @@ -69,7 +67,7 @@ public class ExampleConsumerTest extends AAISetup { @BeforeClass public static void setupRest(){ AAIGraph.getInstance(); - ModelInjestor.getInstance(); + } @Before @@ -114,7 +112,7 @@ public class ExampleConsumerTest extends AAISetup { public void testGetExampleRespondsWithOkStatusForValidObject(){ Response response = exampleConsumer.getExample( - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), "pserver", httpHeaders, uriInfo, @@ -134,7 +132,7 @@ public class ExampleConsumerTest extends AAISetup { when(uriInfo.getPath(false)).thenReturn("examples/fakeObject"); Response response = exampleConsumer.getExample( - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), "testRandomCrazyObject", httpHeaders, uriInfo, diff --git a/aai-resources/src/test/java/org/onap/aai/util/HbaseSaltPrefixerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/InvalidURITest.java index 6379240..ea41872 100644 --- a/aai-resources/src/test/java/org/onap/aai/util/HbaseSaltPrefixerTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/InvalidURITest.java @@ -17,22 +17,31 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.aai.util; +package org.onap.aai.rest; import org.junit.Test; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; -import static org.junit.Assert.assertTrue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.junit.Assert.assertEquals; -public class HbaseSaltPrefixerTest { +public class InvalidURITest extends AbstractSpringRestTest { - /** - * Test. - */ - @Test - public void test() { - String key = "imakey"; - String saltedKey = HbaseSaltPrefixer.getInstance().prependSalt(key); - assertTrue(saltedKey.equals("0-imakey")); - } + @Test + public void testWhenUriNotStartsWithAAIItReturnsProperNotFound(){ + String endpoint = "/aai1/v11/cloud-infrastructure/pservers/pserver/test"; + + ResponseEntity responseEntity; + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); + + String body = responseEntity.getBody().toString(); + System.out.println(body); + + assertEquals(HttpStatus.BAD_REQUEST, responseEntity.getStatusCode()); + assertThat(body, containsString("Unrecognized AAI function ")); + } } diff --git a/aai-resources/src/test/java/org/onap/aai/rest/LegacyMoxyConsumerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/LegacyMoxyConsumerTest.java index 660d663..3845fb0 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/LegacyMoxyConsumerTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/LegacyMoxyConsumerTest.java @@ -31,13 +31,12 @@ import org.mockito.Mockito; import org.onap.aai.AAISetup; import org.onap.aai.dbmap.AAIGraph; import org.onap.aai.exceptions.AAIException; -import org.onap.aai.introspection.ModelInjestor; -import org.onap.aai.introspection.Version; import org.onap.aai.util.AAIConfig; import org.onap.aai.util.AAIConstants; import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.test.annotation.DirtiesContext; import javax.ws.rs.core.*; import java.io.IOException; @@ -72,17 +71,22 @@ public class LegacyMoxyConsumerTest extends AAISetup { private List<String> aaiRequestContextList; private List<MediaType> outputMediaTypes; + private boolean initialized = false; + private static final EELFLogger logger = EELFManager.getInstance().getLogger(LegacyMoxyConsumerTest.class.getName()); @BeforeClass public static void setupRest(){ - AAIGraph.getInstance(); - ModelInjestor.getInstance(); + // AAIGraph.getInstance(); } @Before public void setup(){ + if(!initialized){ + initialized = true; + AAIGraph.getInstance(); + } logger.info("Starting the setup for the integration tests of Rest Endpoints"); legacyMoxyConsumer = new LegacyMoxyConsumer(); @@ -138,9 +142,9 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReqGet = new MockHttpServletRequest("GET", uri); Response response = legacyMoxyConsumer.getLegacy( "", - "-1", - "-1", - Version.getLatest().toString(), + null, + null, + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", @@ -154,7 +158,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReq = new MockHttpServletRequest("PUT", uri); response = legacyMoxyConsumer.update( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -172,9 +176,9 @@ public class LegacyMoxyConsumerTest extends AAISetup { response = legacyMoxyConsumer.getLegacy( "", - "-1", - "-1", - Version.getLatest().toString(), + null, + null, + schemaVersions.getDefaultVersion().toString(), uri, "10000", "false", @@ -201,7 +205,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { mockReq = new MockHttpServletRequest("DELETE", uri); response = legacyMoxyConsumer.delete( - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -218,9 +222,9 @@ public class LegacyMoxyConsumerTest extends AAISetup { response = legacyMoxyConsumer.getLegacy( "", - "-1", - "-1", - Version.getLatest().toString(), + null, + null, + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", @@ -233,6 +237,34 @@ public class LegacyMoxyConsumerTest extends AAISetup { } @Test + public void testResponseGetOnResourcePaginated() throws JSONException, IOException, AAIException { + + String uri = getGetAllPserversURI(); + + if(uri.length() != 0 && uri.charAt(0) == '/'){ + uri = uri.substring(1); + } + + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + + MockHttpServletRequest mockReqGet = new MockHttpServletRequest("GET", uri); + Response response = legacyMoxyConsumer.getLegacy( + "", + "1", + "10", + schemaVersions.getDefaultVersion().toString(), + uri, + "all", + "false", + httpHeaders, + uriInfo, + mockReqGet + ); + assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + } + + @Test public void testPutPserverAndCloudRegionRelationship() throws IOException, JSONException { String pserverData = getRelationshipPayload("pserver"); @@ -253,7 +285,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReq = new MockHttpServletRequest("PUT", cloudToPserverRelationshipUri); Response response = legacyMoxyConsumer.updateRelationship( cloudToPserverRelationshipData, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), cloudToPserverRelationshipUri, httpHeaders, uriInfo, @@ -274,7 +306,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { mockReq = new MockHttpServletRequest("DELETE", cloudToPserverRelationshipUri); response = legacyMoxyConsumer.deleteRelationship( cloudToPserverRelationshipData, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), cloudToPserverRelationshipUri, httpHeaders, uriInfo, @@ -314,7 +346,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReq = new MockHttpServletRequest("PUT", uri); Response response = legacyMoxyConsumer.update( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -337,7 +369,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReq = new MockHttpServletRequest("PUT", uri); Response response = legacyMoxyConsumer.update( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -351,7 +383,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { response = legacyMoxyConsumer.updateRelationship( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -365,9 +397,9 @@ public class LegacyMoxyConsumerTest extends AAISetup { mockReq = new MockHttpServletRequest("GET", uri); response = legacyMoxyConsumer.getLegacy( "", - "-1", - "-1", - Version.getLatest().toString(), + null, + null, + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", @@ -380,7 +412,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), code); mockReq = new MockHttpServletRequest("DELETE", uri); response = legacyMoxyConsumer.delete( - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -393,7 +425,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { response = legacyMoxyConsumer.deleteRelationship( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -414,7 +446,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReq = new MockHttpServletRequest("PUT", uri); Response response = legacyMoxyConsumer.update( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -427,7 +459,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { response = legacyMoxyConsumer.updateRelationship( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -441,9 +473,9 @@ public class LegacyMoxyConsumerTest extends AAISetup { mockReq = new MockHttpServletRequest("GET", uri); response = legacyMoxyConsumer.getLegacy( "", - "-1", - "-1", - Version.getLatest().toString(), + null, + null, + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", @@ -458,7 +490,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { mockReq = new MockHttpServletRequest("DELETE", uri); queryParameters.add("resource-version", "3434394839483"); response = legacyMoxyConsumer.delete( - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -472,7 +504,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { response = legacyMoxyConsumer.deleteRelationship( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -499,9 +531,9 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReq = new MockHttpServletRequest("GET", uri); Response response = legacyMoxyConsumer.getLegacy( "", - "-1", - "-1", - Version.getLatest().toString(), + null, + null, + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", @@ -514,7 +546,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { mockReq = new MockHttpServletRequest("PUT", uri); response = legacyMoxyConsumer.update( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -538,7 +570,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { mockReq = new MockHttpServletRequest("PATCH", uri); response = legacyMoxyConsumer.patch( patchData, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -560,9 +592,9 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReqGet = new MockHttpServletRequest("GET", uri); Response response = legacyMoxyConsumer.getLegacy( "", - "-1", - "-1", - Version.getLatest().toString(), + null, + null, + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", @@ -578,7 +610,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReq = new MockHttpServletRequest("PUT", uri); response = legacyMoxyConsumer.update( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -596,9 +628,9 @@ public class LegacyMoxyConsumerTest extends AAISetup { queryParameters.add("depth", "10000"); response = legacyMoxyConsumer.getLegacy( "", - "-1", - "-1", - Version.getLatest().toString(), + null, + null, + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", @@ -631,7 +663,7 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReq = new MockHttpServletRequest("DELETE", uri); Response response = legacyMoxyConsumer.deleteRelationship( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -659,6 +691,10 @@ public class LegacyMoxyConsumerTest extends AAISetup { public String getUri(String hostname){ return String.format("cloud-infrastructure/pservers/pserver/%s", hostname); } + public String getGetAllPserversURI(){ + return "cloud-infrastructure/pservers"; + } + public String getUri(){ return getUri("pserver-hostname-test"); @@ -711,9 +747,9 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReqGet = new MockHttpServletRequest("GET", uri); Response response = legacyMoxyConsumer.getLegacy( "", - "-1", - "-1", - Version.getLatest().toString(), + null, + null, + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", @@ -740,9 +776,9 @@ public class LegacyMoxyConsumerTest extends AAISetup { MockHttpServletRequest mockReqGet = new MockHttpServletRequest("GET", uri); Response response = legacyMoxyConsumer.getLegacy( "", - "-1", - "-1", - Version.getLatest().toString(), + null, + null, + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", diff --git a/aai-resources/src/test/java/org/onap/aai/rest/PserverGenerateUrlTest.java b/aai-resources/src/test/java/org/onap/aai/rest/PserverGenerateUrlTest.java new file mode 100644 index 0000000..7c27477 --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/rest/PserverGenerateUrlTest.java @@ -0,0 +1,77 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.rest; + +import com.jayway.jsonpath.JsonPath; +import org.junit.Test; +import org.springframework.http.*; + +import java.io.UnsupportedEncodingException; +import java.util.Base64; +import java.util.Collections; +import java.util.UUID; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.junit.Assert.assertEquals; +public class PserverGenerateUrlTest extends AbstractSpringRestTest { + + @Test + public void testPutPserverExtractVertexGenerateUrlAndDeleteIt() throws UnsupportedEncodingException { + + String endpoint = "/aai/v11/cloud-infrastructure/pservers/pserver/test" + UUID.randomUUID().toString(); + + ResponseEntity responseEntity = null; + + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); + assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode()); + + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class); + assertEquals(HttpStatus.CREATED, responseEntity.getStatusCode()); + + String vertexId = responseEntity.getHeaders().getFirst("vertex-id"); + responseEntity = restTemplate.exchange(baseUrl + "/aai/v11/generateurl/id/" + vertexId, HttpMethod.GET, plainHttpEntity(), String.class); + assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); + assertThat(responseEntity.getBody().toString(), containsString(endpoint)); + + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); + assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); + + String body = responseEntity.getBody().toString(); + String resourceVersion = JsonPath.read(body, "$.resource-version"); + + responseEntity = restTemplate.exchange(baseUrl + endpoint+ "?resource-version=" + resourceVersion, HttpMethod.DELETE, httpEntity, String.class); + assertEquals(HttpStatus.NO_CONTENT, responseEntity.getStatusCode()); + } + + private HttpEntity plainHttpEntity() throws UnsupportedEncodingException { + + HttpHeaders headers = new HttpHeaders(); + + headers.setAccept(Collections.singletonList(MediaType.TEXT_PLAIN)); + headers.add("Real-Time", "true"); + headers.add("X-FromAppId", "JUNIT"); + headers.add("X-TransactionId", "JUNIT"); + + String authorization = Base64.getEncoder().encodeToString("AAI:AAI".getBytes("UTF-8")); + headers.add("Authorization", "Basic " + authorization); + return new HttpEntity(headers); + } +} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/PserverMissingTest.java b/aai-resources/src/test/java/org/onap/aai/rest/PserverMissingTest.java new file mode 100644 index 0000000..da982a9 --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/rest/PserverMissingTest.java @@ -0,0 +1,87 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.rest; + +import org.junit.Test; +import org.onap.aai.PayloadUtil; +import org.springframework.http.*; + +import java.util.*; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.StringContains.containsString; +import static org.junit.Assert.assertEquals; +public class PserverMissingTest extends AbstractSpringRestTest { + + @Test + public void testWhenContentTypeMissingItWillFunctionalAndCreateObjectWithPayloadInJson() throws Exception { + + String id = "test-" + UUID.randomUUID().toString(); + String endpoint = "/aai/v11/cloud-infrastructure/pservers/pserver/"+ id; + HttpHeaders headers = new HttpHeaders(); + + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.add("Real-Time", "true"); + headers.add("X-FromAppId", "JUNIT"); + headers.add("X-TransactionId", "JUNIT"); + String authorization = Base64.getEncoder().encodeToString("AAI:AAI".getBytes("UTF-8")); + headers.add("Authorization", "Basic " + authorization); + + Map<String, String> templateMap = new HashMap<>(); + + templateMap.put("hostname", id); + String body = PayloadUtil.getTemplatePayload("pserver.json", templateMap); + + httpEntity = new HttpEntity(body, headers); + baseUrl = "https://localhost:" + randomPort; + + ResponseEntity responseEntity; + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class); + + assertEquals(HttpStatus.CREATED, responseEntity.getStatusCode()); + } + + @Test + public void testWhenAcceptMissingItWillReturnThePayloadInXml() throws Exception { + + String id = "test-" + UUID.randomUUID().toString(); + String endpoint = "/aai/v11/cloud-infrastructure/pservers/pserver/"+ id; + HttpHeaders headers = new HttpHeaders(); + + headers.add("Real-Time", "true"); + headers.add("X-FromAppId", "JUNIT"); + headers.add("X-TransactionId", "JUNIT"); + String authorization = Base64.getEncoder().encodeToString("AAI:AAI".getBytes("UTF-8")); + headers.add("Authorization", "Basic " + authorization); + + httpEntity = new HttpEntity(headers); + baseUrl = "https://localhost:" + randomPort; + + ResponseEntity responseEntity; + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); + + String body = responseEntity.getBody().toString(); + + assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode()); + assertThat(body, containsString("<Fault>")); + assertThat(body, containsString("Resource not found for")); + assertThat(body, containsString("Node Not Found")); + } +} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/PserverRelationshipTest.java b/aai-resources/src/test/java/org/onap/aai/rest/PserverRelationshipTest.java new file mode 100644 index 0000000..017844e --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/rest/PserverRelationshipTest.java @@ -0,0 +1,97 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.rest; + +import org.junit.Test; +import org.onap.aai.PayloadUtil; +import org.onap.aai.util.MapperUtil; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.containsString; +import static org.junit.Assert.assertEquals; + +public class PserverRelationshipTest extends AbstractSpringRestTest { + + @Test + public void testGetRelationshipThrowUnrecognizedAAIObjectException() { + + String endpoint = "/aai/v12/cloud-infrastructure/pservers/pserver/test/relationship-list/relationship"; + + ResponseEntity responseEntity = null; + + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); + String body = responseEntity.getBody().toString(); + + Set<HttpMethod> httpMethodSet = new HashSet<>(); + + httpMethodSet.add(HttpMethod.PUT); + httpMethodSet.add(HttpMethod.DELETE); + httpMethodSet.add(HttpMethod.OPTIONS); + + + assertEquals(HttpStatus.BAD_REQUEST, responseEntity.getStatusCode()); + assertThat(body, containsString("Unrecognized AAI function")); + assertThat(responseEntity.getHeaders().getAllow(), containsInAnyOrder(httpMethodSet.toArray())); + } + + @Test + public void testPutPserverAndCloudRegionAndReturnEdgesWithLabel() throws Exception { + + String hostname = "test-pserver1"; + String endpoint = "/aai/v12/cloud-infrastructure/pservers/pserver/" + hostname; + + ResponseEntity responseEntity = null; + + restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class); + + String cloudRegionId = "test-region-1"; + String cloudOwnerId = "test-owner-1"; + endpoint = "/aai/v12/cloud-infrastructure/cloud-regions/cloud-region/" + cloudOwnerId + "/" + cloudRegionId; + + Map<String, String> map = new HashMap<>(); + map.put("hostname", hostname); + map.put("cloud-region-id", cloudRegionId); + map.put("cloud-owner", cloudOwnerId); + + String payload = PayloadUtil.getTemplatePayload("pserver-to-cloud-region.json", map); + httpEntity = new HttpEntity(payload, headers); + restTemplate.exchange(baseUrl + endpoint, HttpMethod.PUT, httpEntity, String.class); + + httpEntity = new HttpEntity(headers); + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); + assertThat(responseEntity.getBody().toString(), containsString("relationship-label")); + + endpoint = "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/" + cloudOwnerId + "/" + cloudRegionId; + + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); + assertThat(responseEntity.getBody().toString(), not(containsString("relationship-label"))); + } +} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/PserverTest.java b/aai-resources/src/test/java/org/onap/aai/rest/PserverTest.java index 2acc3c4..7f48ff8 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/PserverTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/PserverTest.java @@ -20,25 +20,11 @@ package org.onap.aai.rest; import com.jayway.jsonpath.JsonPath; -import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.onap.aai.ResourcesApp; -import org.onap.aai.ResourcesTestConfiguration; -import org.onap.aai.config.PropertyPasswordConfiguration; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.embedded.LocalServerPort; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; -import org.springframework.http.*; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.web.client.RestTemplate; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; -import java.io.UnsupportedEncodingException; -import java.util.Base64; -import java.util.Collections; import java.util.UUID; import static org.junit.Assert.assertEquals; @@ -54,40 +40,7 @@ import static org.junit.Assert.assertEquals; * This can be used to potentially replace a lot of the fitnesse tests since * they will be testing against the same thing except fitnesse uses hbase */ -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = ResourcesApp.class) -@TestPropertySource(locations = "classpath:application-test.properties") -@ContextConfiguration(initializers = PropertyPasswordConfiguration.class) -@Import(ResourcesTestConfiguration.class) -public class PserverTest { - - @Autowired - RestTemplate restTemplate; - - @LocalServerPort - int randomPort; - - private HttpEntity httpEntity; - - private String baseUrl; - - @Before - public void setup() throws UnsupportedEncodingException { - - HttpHeaders headers = new HttpHeaders(); - - headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); - headers.setContentType(MediaType.APPLICATION_JSON); - headers.add("Real-Time", "true"); - headers.add("X-FromAppId", "JUNIT"); - headers.add("X-TransactionId", "JUNIT"); - - String authorization = Base64.getEncoder().encodeToString("AAI:AAI".getBytes("UTF-8")); - headers.add("Authorization", "Basic " + authorization); - - httpEntity = new HttpEntity(headers); - baseUrl = "https://localhost:" + randomPort; - } +public class PserverTest extends AbstractSpringRestTest { @Test public void testPutPserverExtractVertexAndThenDoGetByVertexIdAndThenDeleteIt() { diff --git a/aai-resources/src/test/java/org/onap/aai/rest/PserverWrongHeaderTest.java b/aai-resources/src/test/java/org/onap/aai/rest/PserverWrongHeaderTest.java new file mode 100644 index 0000000..4d75a2e --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/rest/PserverWrongHeaderTest.java @@ -0,0 +1,50 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.rest; + +import org.junit.Test; +import org.springframework.http.*; + +import java.util.UUID; + +import static org.hamcrest.Matchers.containsString; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +public class PserverWrongHeaderTest extends AbstractSpringRestTest{ + + @Test + public void testWhenNoHeadersItFailsWithBadRequestAndReturnsXml(){ + + HttpHeaders httpHeaders = new HttpHeaders(); + + httpEntity = new HttpEntity(httpHeaders); + + String endpoint = "/aai/v11/cloud-infrastructure/pservers/pserver/test" + UUID.randomUUID().toString(); + + ResponseEntity responseEntity; + responseEntity = restTemplate.exchange(baseUrl + endpoint, HttpMethod.GET, httpEntity, String.class); + + String body = responseEntity.getBody().toString(); + + assertEquals(HttpStatus.BAD_REQUEST, responseEntity.getStatusCode()); + assertThat(body, containsString("<Fault>")); + assertThat(body, containsString("Invalid X-FromAppId in header")); + } +} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/URLFromVertexIdConsumerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/URLFromVertexIdConsumerTest.java index c49d10b..2edec7b 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/URLFromVertexIdConsumerTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/URLFromVertexIdConsumerTest.java @@ -29,8 +29,6 @@ import org.mockito.Mockito; import org.onap.aai.AAISetup; import org.onap.aai.dbmap.AAIGraph; import org.onap.aai.exceptions.AAIException; -import org.onap.aai.introspection.ModelInjestor; -import org.onap.aai.introspection.Version; import javax.ws.rs.core.*; import java.io.IOException; @@ -68,15 +66,18 @@ public class URLFromVertexIdConsumerTest extends AAISetup { private List<MediaType> outputMediaTypes; private static final EELFLogger logger = EELFManager.getInstance().getLogger(LegacyMoxyConsumerTest.class.getName()); - + private boolean initialized = false; @BeforeClass public static void setupRest(){ - AAIGraph.getInstance(); - ModelInjestor.getInstance(); + // AAIGraph.getInstance(); } @Before public void setup(){ + if(!initialized){ + initialized = true; + AAIGraph.getInstance(); + } logger.info("Starting the setup for the integration tests of Rest Endpoints"); urlFromVertexIdConsumer = new URLFromVertexIdConsumer(); @@ -129,7 +130,7 @@ public class URLFromVertexIdConsumerTest extends AAISetup { "", "-1", "-1", - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", @@ -142,7 +143,7 @@ public class URLFromVertexIdConsumerTest extends AAISetup { MockHttpServletRequest mockReq = new MockHttpServletRequest("PUT", uri); response = legacyMoxyConsumer.update( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -164,7 +165,7 @@ public class URLFromVertexIdConsumerTest extends AAISetup { String vertexId = responseHeaders.get("vertex-id").get(0).toString(); response = urlFromVertexIdConsumer.generateUrlFromVertexId( "", - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), Long.valueOf(vertexId).longValue(), httpHeaders, uriInfo, @@ -187,7 +188,7 @@ public class URLFromVertexIdConsumerTest extends AAISetup { MockHttpServletRequest mockReqGet = new MockHttpServletRequest("GET", uri); Response response = urlFromVertexIdConsumer.generateUrlFromVertexId( "", - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), Long.valueOf(vertexId).longValue(), httpHeaders, uriInfo, diff --git a/aai-resources/src/test/java/org/onap/aai/rest/VertexIdConsumerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/VertexIdConsumerTest.java index 41214db..8d3f5a8 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/VertexIdConsumerTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/VertexIdConsumerTest.java @@ -29,8 +29,6 @@ import org.mockito.Mockito; import org.onap.aai.AAISetup; import org.onap.aai.dbmap.AAIGraph; import org.onap.aai.exceptions.AAIException; -import org.onap.aai.introspection.ModelInjestor; -import org.onap.aai.introspection.Version; import javax.ws.rs.core.*; import java.io.IOException; @@ -40,7 +38,6 @@ import static org.junit.Assert.*; import static org.mockito.Matchers.anyObject; import static org.mockito.Mockito.when; import org.springframework.mock.web.MockHttpServletRequest; - public class VertexIdConsumerTest extends AAISetup { protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json"); @@ -68,15 +65,19 @@ public class VertexIdConsumerTest extends AAISetup { private List<MediaType> outputMediaTypes; private static final EELFLogger logger = EELFManager.getInstance().getLogger(LegacyMoxyConsumerTest.class.getName()); - + private boolean initialized = false; + @BeforeClass public static void setupRest(){ - AAIGraph.getInstance(); - ModelInjestor.getInstance(); + //AAIGraph.getInstance(); } @Before public void setup(){ + if(!initialized){ + initialized = true; + AAIGraph.getInstance(); + } logger.info("Starting the setup for the integration tests of Rest Endpoints"); vertexIdConsumer = new VertexIdConsumer(); @@ -129,7 +130,7 @@ public class VertexIdConsumerTest extends AAISetup { "", "-1", "-1", - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, "all", "false", @@ -143,7 +144,7 @@ public class VertexIdConsumerTest extends AAISetup { response = legacyMoxyConsumer.update( payload, - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), uri, httpHeaders, uriInfo, @@ -166,7 +167,7 @@ public class VertexIdConsumerTest extends AAISetup { response = vertexIdConsumer.getByVertexId( "", - Version.getLatest().toString(), + schemaVersions.getDefaultVersion().toString(), Long.valueOf(vertexId).longValue(), "10000", httpHeaders, diff --git a/aai-resources/src/test/java/org/onap/aai/rest/bulk/BulkSingleTransactionConsumerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/bulk/BulkSingleTransactionConsumerTest.java new file mode 100644 index 0000000..e317297 --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/rest/bulk/BulkSingleTransactionConsumerTest.java @@ -0,0 +1,369 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.rest.bulk; + +import org.apache.tinkerpop.gremlin.structure.Property; +import org.apache.tinkerpop.gremlin.structure.Vertex; +import org.apache.tinkerpop.gremlin.structure.VertexProperty; +import org.json.JSONException; +import org.json.JSONObject; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestName; +import org.onap.aai.db.props.AAIProperties; +import org.onap.aai.dbmap.AAIGraph; +import org.onap.aai.rest.BulkConsumer; +import org.onap.aai.rest.BulkProcessorTestAbstraction; +import org.springframework.mock.web.MockHttpServletRequest; + +import javax.ws.rs.HttpMethod; +import javax.ws.rs.core.Response; +import java.io.IOException; +import java.util.Iterator; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.when; + +public class BulkSingleTransactionConsumerTest extends BulkProcessorTestAbstraction { + + private BulkSingleTransactionConsumer bulkSingleTransactionConsumer = new BulkSingleTransactionConsumer(); + + @Rule + public TestName name = new TestName(); + + private String sot = "Junit"; + + @Before + public void before() { + sot = "JUNIT-" + name.getMethodName(); + when(uriInfo.getPath()).thenReturn(uri); + when(uriInfo.getPath(false)).thenReturn(uri); + headersMultiMap.addFirst("X-FromAppId", sot); + + } + + @Test + public void addPserverPatchSamePserverTest() throws IOException { + + String payload = getBulkPayload("single-transaction/put-patch-same-pserver").replaceAll("<methodName>", name.getMethodName()); + Response response = executeRequest(payload); + + assertEquals("Request success", + Response.Status.CREATED.getStatusCode(), + response.getStatus()); + assertEquals("1 vertex from this test in graph", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot).count().next()); + assertEquals("1 vertex from this test with fqdn = patched-fqdn", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has("fqdn", "patched-fqdn").count().next()); + + + } + + @Test + public void putPserverComplexRelBetween() throws IOException { + + String payload = getBulkPayload("single-transaction/put-pserver-complex-rel-between").replaceAll("<methodName>", name.getMethodName()); + Response response = executeRequest(payload); + + assertEquals("Request success", + Response.Status.CREATED.getStatusCode(), + response.getStatus()); + assertEquals("2 vertex from this test in graph", + Long.valueOf(2L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot).count().next()); + assertEquals("1 complex vertex", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has(AAIProperties.NODE_TYPE, "complex").count().next()); + assertEquals("1 pserver vertex", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has(AAIProperties.NODE_TYPE, "pserver").count().next()); + assertEquals("pserver has edge to complex", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has(AAIProperties.NODE_TYPE, "pserver") + .bothE() + .otherV() + .has(AAIProperties.NODE_TYPE, "complex") + .has(AAIProperties.SOURCE_OF_TRUTH, sot).count().next()); + + + } + + @Test + public void putPatchSamePserverPutAnotherPserver() throws IOException { + String payload = getBulkPayload("single-transaction/put-patch-same-pserver-put-another-pserver") + .replaceAll("<methodName>", name.getMethodName()); + Response response = executeRequest(payload); + + assertEquals("Request success", + Response.Status.CREATED.getStatusCode(), + response.getStatus()); + assertEquals("2 vertex from this test in graph", + Long.valueOf(2L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot).count().next()); + assertEquals("pserver 1 has hostname pserver-1-" + name.getMethodName() + " fqdn = patched-fqdn", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has("hostname", "pserver-1-" + name.getMethodName()) + .has("fqdn", "patched-fqdn").count().next()); + assertEquals("pserver 2 has hostname pserver-2-" + name.getMethodName(), + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has("hostname", "pserver-2-" + name.getMethodName()).count().next()); + } + + + protected String asString(Vertex v) { + final JSONObject result = new JSONObject(); + Iterator<VertexProperty<Object>> properties = v.properties(); + Property<Object> pk = null; + try { + while (properties.hasNext()) { + pk = properties.next(); + result.put(pk.key(), pk.value()); + } + } catch (JSONException e) { + e.printStackTrace(); + } + + return result.toString(); + } + + @Test + public void putPserverComplexRelBetweenDelExistingGvnf() throws IOException { + + AAIGraph.getInstance().getGraph().traversal().addV() + .property(AAIProperties.NODE_TYPE, "generic-vnf") + .property(AAIProperties.SOURCE_OF_TRUTH, sot) + .property(AAIProperties.AAI_URI, "/network/generic-vnfs/generic-vnf/gvnf-putPserverComplexRelBetweenDelExistingGvnf") + .property(AAIProperties.RESOURCE_VERSION, "0") + .property("vnf-id", "gvnf-" + name.getMethodName()) + .next(); + AAIGraph.getInstance().getGraph().tx().commit(); + + assertEquals("1 generic-vnf vertex exists before payload", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has(AAIProperties.NODE_TYPE, "generic-vnf").count().next()); + + String payload = getBulkPayload("single-transaction/put-pserver-complex-rel-between-del-existing-gvnf") + .replaceAll("<methodName>", name.getMethodName()); + Response response = executeRequest(payload); + + assertEquals("Request success", + Response.Status.CREATED.getStatusCode(), + response.getStatus()); + assertEquals("2 vertex from this test in graph", + Long.valueOf(2L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot).count().next()); + assertEquals("1 complex vertex", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has(AAIProperties.NODE_TYPE, "complex").count().next()); + assertEquals("1 pserver vertex", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has(AAIProperties.NODE_TYPE, "pserver").count().next()); + assertEquals("pserver has edge to complex", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has(AAIProperties.NODE_TYPE, "pserver") + .bothE() + .otherV() + .has(AAIProperties.NODE_TYPE, "complex") + .has(AAIProperties.SOURCE_OF_TRUTH, sot).count().next()); + assertEquals("0 generic-vnf vertex exists after payload", + Long.valueOf(0L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has(AAIProperties.NODE_TYPE, "generic-vnf").count().next()); + + assertThat("Response contains 204 status.", + response.getEntity().toString(), + containsString("\"response-status-code\":204")); + } + + @Test + public void putPserverComplexRelBetweenDelExistingGvnfFail() throws IOException { + + AAIGraph.getInstance().getGraph().traversal().addV() + .property(AAIProperties.NODE_TYPE, "generic-vnf") + .property(AAIProperties.SOURCE_OF_TRUTH, sot) + .property(AAIProperties.AAI_URI, "/network/generic-vnfs/generic-vnf/gvnf-putPserverComplexRelBetweenDelExistingGvnfFail") + .property(AAIProperties.RESOURCE_VERSION, "0") + .property("vnf-id", "gvnf-" + name.getMethodName()) + .next(); + AAIGraph.getInstance().getGraph().tx().commit(); + + assertEquals("1 generic-vnf vertex exists before payload", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot) + .has(AAIProperties.NODE_TYPE, "generic-vnf").count().next()); + + String payload = getBulkPayload("single-transaction/put-pserver-complex-rel-between-del-existing-gvnf-fail") + .replaceAll("<methodName>", name.getMethodName()); + Response response = executeRequest(payload); + + assertEquals("Request failed", + Response.Status.BAD_REQUEST.getStatusCode(), + response.getStatus()); + + assertEquals("1 vertex exists after payload due to failure", + Long.valueOf(1L), + AAIGraph.getInstance().getGraph().newTransaction().traversal(). + V().has(AAIProperties.SOURCE_OF_TRUTH, sot).count().next()); + + assertThat("Response contains correct index of failed operation.", + response.getEntity().toString(), + containsString("Operation 3 failed with status code (412) and msg")); + + assertThat("Response contains resource version msg for failed transaction.", + response.getEntity().toString(), + containsString("Precondition Failed:resource-version MISMATCH for delete of generic-vnf")); + + } + + @Test + public void checkExceedsLimit() throws IOException{ + + String payload = getBulkPayload("single-transaction/pserver-bulk-limit-exceed"); + Response response = executeRequest(payload); + + assertEquals("Request fails with 400", + Response.Status.BAD_REQUEST.getStatusCode(), + response.getStatus()); + assertThat("Response contains payload limit msg.", + response.getEntity().toString(), + containsString("Payload Limit Reached, reduce payload: Allowed limit = ")); + } + + @Test + public void invalidJson() { + + String payload = "{]}";//malformed json + Response response = executeRequest(payload); + + assertEquals("Request fails with 400", + Response.Status.BAD_REQUEST.getStatusCode(), + response.getStatus()); + assertThat("Response contains invalid payload msg.", + response.getEntity().toString(), + containsString("JSON processing error:Input payload does not follow bulk/single-transaction interface")); + } + + + @Test + public void noOperations() { + + String payload = "{'operations':[]}"; + Response response = executeRequest(payload); + + assertEquals("Request fails with 400", + Response.Status.BAD_REQUEST.getStatusCode(), + response.getStatus()); + assertThat("Response contains invalid payload msg.", + response.getEntity().toString(), + containsString("Required Field not passed.: Payload has no objects to operate on")); + } + + @Test + public void invalidAction() throws IOException { + + String payload = getBulkPayload("single-transaction/invalid-action"); + Response response = executeRequest(payload); + + assertEquals("Request fails with 400", + Response.Status.BAD_REQUEST.getStatusCode(), + response.getStatus()); + assertThat("Response contains invalid payload msg.", + response.getEntity().toString(), + containsString("JSON processing error:input payload missing required properties")); + assertThat("Response contains invalid payload details.", + response.getEntity().toString(), + containsString("[Operation 0 has invalid action 'create', Operation 1 has invalid action 'destroy']")); + + } + + @Test + public void missingFields() throws IOException { + + String payload = getBulkPayload("single-transaction/missing-fields"); + Response response = executeRequest(payload); + + assertEquals("Request fails with 400", + Response.Status.BAD_REQUEST.getStatusCode(), + response.getStatus()); + assertThat("Response contains invalid payload msg.", + response.getEntity().toString(), + containsString("JSON processing error:input payload missing required properties")); + assertThat("Response contains invalid payload details.", + response.getEntity().toString(), + containsString("[Operation 0 missing 'body', Operation 1 missing 'action', Operation 2 missing 'uri']")); + + } + + + + + protected Response executeRequest(String finalPayload) { + MockHttpServletRequest mockReq = new MockHttpServletRequest(HttpMethod.POST, "http://www.test.com"); + + return bulkSingleTransactionConsumer.process( + finalPayload, + schemaVersions.getDefaultVersion().toString(), + httpHeaders, + uriInfo, + mockReq + ); + } + + @Override + protected BulkConsumer getConsumer() { + return null; + } + + @Override + protected String getUri() { + return "/aai/" + schemaVersions.getDefaultVersion().toString() + "/bulk-single-transaction-multi-operation"; + } +}
\ No newline at end of file diff --git a/aai-resources/src/test/java/org/onap/aai/rest/retired/RetiredConsumerSpringTest.java b/aai-resources/src/test/java/org/onap/aai/rest/retired/RetiredConsumerSpringTest.java new file mode 100644 index 0000000..1fae4a7 --- /dev/null +++ b/aai-resources/src/test/java/org/onap/aai/rest/retired/RetiredConsumerSpringTest.java @@ -0,0 +1,143 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.rest.retired; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import org.junit.Test; +import org.onap.aai.rest.AbstractSpringRestTest; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +public class RetiredConsumerSpringTest extends AbstractSpringRestTest { + + private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(RetiredConsumerSpringTest.class); + + private Map<String, HttpStatus> httpStatusMap; + + @Test + public void testOldVersionsEndpointReturnRetired(){ + setupOldVersions(); + executeRestCalls(); + } + + @Test + public void testOldModelsRetired(){ + setupModelsRetired(); + executeRestCalls(); + } + + @Test + public void testOldNamedQueriesRetired(){ + setupNamedQueriesRetired(); + executeRestCalls(); + } + + @Test + public void testEdgeTagQueryRetired(){ + setupEdgeTagQueriesRetired(); + executeRestCalls(); + } + + @Test + public void testSDNZoneQueryRetired(){ + setupSDNZoneQueryRetired(); + executeRestCalls(); + } + + private void setupSDNZoneQueryRetired() { + httpStatusMap = new HashMap<>(); + + httpStatusMap.put("/aai/v2/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v3/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v4/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v5/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v6/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v7/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v8/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v9/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v10/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v11/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v12/search/sdn-zone-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v12/search/sdn-zone-query/fjaisdofjasdjf", HttpStatus.GONE); + } + + private void setupEdgeTagQueriesRetired() { + + httpStatusMap = new HashMap<>(); + + httpStatusMap.put("/aai/v2/search/edge-tag-query", HttpStatus.GONE); + httpStatusMap.put("/aai/v2/search/edge-tag-query/", HttpStatus.GONE); + httpStatusMap.put("/aai/v2/search/edge-tag-query/something", HttpStatus.GONE); + httpStatusMap.put("/aai/v3/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v4/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v5/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v6/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v7/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v8/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v9/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v10/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v11/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v12/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v13/search/edge-tag-query/aifjsodifjiasjdfioadjsiofjaiosdj", HttpStatus.GONE); + httpStatusMap.put("/aai/v13/search/edge-tag-query", HttpStatus.GONE); + } + + private void setupNamedQueriesRetired() { + httpStatusMap = new HashMap<>(); + + httpStatusMap.put("/aai/v8/cloud-infrastructure/pservers/pserver/samomaisdjfajsfoas", HttpStatus.NOT_FOUND); + + httpStatusMap.put("/aai/v8/service-design-and-creation/named-queries/named-query/samomaisdjfajsfoas", HttpStatus.GONE); + } + + protected void executeRestCalls() { + httpStatusMap.forEach((url, status) -> { + ResponseEntity responseEntity; + responseEntity = restTemplate.exchange(baseUrl + url, HttpMethod.GET, httpEntity, String.class); + LOGGER.debug("For url {} expected status {} actual status {} and body {}", url, status, responseEntity.getStatusCodeValue(), responseEntity.getBody()); + assertEquals(status, responseEntity.getStatusCode()); + }); + } + + private void setupOldVersions() { + httpStatusMap = new HashMap<>(); + + httpStatusMap.put("/aai/v2/cloud-infrastructure/pservers/pserver/test-pserver1", HttpStatus.GONE); + httpStatusMap.put("/aai/v3/cloud-infrastructure/pservers/pserver/test-pserver1", HttpStatus.GONE); + httpStatusMap.put("/aai/v4/cloud-infrastructure/pservers/pserver/test-pserver1", HttpStatus.GONE); + httpStatusMap.put("/aai/v5/cloud-infrastructure/pservers/pserver/test-pserver1", HttpStatus.GONE); + httpStatusMap.put("/aai/v6/cloud-infrastructure/pservers/pserver/test-pserver1", HttpStatus.GONE); + } + + private void setupModelsRetired() { + + httpStatusMap = new HashMap<>(); + + httpStatusMap.put("/aai/v8/cloud-infrastructure/pservers/pserver/samomaisdjfajsfoas", HttpStatus.NOT_FOUND); + + httpStatusMap.put("/aai/v8/service-design-and-creation/models/model/samomaisdjfajsfoas", HttpStatus.GONE); + } +} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/retired/RetiredConsumerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/retired/RetiredConsumerTest.java deleted file mode 100644 index 3c2897c..0000000 --- a/aai-resources/src/test/java/org/onap/aai/rest/retired/RetiredConsumerTest.java +++ /dev/null @@ -1,127 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.rest.retired; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import org.onap.aai.AAISetup; -import org.onap.aai.introspection.Version; - -import javax.ws.rs.core.*; -import java.util.*; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.mockito.Matchers.anyObject; -import static org.mockito.Mockito.when; - -public abstract class RetiredConsumerTest extends AAISetup { - - protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json"); - - private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>(); - - static { - VALID_HTTP_STATUS_CODES.add(200); - VALID_HTTP_STATUS_CODES.add(201); - VALID_HTTP_STATUS_CODES.add(204); - } - - protected RetiredConsumer retiredConsumer; - protected HttpHeaders httpHeaders; - protected UriInfo uriInfo; - - private MultivaluedMap<String, String> headersMultiMap; - private MultivaluedMap<String, String> queryParameters; - - private List<String> aaiRequestContextList; - - private List<MediaType> outputMediaTypes; - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(RetiredConsumer.class.getName()); - - @Before - public void setup(){ - logger.info("Starting the setup for the integration tests of Rest Endpoints"); - - retiredConsumer = getRetiredConsumer(); - httpHeaders = Mockito.mock(HttpHeaders.class); - uriInfo = Mockito.mock(UriInfo.class); - - headersMultiMap = new MultivaluedHashMap<>(); - queryParameters = Mockito.spy(new MultivaluedHashMap<>()); - - headersMultiMap.add("X-FromAppId", "JUNIT"); - headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString()); - headersMultiMap.add("Real-Time", "true"); - headersMultiMap.add("Accept", "application/json"); - headersMultiMap.add("aai-request-context", ""); - - outputMediaTypes = new ArrayList<>(); - outputMediaTypes.add(APPLICATION_JSON); - - aaiRequestContextList = new ArrayList<>(); - aaiRequestContextList.add(""); - - when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes); - when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap); - - when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList); - - - when(uriInfo.getQueryParameters()).thenReturn(queryParameters); - when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters); - - // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable - Mockito.doReturn(null).when(queryParameters).remove(anyObject()); - - when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON); - } - - @Test - public void testRetiredForAllEndPoints(){ - when(uriInfo.getPath()).thenReturn("/aai/v3/cloud-infrastructure/pservers/pserver/test-pserver1"); - - Response response = retiredConsumer.createMessageGet(Version.getLatest().toString(), httpHeaders, uriInfo, null); - assertNotNull(response); - assertEquals(Response.Status.GONE.getStatusCode(), response.getStatus()); - - response = retiredConsumer.createMessagePost(Version.getLatest().toString(), httpHeaders, uriInfo, null); - assertNotNull(response); - assertEquals(Response.Status.GONE.getStatusCode(), response.getStatus()); - - response = retiredConsumer.createMessagePatch(Version.getLatest().toString(), httpHeaders, uriInfo, null); - assertNotNull(response); - assertEquals(Response.Status.GONE.getStatusCode(), response.getStatus()); - - response = retiredConsumer.createMessagePut(Version.getLatest().toString(), httpHeaders, uriInfo, null); - assertNotNull(response); - assertEquals(Response.Status.GONE.getStatusCode(), response.getStatus()); - - response = retiredConsumer.createMessageDelete(Version.getLatest().toString(), httpHeaders, uriInfo, null); - assertNotNull(response); - assertEquals(Response.Status.GONE.getStatusCode(), response.getStatus()); - } - - public abstract RetiredConsumer getRetiredConsumer(); -} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/retired/V7V8ModelsTest.java b/aai-resources/src/test/java/org/onap/aai/rest/retired/V7V8ModelsTest.java deleted file mode 100644 index 76b38af..0000000 --- a/aai-resources/src/test/java/org/onap/aai/rest/retired/V7V8ModelsTest.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.rest.retired; - -public class V7V8ModelsTest extends RetiredConsumerTest { - - @Override - public RetiredConsumer getRetiredConsumer() { - return new V7V8Models(); - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/retired/V7V8NamedQueriesTest.java b/aai-resources/src/test/java/org/onap/aai/rest/retired/V7V8NamedQueriesTest.java deleted file mode 100644 index 88ae287..0000000 --- a/aai-resources/src/test/java/org/onap/aai/rest/retired/V7V8NamedQueriesTest.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.rest.retired; - -public class V7V8NamedQueriesTest extends RetiredConsumerTest { - - @Override - public RetiredConsumer getRetiredConsumer() { - return new V7V8NamedQueries(); - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/tools/ModelVersionTransformerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/tools/ModelVersionTransformerTest.java deleted file mode 100644 index 1fb048a..0000000 --- a/aai-resources/src/test/java/org/onap/aai/rest/tools/ModelVersionTransformerTest.java +++ /dev/null @@ -1,135 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.rest.tools; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.mockito.Mockito; -import org.onap.aai.AAISetup; -import org.onap.aai.dbmap.AAIGraph; -import org.onap.aai.introspection.ModelInjestor; -import org.skyscreamer.jsonassert.JSONAssert; - -import javax.ws.rs.core.*; -import java.util.*; - -import static org.junit.Assert.assertNotNull; -import static org.mockito.Matchers.anyObject; -import static org.mockito.Mockito.when; - -public class ModelVersionTransformerTest extends AAISetup { - - - protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json"); - - private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>(); - - static { - VALID_HTTP_STATUS_CODES.add(200); - VALID_HTTP_STATUS_CODES.add(201); - VALID_HTTP_STATUS_CODES.add(204); - } - - private ModelVersionTransformer modelVersionTransformer; - - private HttpHeaders httpHeaders; - - private UriInfo uriInfo; - - private MultivaluedMap<String, String> headersMultiMap; - private MultivaluedMap<String, String> queryParameters; - - private List<String> aaiRequestContextList; - - private List<MediaType> outputMediaTypes; - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(ModelVersionTransformerTest.class.getName()); - - @BeforeClass - public static void setupRest(){ - AAIGraph.getInstance(); - ModelInjestor.getInstance(); - } - - @Before - public void setup(){ - logger.info("Starting the setup for the integration tests of Rest Endpoints"); - - modelVersionTransformer = new ModelVersionTransformer(); - httpHeaders = Mockito.mock(HttpHeaders.class); - uriInfo = Mockito.mock(UriInfo.class); - - headersMultiMap = new MultivaluedHashMap<>(); - queryParameters = Mockito.spy(new MultivaluedHashMap<>()); - - headersMultiMap.add("X-FromAppId", "JUNIT"); - headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString()); - headersMultiMap.add("Real-Time", "true"); - headersMultiMap.add("Content-Type", "application/xml"); - headersMultiMap.add("Accept", "application/json"); - headersMultiMap.add("aai-request-context", ""); - - outputMediaTypes = new ArrayList<>(); - outputMediaTypes.add(APPLICATION_JSON); - - aaiRequestContextList = new ArrayList<>(); - aaiRequestContextList.add(""); - - when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes); - when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap); - when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList); - - - when(uriInfo.getQueryParameters()).thenReturn(queryParameters); - when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters); - - // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable - Mockito.doReturn(null).when(queryParameters).remove(anyObject()); - - when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON); - } - - @Test - public void modelTransform() throws Exception { - - String modelXmlPayload = getPayload("payloads/modeltransforms/model.xml"); - String modelJsonPayload = getPayload("payloads/modeltransforms/model.json"); - - String uri = "modeltransform"; - - when(uriInfo.getPath()).thenReturn(uri); - // Comment the following line for the null pointer exception - when(uriInfo.getPath(false)).thenReturn(uri); - - outputMediaTypes = new ArrayList<>(); - outputMediaTypes.add(MediaType.valueOf("application/xml")); - - when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes); - when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap); - when(httpHeaders.getMediaType()).thenReturn(MediaType.valueOf("application/xml")); - - Response response = modelVersionTransformer.modelTransform(modelXmlPayload,uri, httpHeaders, uriInfo, null); - - assertNotNull(response); - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/rest/retired/V3ThroughV7ConsumerTest.java b/aai-resources/src/test/java/org/onap/aai/rest/util/LogFormatToolsTest.java index fef695a..f17257b 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/retired/V3ThroughV7ConsumerTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/util/LogFormatToolsTest.java @@ -17,12 +17,18 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.aai.rest.retired; +package org.onap.aai.rest.util; -public class V3ThroughV7ConsumerTest extends RetiredConsumerTest { +import org.junit.Test; - @Override - public RetiredConsumer getRetiredConsumer() { - return new V3ThroughV7Consumer(); +import static org.junit.Assert.assertNotNull; + +public class LogFormatToolsTest { + + @Test + public void testLogFormatTools(){ + + String dateTime = new LogFormatTools().getCurrentDateTime(); + assertNotNull(dateTime); } } diff --git a/aai-resources/src/test/java/org/onap/aai/rest/util/ValidateEncodingTest.java b/aai-resources/src/test/java/org/onap/aai/rest/util/ValidateEncodingTest.java index 483d254..136b64e 100644 --- a/aai-resources/src/test/java/org/onap/aai/rest/util/ValidateEncodingTest.java +++ b/aai-resources/src/test/java/org/onap/aai/rest/util/ValidateEncodingTest.java @@ -75,6 +75,7 @@ public class ValidateEncodingTest { assertEquals(false, validator.validate(mockUriInfo)); } + @Test public void goodQueryParams() throws UnsupportedEncodingException { MultivaluedHashMap<String, String> map = new MultivaluedHashMap<String, String>(); @@ -87,6 +88,18 @@ public class ValidateEncodingTest { assertEquals(true, validator.validate(mockUriInfo)); } + + @Test + public void testWhenQueryParameterHasPlusSignItShouldPass() throws UnsupportedEncodingException { + + MultivaluedHashMap<String, String> map = new MultivaluedHashMap<String, String>(); + map.putSingle("some-key", "test+one+two+three"); + UriInfo mockUriInfo = getMockUriInfo("", map); + + ValidateEncoding validator = ValidateEncoding.getInstance(); + + assertEquals(true, validator.validate(mockUriInfo)); + } private UriInfo getMockUriInfo(String path, MultivaluedMap<String, String> map) { UriInfo mockUriInfo = Mockito.mock(UriInfo.class); diff --git a/aai-resources/src/test/java/org/onap/aai/schema/db/ManageSchemaTest.java b/aai-resources/src/test/java/org/onap/aai/schema/db/ManageSchemaTest.java deleted file mode 100644 index de5eba1..0000000 --- a/aai-resources/src/test/java/org/onap/aai/schema/db/ManageSchemaTest.java +++ /dev/null @@ -1,111 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.schema.db; - -import org.janusgraph.core.JanusGraphFactory; -import org.janusgraph.core.JanusGraph; -import org.janusgraph.core.schema.JanusGraphManagement; -import org.codehaus.jackson.JsonParseException; -import org.codehaus.jackson.map.JsonMappingException; -import org.codehaus.jackson.map.ObjectMapper; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.onap.aai.AAISetup; -import org.onap.aai.db.schema.DBIndex; -import org.onap.aai.db.schema.ManageJanusGraphSchema; - -import java.io.IOException; -import java.util.Set; - -@Ignore("not ready yet") -public class ManageSchemaTest extends AAISetup { - - private JanusGraph graph = null; - - @Before - public void beforeTest() { - graph = JanusGraphFactory.open("bundleconfig-local/etc/appprops/aaiconfig.properties"); - } - - /* - @Test - public void populateEmptyGraph() { - ManageJanusGraphSchema schema = new ManageJanusGraphSchema(graph); - schema.buildSchema(); - } - - @Test - public void modifyIndex() { - ManageJanusGraphSchema schema = new ManageJanusGraphSchema(graph); - schema.buildSchema(); - Vertex v = graph.addVertex(); - v.setProperty("aai-node-type", "pserver"); - v.setProperty("hostname", "test1"); - v.setProperty("internet-topology", "test2"); - graph.commit(); - DBIndex index = new DBIndex(); - index.setName("internet-topology"); - index.setUnique(false); - schema.updateIndex(index); - - } - */ - @Test - public void closeRunningInstances() { - - JanusGraphManagement mgmt = graph.openManagement(); - Set<String> instances = mgmt.getOpenInstances(); - - for (String instance : instances) { - - if (!instance.contains("(current)")) { - mgmt.forceCloseInstance(instance); - } - } - mgmt.commit(); - - graph.close(); - - } - @Test - public void addNewIndex() throws JsonParseException, JsonMappingException, IOException { - ObjectMapper mapper = new ObjectMapper(); - String content = " {\r\n" + - " \"name\" : \"equipment-name\",\r\n" + - " \"unique\" : false,\r\n" + - " \"properties\" : [ {\r\n" + - " \"name\" : \"equipment-name\",\r\n" + - " \"cardinality\" : \"SINGLE\",\r\n" + - " \"typeClass\" : \"java.lang.String\"\r\n" + - " } ]\r\n" + - " }"; - DBIndex index = mapper.readValue(content, DBIndex.class); - ManageJanusGraphSchema schema = new ManageJanusGraphSchema(graph); - JanusGraphManagement mgmt = graph.openManagement(); - Set<String> instances = mgmt.getOpenInstances(); - System.out.println(instances); - schema.updateIndex(index); - - graph.close(); - - } - -} diff --git a/aai-resources/src/test/java/org/onap/aai/serialization/queryformats/QueryFormatTestHelper.java b/aai-resources/src/test/java/org/onap/aai/serialization/queryformats/QueryFormatTestHelper.java deleted file mode 100644 index 609de5f..0000000 --- a/aai-resources/src/test/java/org/onap/aai/serialization/queryformats/QueryFormatTestHelper.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.serialization.queryformats; - -import org.apache.tinkerpop.gremlin.structure.Graph; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.apache.tinkerpop.gremlin.structure.io.IoCore; -import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; -import org.onap.aai.db.props.AAIProperties; -import org.onap.aai.serialization.queryformats.exceptions.AAIFormatVertexException; -import org.onap.aai.serialization.queryformats.utils.UrlBuilder; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; - -import static org.mockito.Matchers.isA; -import static org.mockito.Mockito.when; - -public class QueryFormatTestHelper { - - - public static final String testResources = "src/test/resources/org.onap.aai/serialization/queryformats/"; - public static final String graphsonResources = "src/test/resources/org.onap.aai/serialization/queryformats/graphson/"; - - - public static void mockPathed(UrlBuilder mock) throws AAIFormatVertexException { - Answer<String> answer = new Answer<String>() { - public String answer(InvocationOnMock invocation) throws Throwable { - Vertex v = invocation.getArgumentAt(0, Vertex.class); - - return v.<String>property(AAIProperties.AAI_URI).orElse("urimissing"); - } - }; - when(mock.pathed(isA(Vertex.class))).thenAnswer(answer); - - } - - public static Graph loadGraphson(String fileName) throws IOException { - final Graph graph = TinkerGraph.open(); - graph.io(IoCore.graphson()).readGraph(QueryFormatTestHelper.graphsonResources + fileName); - - return graph; - } - - public static void setFinalStatic(Field field, Object newValue) throws Exception { - field.setAccessible(true); - // remove final modifier from field - Field modifiersField = Field.class.getDeclaredField("modifiers"); - modifiersField.setAccessible(true); - modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(null, newValue); - } - -} diff --git a/aai-resources/src/test/java/org/onap/aai/serialization/queryformats/ResourceFormatSpec.java b/aai-resources/src/test/java/org/onap/aai/serialization/queryformats/ResourceFormatSpec.java deleted file mode 100644 index 19a2ffd..0000000 --- a/aai-resources/src/test/java/org/onap/aai/serialization/queryformats/ResourceFormatSpec.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.serialization.queryformats; - -import com.bazaarvoice.jolt.JsonUtils; -import com.google.gson.Gson; -import com.google.gson.JsonObject; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; -import org.apache.tinkerpop.gremlin.structure.Graph; -import org.onap.aai.transforms.JoltTestUtil; - -import java.io.IOException; -import java.util.List; - -public class ResourceFormatSpec { - - - private final Graph graph; - public ResourceFormatSpec() throws IOException { - - this.graph = QueryFormatTestHelper.loadGraphson("resource.graphson"); - } - - - public void verifyFormat(Formatter formatter, String fileName) throws IOException { - List<Object> vertices = graph.traversal().V().not(__.has("aai-node-type", "cloud-region")).map(x -> (Object)x.get()).toList(); - - JsonObject obj = formatter.output(vertices); - String jsonStr = new Gson().toJson(obj); - Object actual = JsonUtils.jsonToObject(jsonStr); - - Object expected = JsonUtils.filepathToObject(QueryFormatTestHelper.testResources + fileName); - - JoltTestUtil.runArrayOrderObliviousDiffy("Failed case ", expected, actual); - } - - public void mockToJson(String result) { - - - - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/serialization/queryformats/ResourceFormatTest.java b/aai-resources/src/test/java/org/onap/aai/serialization/queryformats/ResourceFormatTest.java deleted file mode 100644 index 5379676..0000000 --- a/aai-resources/src/test/java/org/onap/aai/serialization/queryformats/ResourceFormatTest.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.serialization.queryformats; - -import com.google.gson.JsonObject; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.onap.aai.introspection.Loader; -import org.onap.aai.serialization.db.DBSerializer; -import org.onap.aai.serialization.queryformats.exceptions.AAIFormatVertexException; -import org.onap.aai.serialization.queryformats.utils.UrlBuilder; - -import java.io.IOException; - -import static org.mockito.Matchers.isA; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; - -@Ignore -public class ResourceFormatTest { - - @Mock - private UrlBuilder urlBuilder; - @Mock - private DBSerializer serializer; - @Mock - private Loader loader; - - private ResourceFormatSpec spec; - - @Before - public void setup() throws Exception { - spec = new ResourceFormatSpec(); - MockitoAnnotations.initMocks(this); - } - - @Test - public void resourceAndUrl() throws Exception { - QueryFormatTestHelper.mockPathed(urlBuilder); - Resource resource = new Resource.Builder(loader, serializer, urlBuilder).includeUrl().build(); - Resource spy = spy(resource); - doReturn(new JsonObject()).when(spy).vertexToJsonObject(isA(Vertex.class)); - Formatter formatter = new Formatter(spy); - spec.verifyFormat(formatter, "resource_and_url-format.json"); - } - - @Test - public void resource() throws IOException, AAIFormatVertexException { - QueryFormatTestHelper.mockPathed(urlBuilder); - Resource resource = new Resource.Builder(loader, serializer, urlBuilder).build(); - Resource spy = spy(resource); - doReturn(new JsonObject()).when(spy).vertexToJsonObject(isA(Vertex.class)); - Formatter formatter = new Formatter(spy); - spec.verifyFormat(formatter, "resource-format.json"); - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/transforms/JoltTestUtil.java b/aai-resources/src/test/java/org/onap/aai/transforms/JoltTestUtil.java deleted file mode 100644 index 07832a8..0000000 --- a/aai-resources/src/test/java/org/onap/aai/transforms/JoltTestUtil.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.transforms; - - -import com.bazaarvoice.jolt.ArrayOrderObliviousDiffy; -import com.bazaarvoice.jolt.Diffy; -import com.bazaarvoice.jolt.JsonUtils; -import org.junit.Assert; - -import java.io.IOException; - -public class JoltTestUtil { - - private static final Diffy diffy = new Diffy(); - private static final Diffy arrayOrderObliviousDiffy = new ArrayOrderObliviousDiffy(); - - public static void runDiffy( String failureMessage, Object expected, Object actual ) throws IOException { - runDiffy( diffy, failureMessage, expected, actual ); - } - - public static void runDiffy( Object expected, Object actual ) throws IOException { - runDiffy( diffy, "Failed", expected, actual ); - } - - public static void runArrayOrderObliviousDiffy( String failureMessage, Object expected, Object actual ) throws IOException { - runDiffy( arrayOrderObliviousDiffy, failureMessage, expected, actual ); - } - - public static void runArrayOrderObliviousDiffy( Object expected, Object actual ) throws IOException { - runDiffy( arrayOrderObliviousDiffy, "Failed", expected, actual ); - } - - - private static void runDiffy( Diffy diffy, String failureMessage, Object expected, Object actual ) { - String actualObject = JsonUtils.toPrettyJsonString( actual ); - Diffy.Result result = diffy.diff( expected, actual ); - if (!result.isEmpty()) { - Assert.fail( "\nActual object\n" + actualObject + "\n" + failureMessage + "\nDiffy output\n" + result.toString()); - } - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/transforms/LowerHyphenToLowerCamelConverterTest.java b/aai-resources/src/test/java/org/onap/aai/transforms/LowerHyphenToLowerCamelConverterTest.java deleted file mode 100644 index c88e005..0000000 --- a/aai-resources/src/test/java/org/onap/aai/transforms/LowerHyphenToLowerCamelConverterTest.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.transforms; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; - -import java.util.Arrays; -import java.util.Collection; - -import static org.junit.Assert.assertEquals; - -@RunWith(Parameterized.class) -public class LowerHyphenToLowerCamelConverterTest { - - private Converter converter = new LowerHyphenToLowerCamelConverter(); - - private String input; - private String expected; - - public LowerHyphenToLowerCamelConverterTest(String input, String expected){ - this.input = input; - this.expected = expected; - } - - /** - * Data Provider for the Lower Hyphen to Camel Converter Tests - * Make sure the capitalization is not lost during the conversion - * @return - */ - @Parameters - public static Collection<Object[]> data(){ - - return Arrays.asList(new Object[][]{ - {null, null}, - {"test-name", "testName"}, - {"test---name", "testName"}, // Case multiple - {"testName", "testName"}, // Case where upper case word shouldn't be lowercased - {"test-name-cool", "testNameCool"}, - {"test-name-Cool", "testNameCool"}, - {"test-name-Cool-Name-wow----Rest", "testNameCoolNameWowRest"}, - {"test-name#fast#", "testName#fast#"}, - {"test-name---", "testName"}, - {"----test-name", "TestName"}, - }); - } - - @Test - public void testIfInputSuccessfullyModified(){ - String actual = converter.convert(input); - assertEquals(expected, actual); - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/transforms/MapTraverserTest.java b/aai-resources/src/test/java/org/onap/aai/transforms/MapTraverserTest.java deleted file mode 100644 index fef84c2..0000000 --- a/aai-resources/src/test/java/org/onap/aai/transforms/MapTraverserTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.transforms; - -import com.bazaarvoice.jolt.JsonUtils; -import org.junit.Test; - -import java.io.IOException; -import java.util.Map; - -public class MapTraverserTest { - - private final String testResources = "src/test/resources/maputils/testcases/"; - - private String[] testCases = { "TestCase1.json", "TestCase2.json" }; - private MapTraverser traverser = new MapTraverser(new LowerCamelToLowerHyphenConverter()); - - @Test(expected = NullPointerException.class) - public void testIfMapIsNullThrowNullPointerException(){ - Map<String, Object> map = null; - traverser.convertKeys(map); - } - - @Test - public void runTestCases() throws IOException { - - for(String testCase : testCases){ - Map<String, Object> values = JsonUtils.filepathToMap(testResources + testCase); - - Object input = values.get("input"); - Object actual = traverser.convertKeys((Map<String, Object>)input); - Object output = values.get("output"); - JoltTestUtil.runArrayOrderObliviousDiffy( "failed case " + testCase, output, actual ); - } - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/util/AAIRSyncUtilityTest.java b/aai-resources/src/test/java/org/onap/aai/util/AAIRSyncUtilityTest.java deleted file mode 100644 index c1aeff9..0000000 --- a/aai-resources/src/test/java/org/onap/aai/util/AAIRSyncUtilityTest.java +++ /dev/null @@ -1,211 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.util; - - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.onap.aai.AAISetup; - -import java.io.File; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.nio.file.Files; -import java.util.ArrayList; -import java.util.List; -import java.util.StringTokenizer; -import java.util.UUID; - -import static org.junit.Assert.*; - -@Ignore -public class AAIRSyncUtilityTest extends AAISetup { - - AAIRSyncUtility syncUtil; - AAIRSyncUtility syncUtilOmitDoCommand; - AAIConfig aaiConfig; - String hostName; - String transId = UUID.randomUUID().toString(); - - /** - * Initialize. - */ - @Before - public void initialize(){ - syncUtil = new AAIRSyncUtility(); - - syncUtilOmitDoCommand = new AAIRSyncUtility(){ - /** - * {@inheritDoc} - */ - @Override - public int doCommand(List<String> command) throws Exception - { - return 1; - } - }; - - partialSetupForAAIConfig(); - - InetAddress ip = null; - try { - ip = InetAddress.getLocalHost(); - } catch (UnknownHostException e2) { - e2.printStackTrace(); - } - hostName = ip.getHostName(); - } - - - /** - * Test sendRsync. - */ - @Test - public void testSendRsyncCommand(){ - syncUtilOmitDoCommand.sendRsyncCommand(transId, "RandomFileName"); - //TODO write codes to check what is being logged - } - - /** - * Test getHost. - */ - @Test - public void testGetHost(){ - - String returnedHost = null; - Method getHostMethod = makePublic("getHost"); - try { - returnedHost = (String)getHostMethod.invoke(syncUtil, null); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - - assertEquals("Host name didn't match", returnedHost, hostName); - } - - /** - * Test getRemoteHostList. - */ - @Test - public void testGetRemoteHostList(){ - String localHost = "host_local"; - String remoteHost1 = "hostR1"; - String remoteHost2 = "hostR2"; - ArrayList<String> remotes = new ArrayList<String>(); - remotes.add(remoteHost1); - remotes.add(remoteHost2); - - StringTokenizer stTokenizer = new StringTokenizer(remoteHost1+"\r"+remoteHost2+"\r"+localHost); - - Method m = makePublic("getRemoteHostList"); - try { - assertEquals("Remote host missing", remotes, m.invoke(syncUtil, stTokenizer, localHost)); - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - e.printStackTrace(); - } - } - - /** - * Test doCommand. - */ - @Test - public void testDoCommand(){ - - assertTrue("Don't have execute permissions", Files.isExecutable(new File(".").toPath())); - - List<String> commands = new ArrayList<String>(); - commands.add("ping"); - commands.add("google.com"); - try { - assertEquals("Failed to execute commands", 1, syncUtilOmitDoCommand.doCommand(commands)); - } catch (Exception e) { - fail("Failed to execute a command"); - e.printStackTrace(); - } - - } - - /** - * Test doCommand with null. - */ - @Test - public void testDoCommand_withNull(){ - assertTrue("Don't have execute permissions", Files.isExecutable(new File(".").toPath())); - try { - assertEquals("This should be unreachable", 1, syncUtil.doCommand(null)); - } catch (Exception e) { - assertTrue("Expecting an NPE from ProcessBuilder", e instanceof NullPointerException); - } - - } - - - /** - * Helper method to covert access type of a method from private to public . - * - * @param privateMethodName Method which is private originally - * @return method object with 'access type = 'public' - */ - public Method makePublic(String privateMethodName){ - Method targetMethod = null; - try { - if (privateMethodName.equals("getHost")) - targetMethod = AAIRSyncUtility.class.getDeclaredMethod(privateMethodName, null); - else if (privateMethodName.equals("getRemoteHostList")) - targetMethod = AAIRSyncUtility.class.getDeclaredMethod(privateMethodName, StringTokenizer.class, String.class); - } catch (NoSuchMethodException | SecurityException e) { - e.printStackTrace(); - } - targetMethod.setAccessible(true); - return targetMethod; - } - - /** - * Helper method to load aai config from test configuration file - * This requires that the 'test_aaiconfig.properties' file is available - */ - static void setFinalStatic(Field field, Object newValue) throws Exception { - field.setAccessible(true); - Field modifiersField = Field.class.getDeclaredField("modifiers"); - modifiersField.setAccessible(true); - modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); - field.set(null, newValue); - } - - /** - * Helper method to setup AAIConfig for test. - */ - public void partialSetupForAAIConfig(){ - try { - setFinalStatic(AAIConfig.class.getDeclaredField("GlobalPropFileName"), "src/test/resources/bundleconfig-local/etc/appprops/aaiconfig.properties"); - } - catch (SecurityException e) {fail();} - catch (NoSuchFieldException e) {fail();} - catch (Exception e) {fail();} - - AAIConfig.reloadConfig(); - } - -} diff --git a/aai-resources/src/test/java/org/onap/aai/util/DataConversionHelperTest.java b/aai-resources/src/test/java/org/onap/aai/util/DataConversionHelperTest.java deleted file mode 100644 index 3acbf03..0000000 --- a/aai-resources/src/test/java/org/onap/aai/util/DataConversionHelperTest.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.util; - -import org.junit.Rule; -import org.junit.Test; -import org.powermock.modules.agent.PowerMockAgent; -import org.powermock.modules.junit4.rule.PowerMockRule; - -import static org.junit.Assert.assertEquals; - -public class DataConversionHelperTest { - - @Rule - public PowerMockRule rule = new PowerMockRule(); - - static { - PowerMockAgent.initializeIfNeeded(); - } - - /** - * Test convertIPVersionNumToString with value "4". - */ - @Test - public void testConvertIPVersionNumToString_withNum4(){ - assertEquals(DataConversionHelper.IPVERSION_IPV4, DataConversionHelper.convertIPVersionNumToString("4")); - } - - /** - * Test convertIPVersionNumToString with value "6". - */ - @Test - public void testConvertIPVersionNumToString_withNum6(){ - assertEquals(DataConversionHelper.IPVERSION_IPV6, DataConversionHelper.convertIPVersionNumToString("6")); - } - - /** - * Test convertIPVersionNumToString with a value other than "4" or "6". - */ - @Test - public void testConvertIPVersionNumToString_withAThirdNumber(){ - assertEquals(DataConversionHelper.IPVERSION_UNKNOWN, DataConversionHelper.convertIPVersionNumToString("-1")); - } - - /** - * Test convertIPVersionStringToNum with "v4". - */ - @Test - public void testConvertIPVersionStringToNum_withV4(){ - assertEquals("4", DataConversionHelper.convertIPVersionStringToNum(DataConversionHelper.IPVERSION_IPV4)); - } - - /** - * Test convertIPVersionStringToNum with "v6". - */ - @Test - public void testConvertIPVersionStringToNum_withV6(){ - assertEquals("6", DataConversionHelper.convertIPVersionStringToNum(DataConversionHelper.IPVERSION_IPV6)); - } - - /** - * Test convertIPVersionStringToNum with an illegal version. - */ - @Test - public void testConvertIPVersionStringToNum_withRandomString(){ - assertEquals("0", DataConversionHelper.convertIPVersionStringToNum("test string")); - } - - -} diff --git a/aai-resources/src/test/java/org/onap/aai/util/DbTestConfig.java b/aai-resources/src/test/java/org/onap/aai/util/DbTestConfig.java deleted file mode 100644 index 09e4cd7..0000000 --- a/aai-resources/src/test/java/org/onap/aai/util/DbTestConfig.java +++ /dev/null @@ -1,294 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.util; - -import java.io.*; -import java.net.InetAddress; -import java.util.*; - -public class DbTestConfig { - - public static final String AUDIT_FILESEP = (System.getProperty("file.separator") == null) ? "/" : System.getProperty("file.separator"); - public static final String AUDIT_HOME = (System.getProperty("audit.home") == null) ? AUDIT_FILESEP + "opt" + AUDIT_FILESEP + "audit" : System.getProperty("audit.home"); - public static final String AuditPropFilename = "c:\\tmp\\auditConfig.prop"; - public static final String AUDIT_CONFIG_CHECKINGTIME = "audit.config.checktime"; - public static final String AUDIT_NODENAME = "localhost"; - public static final String AUDIT_DEBUG = "audit.config.debug"; - - private static Properties serverProps; - private static boolean propsInitialized = false; - private static boolean timerSet = false; - private static Timer timer = null; - - private static String propFile = null; - - /** - * Inits the. - * - * @param propertyFile the property file - */ - public synchronized static void init(String propertyFile) { - propFile = propertyFile; - init(); - } - - /** - * Inits the. - */ - public synchronized static void init() { - System.out.println("Initializing Config"); - - DbTestConfig.getConfigFile(); - DbTestConfig.reloadConfig(); - - if ( propFile == null) - propFile = AuditPropFilename; - TimerTask task = null; - task = new DbTestFileWatcher ( new File(propFile)) { - protected void onChange( File file ) { - // here we implement the onChange - DbTestConfig.reloadConfig(); - } - }; - - if (!timerSet) { - timerSet = true; - // repeat the check every second - timer = new Timer(); - String fwi = DbTestConfig.get(AUDIT_CONFIG_CHECKINGTIME); - timer.schedule( task , new Date(), Integer.parseInt(fwi) ); - System.out.println("Config Watcher Interval=" + fwi); - - System.out.println("File" + propFile+" Loaded!"); - } - - } - - /** - * Cleanup. - */ - public static void cleanup() { - timer.cancel(); - } - - /** - * Gets the config file. - * - * @return the config file - */ - public static String getConfigFile() { - return propFile; - } - - /** - * Reload config. - */ - public synchronized static void reloadConfig() { - - String propFileName = propFile; - - Properties newServerProps = null; - - System.out.println("Reloading config from "+propFileName); - - try { - InputStream is = new FileInputStream(propFileName); - newServerProps = new Properties(); - newServerProps.load(is); - propsInitialized = true; - - serverProps = newServerProps; - if (get(AUDIT_DEBUG).equals("on")) { - serverProps.list(System.out); - } - newServerProps = null; - - } catch (FileNotFoundException fnfe) { - System.out.println("AuditConfig: " + propFileName + ". FileNotFoundException: "+fnfe.getMessage()); - } catch (IOException e) { - System.out.println("AuditConfig: " + propFileName + ". IOException: "+e.getMessage()); - } - } - - /** - * Gets the. - * - * @param key the key - * @param defaultValue the default value - * @return the string - */ - public static String get(String key, String defaultValue) { - String result = defaultValue; - try { - result = get (key); - } - catch ( Exception a ) { - } - return result; - } - - /** - * Gets the. - * - * @param key the key - * @return the string - */ - public static String get(String key) { - String response = null; - - if (key.equals(AUDIT_NODENAME)) { - // Get this from InetAddress rather than the properties file - String nodeName = getNodeName(); - if (nodeName != null) { - return nodeName; - } - // else get from property file - } - - if (!propsInitialized || (serverProps == null)) { - reloadConfig(); - } - if (!serverProps.containsKey(key)) { - System.out.println( "Property key "+key+" cannot be found"); - } else { - response = serverProps.getProperty(key); - if (response == null || response.isEmpty()) { - System.out.println("Property key "+key+" is null or empty"); - } - } - return response; - } - - /** - * Gets the int. - * - * @param key the key - * @return the int - */ - public static int getInt(String key) { - return Integer.valueOf(DbTestConfig.get(key)); - } - - /** - * Gets the server props. - * - * @return the server props - */ - public static Properties getServerProps() { - return serverProps; - } - - /** - * Gets the node name. - * - * @return the node name - */ - public static String getNodeName() { - try { - InetAddress ip = InetAddress.getLocalHost(); - if (ip != null) { - String hostname = ip.getHostName(); - if (hostname != null) { - return hostname; - } - } - } catch (Exception e) { - return null; - } - return null; - } - - /** - * Extracts a specific property key subset from the known properties. - * The prefix may be removed from the keys in the resulting dictionary, - * or it may be kept. In the latter case, exact matches on the prefix - * will also be copied into the resulting dictionary. - * - * @param prefix is the key prefix to filter the properties by. - * @param keepPrefix if true, the key prefix is kept in the resulting - * dictionary. As side-effect, a key that matches the prefix exactly - * will also be copied. If false, the resulting dictionary's keys are - * shortened by the prefix. An exact prefix match will not be copied, - * as it would result in an empty string key. - * @return a property dictionary matching the filter key. May be - * an empty dictionary, if no prefix matches were found. - * - * @see #getProperty( String ) is used to assemble matches - */ - public static Properties matchingSubset(String prefix, boolean keepPrefix) { - Properties result = new Properties(); - - // sanity check - if (prefix == null || prefix.length() == 0) { - return result; - } - - String prefixMatch; // match prefix strings with this - String prefixSelf; // match self with this - if (prefix.charAt(prefix.length() - 1) != '.') { - // prefix does not end in a dot - prefixSelf = prefix; - prefixMatch = prefix + '.'; - } else { - // prefix does end in one dot, remove for exact matches - prefixSelf = prefix.substring(0, prefix.length() - 1); - prefixMatch = prefix; - } - // POSTCONDITION: prefixMatch and prefixSelf are initialized! - - // now add all matches into the resulting properties. - // Remark 1: #propertyNames() will contain the System properties! - // Remark 2: We need to give priority to System properties. This is done - // automatically by calling this class's getProperty method. - String key; - for (Enumeration e = serverProps.keys(); e.hasMoreElements(); ) { - key = (String) e.nextElement(); - - if (keepPrefix) { - // keep full prefix in result, also copy direct matches - if (key.startsWith(prefixMatch) || key.equals(prefixSelf)) { - result.setProperty(key, serverProps.getProperty(key)); - } - } else { - // remove full prefix in result, dont copy direct matches - if (key.startsWith(prefixMatch)) { - result.setProperty(key.substring(prefixMatch.length()), serverProps.getProperty(key)); - } - } - } - - // done - return result; - } - - - - /** - * The main method. - * - * @param args the arguments - */ - public static void main(String[] args) { - // TODO Auto-generated method stub - DbTestConfig.init( ); - - } - -} diff --git a/aai-resources/src/test/java/org/onap/aai/util/DbTestFileWatcher.java b/aai-resources/src/test/java/org/onap/aai/util/DbTestFileWatcher.java deleted file mode 100644 index 60b9039..0000000 --- a/aai-resources/src/test/java/org/onap/aai/util/DbTestFileWatcher.java +++ /dev/null @@ -1,63 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.util; - -import java.io.File; -import java.util.TimerTask; - -public abstract class DbTestFileWatcher extends TimerTask { - private long timeStamp; - private File file; - - /** - * Instantiates a new db test file watcher. - * - * @param file the file - */ - public DbTestFileWatcher( File file ) { - this.file = file; - this.timeStamp = file.lastModified(); - } - - /** - * {@inheritDoc} - */ - public final void run() { - long timeStamp = file.lastModified(); - - if( (timeStamp - this.timeStamp) > 500 ) { - this.timeStamp = timeStamp; - onChange(file); - } - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * On change. - * - * @param file the file - */ - protected abstract void onChange( File file ); -} diff --git a/aai-resources/src/test/java/org/onap/aai/util/DbTestGetFileTime.java b/aai-resources/src/test/java/org/onap/aai/util/DbTestGetFileTime.java deleted file mode 100644 index fb1f1ee..0000000 --- a/aai-resources/src/test/java/org/onap/aai/util/DbTestGetFileTime.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.util; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.attribute.BasicFileAttributeView; -import java.nio.file.attribute.BasicFileAttributes; -import java.nio.file.attribute.FileTime; - -public class DbTestGetFileTime { - - - /** - * Creates the file return time. - * - * @param path the path - * @return the file time - * @throws IOException Signals that an I/O exception has occurred. - */ - public FileTime createFileReturnTime( String path) throws IOException { - File file = new File(path); - if(!file.exists()) { - file.createNewFile(); - } - Path p = Paths.get(file.getAbsolutePath()); - BasicFileAttributes view - = Files.getFileAttributeView(p, BasicFileAttributeView.class) - .readAttributes(); - FileTime fileTime=view.creationTime(); - // also available view.lastAccessTine and view.lastModifiedTime - return fileTime; - } -} diff --git a/aai-resources/src/test/java/org/onap/aai/util/DbTestProcessBuilder.java b/aai-resources/src/test/java/org/onap/aai/util/DbTestProcessBuilder.java deleted file mode 100644 index 503ec0f..0000000 --- a/aai-resources/src/test/java/org/onap/aai/util/DbTestProcessBuilder.java +++ /dev/null @@ -1,213 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.util; - -import java.io.*; -import java.nio.file.attribute.FileTime; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -public class DbTestProcessBuilder { - ///public static Logger clog = Logger.getLogger("auditConsole"); - //public static Logger alog = Logger.getLogger("auditLog"); - - /** - * Start audit process non blocking. - * - * @param wait the wait - * @param cmds the cmds - * @param dir the dir - */ - public void startAuditProcessNonBlocking(final long wait, final String cmds[], final String dir) { - - final ProcessBuilder pb = new ProcessBuilder(cmds).redirectErrorStream(true).directory(new File(dir)); - - new Thread(new Runnable() { - public void run() { - try { - //System.out.println( "sleeping seconds " + wait + " cmds " + Arrays.toString(cmds)); - Thread.sleep(wait*1000); - //System.out.println( "returned from sleep"); - final Process p = pb.start(); - //System.out.println( "returned from pb.start"); - final InputStream is = p.getInputStream(); - final BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream())); - final InputStreamReader isr = new InputStreamReader(is); - final BufferedReader br = new BufferedReader(isr); -//clog.debug("Output of running " + Arrays.toString(cmds) + " is:"); - System.out.println("Output of running is:" ); - String line; - while ((line = br.readLine()) != null ) { - System.out.println(line); - } - System.out.println("stderr of running is:" ); - - while ((line = stdError.readLine()) != null ) { - System.out.println(line); - } - - } catch (IOException ie) { - - } catch (InterruptedException itre) { - Thread.currentThread().interrupt(); - } - } - }).start(); - - } - - - private final ScheduledExecutorService auditProcessScheduler = - Executors.newScheduledThreadPool(10); - - /** - * Run W command every X seconds for Y minutes. - * - * @param w the w - * @param x the x - * @param y the y - * @param runningDir the running dir - */ - public void runWCommandEveryXSecondsForYMinutes(String[] w, int x, int y, final String runningDir) { - final String[] c1 = w; - final Runnable audit = new Runnable() { - public void run() { -//clog.debug("checkpoint "+(new Date()).toString()); - DbTestProcessBuilder a1 = new DbTestProcessBuilder(); - a1.startAuditProcessNonBlocking(1, c1, "/tmp"); - } - }; - - final ScheduledFuture<?> auditHandle = - auditProcessScheduler.scheduleAtFixedRate(audit, 0, x, TimeUnit.SECONDS); - auditProcessScheduler.schedule(new Runnable() { - public void run() { - auditHandle.cancel(true); - } - }, y * 60, TimeUnit.SECONDS); - } - - - /** - * The main method. - * - * @param args the arguments - */ - @SuppressWarnings({ "null", "static-access" }) - public static void main(String args[]) { - String props = "NA"; - if (args.length > 0) { - System.out.println( "DbTestProcessBuilder called with " + args.length + " arguments, " + args[0]); - props = args[0].trim(); - } else { - System.out.print("usage: DbTestProcessBuilder <auditConfig.prop path\n"); - return; - } - DbTestConfig.init(props); - String ail = DbTestConfig.get("audit.list"); - String path = DbTestConfig.get("audit.path"); - final String runningDir = DbTestConfig.get("audit.runningdir"); - try { - DbTestGetFileTime getFileTime = new DbTestGetFileTime(); - FileTime fileTime = getFileTime.createFileReturnTime( path ); - System.out.println(path + " creation time :" - + new SimpleDateFormat("dd/MM/yyyy HH:mm:ss") - .format(fileTime.toMillis()) + " runningDir " + runningDir); - } catch ( IOException io ) { - System.out.println( "IOException getting creation time " + path + " message " + io.getMessage()); - io.printStackTrace(); - } - - List<String> items = Arrays.asList(ail.split("\\s*,\\s*")); - for (String ai: items) { - if (!DbTestConfig.get("audit.task."+ai+".status").startsWith("a")) { - continue; - } -//clog.debug("***audit item = " + ai + " Starting***"); - - String w1 = DbTestConfig.get("audit.task."+ai+".cmd"); - String[] w2 = w1.split("\\s*,\\s*"); - System.out.print( "task items are : " + Arrays.toString(w2)); - // append the audit item name as the prefix of the audit directory name - /*final int N = w2.length; - w2 = Arrays.copyOf(w2, N+1); - w2[N-2] = "\"-Dp=" + DbTestConfig.get("audit.task.odl.output.dir")+ai + "\""; -//clog.debug("***java -D:"+w2[N-2]); - //w2[N] = "\""+DbTestConfig.get("audit.task.odl.output.dir")+ai+"\""; - w2[N] = "\""+DbTestConfig.get("audit.task.odl.output.dir")+ai+"\""; - */ - DbTestProcessBuilder apb = new DbTestProcessBuilder(); - - String ts1 = DbTestConfig.get("audit.task."+ai+".schedule"); - String[] ts2 = ts1.split("\\s*,\\s*"); - // note ts2[0] is the wait-before time, and it is not being used right now. We start with ts2[1] - apb.runWCommandEveryXSecondsForYMinutes(w2,Integer.parseInt(ts2[1]),Integer.parseInt(ts2[2]), runningDir); -//clog.debug("***audit item = " + ai + " started***"); - System.out.println( "started test " + ai); - - /* - int ct = 0; - - while (true) try { - if (DbTestConfig.get("jcl").startsWith("q")) { - System.out.println("***Audit Main Program exiting..."); - System.exit(0); - } - - Thread.currentThread().sleep(1000); - if (ct < 10) { - ct++; - } else { - //clog.debug(AuditConfig.get("jcl").charAt(0)); - ct=0; - } - - } catch (InterruptedException ie) { - - } */ - } - int ct = 0; - - while (true) try { - if (DbTestConfig.get("jcl").startsWith("q")) { - System.out.println("***Audit Main Program exiting..."); - System.exit(0); - } - - Thread.currentThread().sleep(1000); - if (ct < 10) { - ct++; - } else { - //clog.debug(AuditConfig.get("jcl").charAt(0)); - ct=0; - } - - } catch (InterruptedException ie) { - - } - - } - -} diff --git a/aai-resources/src/test/java/org/onap/aai/util/JettyObfuscationConversionCommandLineUtilTest.java b/aai-resources/src/test/java/org/onap/aai/util/JettyObfuscationConversionCommandLineUtilTest.java deleted file mode 100644 index 7c4abc9..0000000 --- a/aai-resources/src/test/java/org/onap/aai/util/JettyObfuscationConversionCommandLineUtilTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.util; - -import org.junit.Ignore; -import org.junit.Test; - -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static org.junit.Assert.assertTrue; - -@Ignore -public class JettyObfuscationConversionCommandLineUtilTest { - private final ByteArrayOutputStream testOut = new ByteArrayOutputStream(); - - /** - * Test. - */ - @Test - public void test() { - //setup, this will catch main's print statements for evaluation -// System.setOut(new PrintStream(testOut)); - - /* ------ TEST OBFUSCATION ----*/ - JettyObfuscationConversionCommandLineUtil.main(new String[]{"-e", "hello world"}); - /* - * testOut was also catching any logging statements which interfered with result checking. - * This regex business was the workaround - it tries to find the expected value in - * the results and asserts against that. - */ - String obfResult = testOut.toString(); - String obfExpected = "OBF:1thf1ugo1x151wfw1ylz11tr1ymf1wg21x1h1uh21th7"; - Pattern obfExpectPat = Pattern.compile(obfExpected); - Matcher obfMatch = obfExpectPat.matcher(obfResult); - assertTrue(obfMatch.find()); - - testOut.reset(); //clear out previous result - - /* ------ TEST DEOBFUSCATION ----- */ - JettyObfuscationConversionCommandLineUtil.main(new String[]{"-d", obfExpected}); - String deobfResult = testOut.toString(); - String deobfExpected = "hello world"; - Pattern deobfExpectPat = Pattern.compile(deobfExpected); - Matcher deobfMatch = deobfExpectPat.matcher(deobfResult); - assertTrue(deobfMatch.find()); - - //clean up, resets to stdout -// System.setOut(null); - } - -} |