Naming micro-service code.

Docker updates and tests.

Change-Id: Iba669453c4035290441c757f5b1c673ab41213d6
Issue-ID: CCSDK-342
Signed-off-by: BT2983 <BT2983@att.com>
diff --git a/ms/neng/src/main/docker/Dockerfile b/ms/neng/src/main/docker/Dockerfile
index db87c4c..bcdaaef 100644
--- a/ms/neng/src/main/docker/Dockerfile
+++ b/ms/neng/src/main/docker/Dockerfile
@@ -1,10 +1,32 @@
-FROM TBD:TBD/TBD/TBD/alpine-java:8_jdk
+#============LICENSE_START=======================================================
+#  ONAP : CCSDK.apps
+#  ================================================================================
+#  Copyright (C) 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=========================================================
+
+#================================================================================
+# Docker setup for the micro-service
+#================================================================================
+FROM onap/ccsdk-ubuntu-image:latest
 VOLUME /tmp
-ADD NetworkElementNameGen.jar app.jar
+ADD maven/NetworkElementNameGen.jar app.jar
 VOLUME /opt/etc
-VOLUME /opt/aai
-ADD /opt/etc/ /opt/etc/
-ADD /opt/aai/ /opt/aai/
+#VOLUME /opt/aai
+ADD maven/opt/etc/ /opt/etc/
+#ADD /opt/aai/ /opt/aai/
 ADD startService.sh /startService.sh
 RUN chmod 700 /startService.sh
-ENTRYPOINT ./startService.sh 
\ No newline at end of file
+ENTRYPOINT sh /startService.sh 
+EXPOSE 8080
diff --git a/ms/neng/src/main/docker/startService.sh b/ms/neng/src/main/docker/startService.sh
index e690311..2e3e454 100644
--- a/ms/neng/src/main/docker/startService.sh
+++ b/ms/neng/src/main/docker/startService.sh
@@ -1,9 +1,29 @@
 #!/bin/sh
+#============LICENSE_START=======================================================
+#  ONAP : CCSDK.apps
+#  ================================================================================
+#  Copyright (C) 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=========================================================
+
 touch /app.jar
-app_args=-Dspring.profiles.active=${SPRING_PROFILE}
-app_args=${app_args}" -Dpolicymgr_url="${POLICYMGR_URL}" -Dinstar_aaf_enc_pass="${AAF_PASS_ENC}
-app_args=${app_args}" -Daai_cert_pass="${AAI_CERT_PASSWORD}" -Daai_uribase="${AAI_URI_BASE}
-app_args=${app_args}" -Dnwelgen_db_user="${NWEG_DB_USER}" -Dnwelgen_db_pass="${NWEG_DB_PASS}" -Dnwelgen_db_url="${NWEG_DB_URL}
-echo "app_args ="${app_args}
-echo "app_args   ="${app_args}
-java -Djava.security.egd=file:/dev/./urandom  ${app_args} -Xms1024m -Xmx1024m  -jar  /app.jar
+APP_ARGS=-Dspring.profiles.active=${SPRING_PROFILE}
+APP_ARGS=${APP_ARGS}" -Dpolicymgr_url="${POLICYMGR_URL}" -Dinstar_aaf_enc_pass="${AAF_PASS_ENC}
+APP_ARGS=${APP_ARGS}" -Daai_cert_pass="${AAI_CERT_PASSWORD}" -Daai_uribase="${AAI_URI_BASE}
+APP_ARGS=${APP_ARGS}" -Dneng_db_user="${NENG_DB_USER}" -Dneng_db_pass="${NENG_DB_PASS}
+APP_ARGS=${APP_ARGS}" -Dneng_db_url="${NENG_DB_URL}
+APP_ARGS=${APP_ARGS}" -cp /opt/etc/config"
+
+echo "APP_ARGS ="${APP_ARGS}
+java -Djava.security.egd=file:/dev/./urandom  ${APP_ARGS} -Xms1024m -Xmx1024m -jar /app.jar --spring.config.location=/opt/etc/config/ > /tmp/app.out 2> /tmp/app.err
diff --git a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/Application.java b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/Application.java
index e95fb7e..6efa94d 100644
--- a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/Application.java
+++ b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/Application.java
@@ -23,10 +23,7 @@
 import java.util.Arrays;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.web.support.SpringBootServletInitializer;
 import org.springframework.context.ApplicationContext;
@@ -40,7 +37,6 @@
 @SpringBootApplication
 @ComponentScan(basePackages = "org.onap.ccsdk")
 @EnableAsync
-@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
 public class Application extends SpringBootServletInitializer {
     /**
      * Configures the application.
diff --git a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/persistence/ApplicationConfig.java b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/persistence/ApplicationConfig.java
index d69c270..f68add7 100644
--- a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/persistence/ApplicationConfig.java
+++ b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/persistence/ApplicationConfig.java
@@ -20,16 +20,23 @@
 
 package org.onap.ccsdk.apps.ms.neng.core.persistence;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Properties;
+import java.util.stream.StreamSupport;
 import javax.sql.DataSource;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.AbstractEnvironment;
+import org.springframework.core.env.EnumerablePropertySource;
 import org.springframework.core.env.Environment;
+import org.springframework.core.env.MutablePropertySources;
 import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 import org.springframework.jdbc.datasource.DriverManagerDataSource;
@@ -44,17 +51,32 @@
  */
 @Configuration
 @EnableJpaRepositories(basePackages = "org.onap.ccsdk.apps.ms.neng.persistence.repository")
+@EntityScan("org.onap.ccsdk.apps.ms.neng.persistence.entity")
 @EnableTransactionManagement
 public class ApplicationConfig {
 
     @Autowired
     private Environment environment;
 
+    @SuppressWarnings("rawtypes")
+    void debugProperties() {
+        Properties props = new Properties();
+        MutablePropertySources propSrcs = ((AbstractEnvironment)this.environment).getPropertySources();
+        StreamSupport.stream(propSrcs.spliterator(), false)
+                .filter(ps -> ps instanceof EnumerablePropertySource)
+                .map(ps -> ((EnumerablePropertySource) ps).getPropertyNames())
+                .flatMap(Arrays::<String>stream)
+                .forEach(propName -> props.setProperty(propName, this.environment.getProperty(propName)));   
+        System.out.println("Properties: " + props);
+    }
+    
     /**
      * Builds and returns the DataSource used for persisting the data managed by this micro-service.
      */
     @Bean
     public DataSource dataSource() {
+        debugProperties();
+        
         DriverManagerDataSource dataSource = new DriverManagerDataSource();
         dataSource.setDriverClassName(environment.getProperty("datasource.db.driver-class-name"));
         dataSource.setUrl(environment.getProperty("datasource.db.url"));
@@ -133,9 +155,9 @@
                     JpaVendorAdapter jpaVendAdapter, 
                     Map<String, String> hibProps, 
                     DataSource dataSource) {
+        debugProperties();
         EntityManagerFactoryBuilder factBuilder = new EntityManagerFactoryBuilder(jpaVendAdapter, hibProps, null);
-        String pkgToScan = environment.getProperty("entitymanager.packagesToScan");
+        String pkgToScan = "org.onap.ccsdk.apps.ms.neng.persistence.entity";
         return factBuilder.dataSource(dataSource).packages(pkgToScan).build();
     }
-
 }
diff --git a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceImpl.java b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceImpl.java
index 24736b2..79e4657 100644
--- a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceImpl.java
+++ b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceImpl.java
@@ -168,18 +168,15 @@
      */
     @Override
     public void addPolicy(Object request) throws Exception {
-        try {
-            @SuppressWarnings("unchecked")
-            Map<String, Object> policyData = (Map<String, Object>)request;
-            PolicyDetails pd = new PolicyDetails();
-            pd.setPolicyName((String) policyData.get("policyName"));
-            ObjectMapper objectmapper = new ObjectMapper();
-            log.info(objectmapper.writeValueAsString(policyData.get("policyValue")));
-            pd.setPolicyResponse(objectmapper.writeValueAsString(policyData.get("policyValue")));
-            policyDetailsRepository.save(pd);
-        } catch (Exception e) {
-            log.warning(e.getMessage());
-        }
+        @SuppressWarnings("unchecked")
+        Map<String, Object> policyData = (Map<String, Object>)request;
+        PolicyDetails pd = new PolicyDetails();
+        String name = (String) policyData.get("policyName");
+        pd.setPolicyName(name);
+        ObjectMapper objectmapper = new ObjectMapper();
+        log.info(objectmapper.writeValueAsString(policyData.get("policyValue")));
+        pd.setPolicyResponse((String)policyData.get("policyValue"));
+        policyDetailsRepository.save(pd);
     }
     
     void buildUnAssignResponse(List<GeneratedName> generatedNames, NameGenResponse response) {
diff --git a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/rs/RestService.java b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/rs/RestService.java
index f8da1ee..8319a54 100644
--- a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/rs/RestService.java
+++ b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/rs/RestService.java
@@ -24,7 +24,6 @@
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
-import java.util.List;
 import java.util.Map;
 import javax.validation.Valid;
 import javax.ws.rs.DELETE;
@@ -76,9 +75,9 @@
      * <p/>This is not used by clients -- it is here to help with diagnostics.
      */
     @GET
-    @Path("/v1/getpolicyresponse/{policyName}")
+    @Path("/v1/getpolicyresponse")
     @Produces({MediaType.APPLICATION_JSON})
-    public List<Map<String, Object>> getPolicyResponse(@QueryParam("policyName") String policyName) throws Exception;
+    public Response getPolicyResponse(@QueryParam("policyName") String policyName) throws Exception;
 
     /**
      * API to add a naming policy to the database cache in this micro-service.
diff --git a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/rs/RestServiceImpl.java b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/rs/RestServiceImpl.java
index ed5723b..bc8cab4 100644
--- a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/rs/RestServiceImpl.java
+++ b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/rs/RestServiceImpl.java
@@ -20,10 +20,7 @@
 
 package org.onap.ccsdk.apps.ms.neng.core.service.rs;
 
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.logging.Logger;
 import javax.validation.Valid;
@@ -90,13 +87,11 @@
      * API to return naming policy cached in this micro-service.
      */
     @Override
-    public List<Map<String, Object>> getPolicyResponse(String policyName) throws Exception {
+    public Response getPolicyResponse(String policyName) throws Exception {
+        log.info("get-policy: " + policyName);
+        
         PolicyDetails policyDetails = service.getPolicyDetails(policyName);
-        List<Map<String, Object>> policyResponse = null;
-        ObjectMapper mapper = new ObjectMapper();
-        policyResponse = mapper.readValue(policyDetails.getPolicyResponse(),
-                                          new TypeReference<List<Map<String, Object>>>() {});
-        return policyResponse;
+        return Response.ok().entity(policyDetails.getPolicyResponse()).build();
     }
 
     /**
@@ -109,6 +104,7 @@
             service.addPolicy(request);
             respMap.put("status", "Policy added successfully");
         } catch (Exception e) {
+            log.warning(e.getMessage());
             respMap.put("status", "Failed");
         }
         return respMap;
diff --git a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/service/extinf/impl/PolicyFinderServiceDbImpl.java b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/service/extinf/impl/PolicyFinderServiceDbImpl.java
index d283b36..9cb434f 100644
--- a/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/service/extinf/impl/PolicyFinderServiceDbImpl.java
+++ b/ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/service/extinf/impl/PolicyFinderServiceDbImpl.java
@@ -49,6 +49,9 @@
         ObjectMapper objectmapper = new ObjectMapper();
         objectmapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
         PolicyDetails policyDetails = policyDetailsRepo.findPolicyResponseByName(policyName);
+        if (policyDetails == null) {
+            throw new Exception("Unable to find the policy " + policyName);
+        }
         List<Map<Object, Object>> respObj = objectmapper.readValue(policyDetails.getPolicyResponse(),
                         new TypeReference<List<Map<Object, Object>>>() {});
         transformConfigObject(objectmapper, respObj);
diff --git a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingData.java b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingDataTest.java
similarity index 99%
rename from ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingData.java
rename to ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingDataTest.java
index 4b1d1ea..d05644b 100644
--- a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingData.java
+++ b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingDataTest.java
@@ -44,7 +44,7 @@
 import org.onap.ccsdk.apps.ms.neng.core.validator.DbNameValidator;
 
 @RunWith(MockitoJUnitRunner.class)
-public class NameGeneratorExcMissingData {
+public class NameGeneratorExcMissingDataTest {
     @Mock
     private PolicyParameters policyParams = mock(PolicyParameters.class);
     @Mock
diff --git a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/TestSequenceGenerator.java b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/SequenceGeneratorTest.java
similarity index 98%
rename from ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/TestSequenceGenerator.java
rename to ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/SequenceGeneratorTest.java
index fcee4da..23bbc7c 100644
--- a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/TestSequenceGenerator.java
+++ b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/SequenceGeneratorTest.java
@@ -36,7 +36,7 @@
 
 
 @RunWith(MockitoJUnitRunner.class)
-public class TestSequenceGenerator {
+public class SequenceGeneratorTest {
     @Mock
     private GeneratedNameRespository genNameRepo = mock(GeneratedNameRespository.class);
     @Mock
diff --git a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceIntTest.java b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceIntTest.java
index a187369..c3815f4 100644
--- a/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceIntTest.java
+++ b/ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceIntTest.java
@@ -33,6 +33,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import javax.ws.rs.core.Response;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -195,18 +196,14 @@
     }
 
     @Test
-    public void testRestGetPolicyResponse() throws Exception {
-        List<Map<String, Object>> policyResponse =
-                        restServiceImpl.getPolicyResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml");
-        assertNotNull(policyResponse);
-    }
-
-    @Test
     public void testRestAddPolicyToDb() throws Exception {
         Map<String, Object> policy = new HashMap<>();
-        policy.put("policyName", "policyname");
-        policy.put("policyValue", "policyname");
+        policy.put("policyName", "JQINSRIOV.Config_MS_SriovBigJson.1.xml");
+        policy.put("policyValue", "some policy");
         restServiceImpl.addPolicyToDb(policy);
+        
+        Response policyResponse = restServiceImpl.getPolicyResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml");
+        assertNotNull(policyResponse);
     }
 
     @Test
diff --git a/ms/neng/src/test/resources/application-test.properties b/ms/neng/src/test/resources/application-test.properties
index ca8ac12..ae425c3 100644
--- a/ms/neng/src/test/resources/application-test.properties
+++ b/ms/neng/src/test/resources/application-test.properties
@@ -1,38 +1,13 @@
-info.build.artifact=@project.artifactId@
-info.build.name=@project.name@
-info.build.description=@project.description@
-info.build.version=@project.version@
-
-spring.jersey.type=filter
-
-logging.level.root=info
-logging.level.org.glassfish=info
-logging.level.org.glassfish.jersey=info
-
-spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
-
-logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr($ threadId: {PID:- }){magenta} %clr(---){faint} %clr([ hostname: %X{hostname} serviceName: %X{serviceName} version: %X{version} transactionId: %X{transactionId} requestTimeStamp: %X{requestTimestamp}  responseTimeStamp: %X{responseTimestamp} duration: %X{duration}]){yellow} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex
-
-liquibase.changeLog=classpath:/h2db/changelog/h2db.changelog-master.xml
-logging.level.liquibase: DEBUG
-
-spring.jersey.type=filter
-spring.mvc.urls=swagger,docs,prometheus,auditevents,info,heapdump,autoconfig,beans,loggers,dump,env,trace,health,configprops,mappings
-
-server.contextPath=/web
-
-spring.datasource.driver-class-name=org.h2.Driver
-spring.datasource.username=sa
-spring.datasource.password=sa
-spring.jpa.hibernate.ddl-auto=none
-spring.jpa.show-sql=true
-spring.datasource.url=jdbc:h2:mem:tests;DB_CLOSE_DELAY=-1;
+#=========================================================================
+#
+# Configuration for the test profile, which is used to run integration
+# tests of the application, normally in your IDE.
+#
+#=========================================================================
 
 datasource.db.driver-class-name=org.h2.Driver
 datasource.db.url=jdbc:h2:mem:tests;DB_CLOSE_DELAY=-1;
-datasource.db.username=sa
-datasource.db.password=sa
-jpa.hibernate.ddl-auto=none
-jpa.show-sql=true
+datasource.db.username=none
+datasource.db.password=none
 
-entitymanager.packagesToScan=org.onap.ccsdk.apps.ms.neng.persistence.entity
+liquibase.changeLog=classpath:/h2db/changelog/h2db.changelog-master.xml
diff --git a/ms/neng/src/test/resources/h2db/changelog/h2db.changelog-master.xml b/ms/neng/src/test/resources/h2db/changelog/h2db.changelog-master.xml
index 496a2e9..2826e4d 100644
--- a/ms/neng/src/test/resources/h2db/changelog/h2db.changelog-master.xml
+++ b/ms/neng/src/test/resources/h2db/changelog/h2db.changelog-master.xml
@@ -1,5 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
- 
+ <!--
+ * ============LICENSE_START=======================================================
+ * ONAP : CCSDK.apps
+ * ================================================================================
+ * Copyright (C) 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=========================================================
+ -->
 <databaseChangeLog
         xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/ms/neng/src/test/sanity/README.txt b/ms/neng/src/test/sanity/README.txt
new file mode 100644
index 0000000..b98414f
--- /dev/null
+++ b/ms/neng/src/test/sanity/README.txt
@@ -0,0 +1,6 @@
+To run the sanity test, do the following:
+
+    With no DB:
+        bring up the app with the 'dbless' profile.
+        Run from shell:
+            ./suite.sh
diff --git a/ms/neng/src/test/sanity/add-policy.sh b/ms/neng/src/test/sanity/add-policy.sh
new file mode 100644
index 0000000..108d0d4
--- /dev/null
+++ b/ms/neng/src/test/sanity/add-policy.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+#============LICENSE_START=======================================================
+#  ONAP : CCSDK.apps
+#  ================================================================================
+#  Copyright (C) 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=========================================================
+
+#==================================================================================
+# This script does a sanity test on the add-policy API of the micro-service.
+#==================================================================================
+
+. ./env.sh
+URL=web/service/v1/addPolicy
+TEMP_FILE=/tmp/add-policy.$$.$RANDOM
+EXTERNAL_KEY=${1:-123456789}
+
+printf '{ ' > $TEMP_FILE
+printf '"policyName": "sanity-policy-' >> $TEMP_FILE
+printf $EXTERNAL_KEY >> $TEMP_FILE
+printf '", "policyValue" : "' >> $TEMP_FILE
+cat ./policy-1.json | sed 's/\"/\\\"/g' | tr '\n' ' ' | tr '\r' ' ' >> $TEMP_FILE
+echo '"}' >> $TEMP_FILE
+
+echo "==================================================="
+echo "======  Adding Policy:  ==========================="
+cat $TEMP_FILE
+echo ""
+echo "==================================================="
+
+echo "==================================================="
+curl -vi -H "Content-Type: application/json" --data @$TEMP_FILE $PROTOCOL://$HOST:$PORT/$URL
+echo "==================================================="
+
+rm -f $TEMP_FILE
diff --git a/ms/neng/src/test/sanity/env.sh b/ms/neng/src/test/sanity/env.sh
new file mode 100644
index 0000000..8685bcf
--- /dev/null
+++ b/ms/neng/src/test/sanity/env.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+#============LICENSE_START=======================================================
+#  ONAP : CCSDK.apps
+#  ================================================================================
+#  Copyright (C) 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=========================================================
+
+#==================================================================================
+# Sets up environment for testing.
+#==================================================================================
+
+PORT=8080
+HOST=localhost
+PROTOCOL=http
diff --git a/ms/neng/src/test/sanity/gen-name.sh b/ms/neng/src/test/sanity/gen-name.sh
new file mode 100644
index 0000000..fb106ed
--- /dev/null
+++ b/ms/neng/src/test/sanity/gen-name.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+#============LICENSE_START=======================================================
+#  ONAP : CCSDK.apps
+#  ================================================================================
+#  Copyright (C) 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=========================================================
+
+#==================================================================================
+# This script does a sanity test on the generate-name API of this micro-service.
+#==================================================================================
+
+. ./env.sh
+URL=web/service/v1/genNetworkElementName
+TEMP_FILE=/tmp/gen-name.$$.$RANDOM
+EXTERNAL_KEY=${2:-123456789}
+
+USE_DB=${1:-'Y'}
+USE_DB_BOOL=$([ "$USE_DB" == "Y" ] && echo "true" || echo "false")
+
+printf '{ "UseDb": "' > $TEMP_FILE
+printf $USE_DB_BOOL >> $TEMP_FILE
+printf '", "elements": [ { "external-key": "sanity-' >> $TEMP_FILE
+printf $EXTERNAL_KEY >> $TEMP_FILE
+printf '", "policy-instance-name": "sanity-policy-' >> $TEMP_FILE 
+printf $EXTERNAL_KEY >> $TEMP_FILE
+printf '", "NF_NAMING_CODE": "helloname", ' >> $TEMP_FILE 
+printf '"resource-name": "sanity-1", "naming-type": "sanity-1" } ] }' >> $TEMP_FILE
+
+echo "==================================================="
+echo "======== Generating name with request: ============"
+cat $TEMP_FILE
+echo ""
+echo "==================================================="
+
+echo "==================================================="
+curl -vi -H "Content-Type: application/json" --data @$TEMP_FILE $PROTOCOL://$HOST:$PORT/$URL
+echo "==================================================="
+
+rm -f $TEMP_FILE
+
diff --git a/ms/neng/src/test/sanity/get-policy.sh b/ms/neng/src/test/sanity/get-policy.sh
new file mode 100644
index 0000000..5c7136b
--- /dev/null
+++ b/ms/neng/src/test/sanity/get-policy.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+#============LICENSE_START=======================================================
+#  ONAP : CCSDK.apps
+#  ================================================================================
+#  Copyright (C) 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=========================================================
+
+#==================================================================================
+# This script does a sanity test on the get-policy API of this micro-service.
+#
+#==================================================================================
+
+. ./env.sh
+URL=web/service/v1/getpolicyresponse
+EXTERNAL_KEY=${1:-123456789}
+
+echo "==================================================="
+echo "======  Finding Policy: ==========================="
+curl -vi $PROTOCOL://$HOST:$PORT/$URL?policyName=sanity-policy-$EXTERNAL_KEY
+echo "==================================================="
diff --git a/ms/neng/src/test/sanity/hello.sh b/ms/neng/src/test/sanity/hello.sh
new file mode 100644
index 0000000..baa5b70
--- /dev/null
+++ b/ms/neng/src/test/sanity/hello.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+#============LICENSE_START=======================================================
+#  ONAP : CCSDK.apps
+#  ================================================================================
+#  Copyright (C) 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=========================================================
+
+#==================================================================================
+# This script does a sanity test on the micro-service, by sending the 'hello' message.
+#
+#==================================================================================
+. ./env.sh
+URL=web/service/hello
+
+echo "==================================================="
+echo "==================================================="
+echo 'This should show {"message":"Hello world!"}'
+echo "==================================================="
+curl -vi $PROTOCOL://$HOST:$PORT/$URL
+
+echo "==================================================="
+echo "==================================================="
+echo 'This should show {"message":"Hello you!"}'
+echo "==================================================="
+curl -vi $PROTOCOL://$HOST:$PORT/$URL?name=you
+echo "==================================================="
diff --git a/ms/neng/src/test/sanity/policy-1.json b/ms/neng/src/test/sanity/policy-1.json
new file mode 100644
index 0000000..e85bc79
--- /dev/null
+++ b/ms/neng/src/test/sanity/policy-1.json
@@ -0,0 +1,32 @@
+[
+    {
+        "config": {
+            "content": {
+                "naming-models":[
+                   { 
+                       "naming-properties":[
+                           { "property-name" : "COMPLEX", "property-operation" : "substr(5)" },
+                           { "property-name" : "SEQUENCE", "increment-sequence":{
+                                   "max" : "zzz" , "scope" : "ENTIRETY" , "start-value" : "001" , "length" : "3",
+                                   "increment" : "1" , "sequence-type" : "alpha-numeric"}
+                           },
+                           {"property-name" : "NF_NAMING_CODE"}
+                       ],
+                       "naming-type" : "VNF",
+                       "nfRole" : "vPE",
+                       "naming-recipe" : "COMPLEX|SEQUENCE|NF_NAMING_CODE"
+                   },
+                   { 
+                       "naming-properties":[
+                           {"property-name" : "NF_NAMING_CODE"}
+                       ],
+                       "naming-type" : "sanity-1",
+                       "nfRole" : "sanity-1",
+                       "naming-recipe" : "NF_NAMING_CODE"
+                   }
+                ]
+            }
+        },
+        "policyName": "sanity-policy-1"
+    }
+]
diff --git a/ms/neng/src/test/sanity/release-name.sh b/ms/neng/src/test/sanity/release-name.sh
new file mode 100644
index 0000000..2a6d16d
--- /dev/null
+++ b/ms/neng/src/test/sanity/release-name.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+#============LICENSE_START=======================================================
+#  ONAP : CCSDK.apps
+#  ================================================================================
+#  Copyright (C) 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=========================================================
+
+#==================================================================================
+# This script does a sanity test on the release-name API of this micro-service.
+#==================================================================================
+
+. ./env.sh
+URL=web/service/v1/genNetworkElementName
+TEMP_FILE=/tmp/gen-name.$$.$RANDOM
+EXTERNAL_KEY=${2:-123456789}
+
+USE_DB=${1:-'Y'}
+USE_DB_BOOL=$([ "$USE_DB" == "Y" ] && echo "true" || echo "false")
+
+printf '{ "UseDb": "' > $TEMP_FILE
+printf $USE_DB_BOOL >> $TEMP_FILE
+printf '", "elements": [ { "external-key": "sanity-' >> $TEMP_FILE
+printf $EXTERNAL_KEY >> $TEMP_FILE
+printf '", "resource-name": "sanity-1" } ] }' >> $TEMP_FILE
+
+echo "==================================================="
+echo "======= Releasing name with request: =============="
+cat $TEMP_FILE
+echo ""
+echo "==================================================="
+
+echo "==================================================="
+curl -vi -X "DELETE" -H "Content-Type: application/json" --data @$TEMP_FILE $PROTOCOL://$HOST:$PORT/$URL
+echo "==================================================="
+
+rm -f $TEMP_FILE
+
diff --git a/ms/neng/src/test/sanity/suite.sh b/ms/neng/src/test/sanity/suite.sh
new file mode 100644
index 0000000..79d5b41
--- /dev/null
+++ b/ms/neng/src/test/sanity/suite.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+#============LICENSE_START=======================================================
+#  ONAP : CCSDK.apps
+#  ================================================================================
+#  Copyright (C) 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=========================================================
+
+#==================================================================================
+# This script does a sanity test on the APIs of the micro-service.
+#==================================================================================
+
+EXTERNAL_KEY=$(date +%s)$RANDOM
+
+./hello.sh
+./add-policy.sh $EXTERNAL_KEY
+./get-policy.sh $EXTERNAL_KEY
+./gen-name.sh Y $EXTERNAL_KEY
+./release-name.sh Y $EXTERNAL_KEY
+