summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ms/neng/.classpath18
-rw-r--r--ms/neng/.project4
-rw-r--r--ms/neng/opt/etc/config/application-dbless.properties42
-rw-r--r--ms/neng/opt/etc/config/application-standalone.properties44
-rw-r--r--ms/neng/opt/etc/config/application.properties47
-rw-r--r--ms/neng/opt/etc/config/logback.xml40
-rw-r--r--ms/neng/opt/etc/config/system.properties35
-rw-r--r--ms/neng/pom.xml199
-rw-r--r--ms/neng/src/main/docker/Dockerfile34
-rw-r--r--ms/neng/src/main/docker/startService.sh34
-rw-r--r--ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/Application.java4
-rw-r--r--ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/persistence/ApplicationConfig.java26
-rw-r--r--ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceImpl.java21
-rw-r--r--ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/rs/RestService.java5
-rw-r--r--ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/core/service/rs/RestServiceImpl.java14
-rw-r--r--ms/neng/src/main/java/org/onap/ccsdk/apps/ms/neng/service/extinf/impl/PolicyFinderServiceDbImpl.java3
-rw-r--r--ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingDataTest.java (renamed from ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/gen/NameGeneratorExcMissingData.java)2
-rw-r--r--ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/SequenceGeneratorTest.java (renamed from ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/seq/TestSequenceGenerator.java)2
-rw-r--r--ms/neng/src/test/java/org/onap/ccsdk/apps/ms/neng/core/service/SpringServiceIntTest.java15
-rw-r--r--ms/neng/src/test/resources/application-test.properties43
-rw-r--r--ms/neng/src/test/resources/h2db/changelog/h2db.changelog-master.xml20
-rw-r--r--ms/neng/src/test/sanity/README.txt6
-rw-r--r--ms/neng/src/test/sanity/add-policy.sh46
-rw-r--r--ms/neng/src/test/sanity/env.sh26
-rw-r--r--ms/neng/src/test/sanity/gen-name.sh52
-rw-r--r--ms/neng/src/test/sanity/get-policy.sh32
-rw-r--r--ms/neng/src/test/sanity/hello.sh38
-rw-r--r--ms/neng/src/test/sanity/policy-1.json32
-rw-r--r--ms/neng/src/test/sanity/release-name.sh49
-rw-r--r--ms/neng/src/test/sanity/suite.sh31
30 files changed, 817 insertions, 147 deletions
diff --git a/ms/neng/.classpath b/ms/neng/.classpath
index 2fd27b36..1272921b 100644
--- a/ms/neng/.classpath
+++ b/ms/neng/.classpath
@@ -1,43 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" output="target/classes" path="src/main/java">
+ <classpathentry kind="src" output="target-ide/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
- <classpathentry excluding="**" kind="src" output="target/classes" path="opt/etc/config">
+ <classpathentry kind="src" output="target-ide/classes" path="opt/etc/config">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
- <classpathentry excluding="**" kind="src" output="target/classes" path="opt/etc/keystore">
+ <classpathentry kind="src" output="target-ide/classes" path="opt/etc/keystore">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
- <classpathentry excluding="**" kind="src" output="target/classes" path="opt/etc/truststore">
+ <classpathentry kind="src" output="target-ide/classes" path="opt/etc/truststore">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
- <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+ <classpathentry kind="src" output="target-ide/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+ <classpathentry kind="src" output="target-ide/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
- <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+ <classpathentry kind="src" output="target-ide/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
- <classpathentry excluding="**" kind="src" output="target/classes" path="opt/aai/keystore">
+ <classpathentry kind="src" output="target-ide/classes" path="opt/aai/keystore">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
@@ -57,5 +57,5 @@
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
- <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="output" path="target-ide/classes"/>
</classpath>
diff --git a/ms/neng/.project b/ms/neng/.project
index e3af4837..2ede1b82 100644
--- a/ms/neng/.project
+++ b/ms/neng/.project
@@ -26,12 +26,12 @@
</arguments>
</buildCommand>
<buildCommand>
- <name>org.eclipse.m2e.core.maven2Builder</name>
+ <name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
- <name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
diff --git a/ms/neng/opt/etc/config/application-dbless.properties b/ms/neng/opt/etc/config/application-dbless.properties
new file mode 100644
index 00000000..3ac94d18
--- /dev/null
+++ b/ms/neng/opt/etc/config/application-dbless.properties
@@ -0,0 +1,42 @@
+#============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=========================================================
+
+#=========================================================================
+#
+# Configuration used for running the application from your IDE, without a DB, for testing.
+#
+# It uses an in-memory DB to support database related functions.
+#
+#=========================================================================
+datasource.db.driver-class-name=org.h2.Driver
+datasource.db.url=jdbc:h2:mem:tests;DB_CLOSE_DELAY=-1;
+datasource.db.username=TBD
+datasource.db.password=TBD
+jpa.hibernate.ddl-auto=none
+jpa.show-sql=true
+
+policymgr.clientAuth=Basic TBD
+policymgr.basicAuth=Basic TBD
+policymgr.url=https://TBD/pdp/api/getConfig
+policymgr.environment=TEST
+policymgr.ecompRequestId=xx
+
+aai.certPassword=TBD
+aai.cert=opt/aai/keystore/TBD
+aai.uriBase=https://TBD/aai/v13/
+aai.fromAppId=namegen-mS
diff --git a/ms/neng/opt/etc/config/application-standalone.properties b/ms/neng/opt/etc/config/application-standalone.properties
new file mode 100644
index 00000000..07ad0ee2
--- /dev/null
+++ b/ms/neng/opt/etc/config/application-standalone.properties
@@ -0,0 +1,44 @@
+#============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=========================================================
+
+#=========================================================================
+#
+# Configuration used for running the application stand-alone, in a docker
+# container, without a DB.
+#
+# It uses an in-memory DB for supporting database related functions.
+#
+#=========================================================================
+datasource.db.driver-class-name=org.h2.Driver
+datasource.db.url=jdbc:h2:mem:tests;DB_CLOSE_DELAY=-1;
+datasource.db.username=${neng_db_user}
+datasource.db.password=${neng_db_pass}
+jpa.hibernate.ddl-auto=none
+jpa.show-sql=true
+
+policymgr.clientAuth=Basic TBD
+policymgr.basicAuth=Basic TBD
+policymgr.url=${policymgr_url}
+policymgr.environment=TEST
+policymgr.ecompRequestId=xx
+
+aai.certPassword=${aai_cert_pass}
+aai.cert=opt/aai/keystore/TBD
+aai.uriBase=${aai_uribase}
+aai.fromAppId=namegen-mS
+
diff --git a/ms/neng/opt/etc/config/application.properties b/ms/neng/opt/etc/config/application.properties
new file mode 100644
index 00000000..71d7a5f5
--- /dev/null
+++ b/ms/neng/opt/etc/config/application.properties
@@ -0,0 +1,47 @@
+#============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=========================================================
+
+#=========================================================================
+#
+# Main configuration for the application, used always.
+#
+# This can be overridden with entries in the 'application-xyz.properties' file
+# when using a specific spring profile 'xyz'.
+#
+#=========================================================================
+
+datasource.db.driver-class-name=com.mysql.jdbc.Driver
+
+endpoints.beans.id=springbeans
+endpoints.beans.sensitive=false
+
+logging.level.liquibase=DEBUG
+
+liquibase.changeLog=classpath:/db/changelog/db.changelog-master.xml
+
+management.security.enabled=false
+
+server.contextPath=/web
+
+#The max number of active threads in this pool
+server.tomcat.max-threads=200
+
+#The minimum number of threads always kept alive
+server.tomcat.min-spare-threads=25
+
+spring.jersey.type=filter
diff --git a/ms/neng/opt/etc/config/logback.xml b/ms/neng/opt/etc/config/logback.xml
new file mode 100644
index 00000000..6e0ea863
--- /dev/null
+++ b/ms/neng/opt/etc/config/logback.xml
@@ -0,0 +1,40 @@
+<?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=========================================================
+ -->
+
+<configuration scan="true" scanPeriod="3 seconds" debug="false">
+
+ <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
+
+ <property name="namespace" value="${kubernetes.namespace}"></property>
+
+ <property name="defaultPattern"
+ value="%d{yyyy-MM-dd HH:mm:ss.SSS} $ thread:%X{threadId} %-5level NS:o.o.c.a.m.neng %logger{20} [ host:%X{hostname} serv:%X{serviceName} ver:%X{version} tx:%X{transactionId} conv:%X{conversationId} reqTime:%X{requestTimestamp} respTime:%X{responseTimestamp} dur:%X{duration}] %m%n" />
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>${defaultPattern}</pattern>
+ </encoder>
+ </appender>
+ <root level="INFO">
+ <appender-ref ref="STDOUT" />
+ </root>
+</configuration>
diff --git a/ms/neng/opt/etc/config/system.properties b/ms/neng/opt/etc/config/system.properties
new file mode 100644
index 00000000..d8fa4d45
--- /dev/null
+++ b/ms/neng/opt/etc/config/system.properties
@@ -0,0 +1,35 @@
+#============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=========================================================
+
+#=========================================================================
+#
+# system configuration for the application.
+#
+#=========================================================================
+
+logging.config=opt/etc/config/logback.xml
+
+# Spring configuration files
+spring.config.location=opt/etc/config/
+spring.config.name=application
+
+appName=networkelementnamegen
+
+#Modify the below system property
+info.build.version=2018.10.01
+javax.net.ssl.trustStore=opt/etc/truststore/truststore.jks
diff --git a/ms/neng/pom.xml b/ms/neng/pom.xml
index a282f2cc..d3d4c05e 100644
--- a/ms/neng/pom.xml
+++ b/ms/neng/pom.xml
@@ -32,8 +32,8 @@
<icd.package>org.onap.ccsdk.apps.ms.neng.service.rs</icd.package>
<java.version>1.8</java.version>
<spring.version>4.3.8.RELEASE</spring.version>
- <springboot.version>1.5.3.RELEASE</springboot.version>
- <docker.registry>TBD:5100</docker.registry>
+ <springboot.version>1.5.6.RELEASE</springboot.version>
+ <docker.registry>nexus3.onap.org:10003</docker.registry>
<build.number>local</build.number>
<kube.namespace>TBD</kube.namespace>
<service.account>TBD</service.account>
@@ -52,6 +52,8 @@
<sonar.jacoco.itReportPath>${basedir}/target/jacoco-it.exec</sonar.jacoco.itReportPath>
<sonar.language>java</sonar.language>
<serviceArtifactName>ms-networkelementnamegen</serviceArtifactName>
+ <project.version>0.3.0</project.version>
+ <ccsdk.distribution.version>0.2.4</ccsdk.distribution.version>
</properties>
<profiles>
@@ -74,6 +76,39 @@
<skip.unit.tests>true</skip.unit.tests>
</properties>
</profile>
+
+ <profile>
+ <id>blackduck</id>
+ <activation>
+ <property>
+ <name>blackduck-scan</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.blackducksoftware.integration</groupId>
+ <artifactId>hub-maven-plugin</artifactId>
+ <version>1.4.0</version>
+ <inherited>false</inherited>
+ <configuration>
+ <hubProjectName>${project.name}</hubProjectName>
+ <outputDirectory>${project.basedir}</outputDirectory>
+ </configuration>
+ <executions>
+ <execution>
+ <id>create-bdio-file</id>
+ <phase>package</phase>
+ <goals>
+ <goal>createHubOutput</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
</profiles>
<developers>
@@ -189,12 +224,10 @@
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
- <version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
@@ -339,52 +372,68 @@
<groupId>org.codehaus.mojo</groupId>
</plugin>
<plugin>
- <groupId>com.spotify</groupId>
+ <groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
- <version>0.4.11</version>
+ <inherited>false</inherited>
<configuration>
- <imageName>${docker.registry}/org.onap.ccsdk.apps/${serviceArtifactName}</imageName>
- <dockerDirectory>src/main/docker</dockerDirectory>
- <serverId>docker-hub</serverId>
- <registryUrl>https://${docker.registry}</registryUrl>
- <imageTags>
- <imageTag>${project.version}</imageTag>
- <imageTag>latest</imageTag>
- </imageTags>
- <forceTags>true</forceTags>
- <resources>
- <resource>
- <targetPath>/</targetPath>
- <directory>${project.build.directory}</directory>
- <include>${project.build.finalName}.jar</include>
- </resource>
- <resource>
- <targetPath>/</targetPath>
- <directory>${project.build.directory}</directory>
- <include>opt/etc/config/*</include>
- </resource>
- <resource>
- <targetPath>/</targetPath>
- <directory>${project.build.directory}</directory>
- <include>opt/etc/keystore/*</include>
- </resource>
- <resource>
- <targetPath>/</targetPath>
- <directory>${project.build.directory}</directory>
- <include>opt/etc/truststore/*</include>
- </resource>
- <resource>
- <targetPath>/</targetPath>
- <directory>${project.build.directory}</directory>
- <include>opt/aai/keystore/*</include>
- </resource>
- <resource>
- <targetPath>/</targetPath>
- <directory>${project.build.directory}</directory>
- <include>etc/*</include>
- </resource>
- </resources>
+ <verbose>false</verbose>
+<!--
+ <authConfig>
+ <username></username>
+ <password></password>
+ </authConfig>
+-->
+ <images>
+ <image>
+ <name>onap/ccsdk-apps-ms-neng</name>
+ <build>
+ <cleanup>try</cleanup>
+ <dockerFileDir>${basedir}/src/main/docker</dockerFileDir>
+ <dockerFile>Dockerfile</dockerFile>
+ <tags>
+ <tag>${project.version}</tag>
+ </tags>
+ <assembly>
+ <targetDir>/</targetDir>
+ <inline>
+ <files>
+ <file>
+ <source>${project.build.directory}/${build.finalName}.${project.packaging}</source>
+ </file>
+ </files>
+ <fileSet>
+ <directory>${basedir}/opt/etc</directory>
+ <outputDirectory>opt/etc</outputDirectory>
+ <includes>
+ <include>**</include>
+ </includes>
+ </fileSet>
+ </inline>
+ </assembly>
+ </build>
+ </image>
+ </images>
</configuration>
+<!--
+ <executions>
+ <execution>
+ <id>generate-images</id>
+ <phase>package</phase>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+
+ <execution>
+ <id>push-images</id>
+ <phase>deploy</phase>
+ <goals>
+ <goal>build</goal>
+ <goal>push</goal>
+ </goals>
+ </execution>
+ </executions>
+-->
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
@@ -441,6 +490,62 @@
</includes>
</resource>
</resources>
+ <pluginManagement>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>
+ org.apache.maven.plugins
+ </groupId>
+ <artifactId>
+ maven-checkstyle-plugin
+ </artifactId>
+ <versionRange>
+ [2.17,)
+ </versionRange>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>
+ org.codehaus.mojo
+ </groupId>
+ <artifactId>
+ properties-maven-plugin
+ </artifactId>
+ <versionRange>
+ [1.0.0,)
+ </versionRange>
+ <goals>
+ <goal>
+ set-system-properties
+ </goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
</build>
</project>
diff --git a/ms/neng/src/main/docker/Dockerfile b/ms/neng/src/main/docker/Dockerfile
index db87c4c0..bcdaaef2 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 e690311c..2e3e454c 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 e95fb7eb..6efa94de 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 @@ package org.onap.ccsdk.apps.ms.neng.core;
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 @@ import org.springframework.scheduling.annotation.EnableAsync;
@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 d69c270c..f68add72 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 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
*/
@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 @@ public class ApplicationConfig {
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 24736b2f..79e46575 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 @@ public class SpringServiceImpl implements SpringService {
*/
@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 f8da1eee..8319a545 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.Api;
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 @@ public interface RestService {
* <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 ed5723b6..bc8cab42 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 @@ public class RestServiceImpl implements RestService {
* 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 @@ public class RestServiceImpl implements RestService {
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 d283b362..9cb434ff 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 @@ public class PolicyFinderServiceDbImpl extends PolicyFinderServiceImpl {
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
index 4b1d1eac..d05644b8 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.AaiNameValidator;
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
index fcee4da0..23bbc7c0 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 @@ import org.onap.ccsdk.apps.ms.neng.persistence.repository.ServiceParameterReposi
@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 a1873692..c3815f43 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.ArrayList;
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 @@ public class SpringServiceIntTest {
}
@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 ca8ac129..ae425c38 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 496a2e9d..2826e4d4 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 00000000..b98414f8
--- /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 00000000..108d0d48
--- /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 00000000..8685bcf8
--- /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 00000000..fb106eda
--- /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 00000000..5c7136b6
--- /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 00000000..baa5b703
--- /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 00000000..e85bc790
--- /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 00000000..2a6d16df
--- /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 00000000..79d5b414
--- /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
+