update old version 29/99629/3
authorherbert <herbert.eiselt@highstreet-technologies.com>
Fri, 13 Dec 2019 23:22:47 +0000 (00:22 +0100)
committerherbert <herbert.eiselt@highstreet-technologies.com>
Mon, 16 Dec 2019 09:35:58 +0000 (10:35 +0100)
of apigateway common data-provider helpserver websocketmanager2

Issue-ID: SDNC-1005
Signed-off-by: herbert <herbert.eiselt@highstreet-technologies.com>
Change-Id: I13990aa4329810bb7a7dd815e6149e9890617d07
Signed-off-by: herbert <herbert.eiselt@highstreet-technologies.com>
37 files changed:
sdnr/wt/apigateway/feature/pom.xml
sdnr/wt/apigateway/installer/pom.xml
sdnr/wt/apigateway/pom.xml
sdnr/wt/apigateway/provider/pom.xml
sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/MsServlet.java
sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/MyProperties.java
sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/database/DatabaseEntryProvider.java
sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/database/DatabaseHttpClient.java
sdnr/wt/apigateway/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/apigateway/database/http/BaseHTTPClient.java
sdnr/wt/apigateway/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/apigateway/test/TestDatabaseHttpClient.java
sdnr/wt/apigateway/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/apigateway/test/TestHttpClient.java
sdnr/wt/apigateway/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/apigateway/test/TestProperties.java
sdnr/wt/apigateway/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/apigateway/test/TestQueryCallback.java
sdnr/wt/common/pom.xml
sdnr/wt/common/src/test/java/org/onap/ccsdk/features/sdnr/wt/common/test/TestDbClient.java [new file with mode: 0644]
sdnr/wt/common/src/test/java/org/onap/ccsdk/features/sdnr/wt/common/test/TestDbRequests.java [new file with mode: 0644]
sdnr/wt/data-provider/database/pom.xml
sdnr/wt/data-provider/database/src/main/resources/es-init.sh
sdnr/wt/data-provider/database/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/test/TestDataMappings.java [new file with mode: 0644]
sdnr/wt/data-provider/database/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/test/TestYangGenSalMapping.java [new file with mode: 0644]
sdnr/wt/data-provider/provider/pom.xml
sdnr/wt/data-provider/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/test/TestCRUDforDatabase.java [new file with mode: 0644]
sdnr/wt/data-provider/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/test/TestInitalMaintenanceObjectInDatabase.java [new file with mode: 0644]
sdnr/wt/helpserver/feature/pom.xml
sdnr/wt/helpserver/installer/pom.xml
sdnr/wt/helpserver/pom.xml
sdnr/wt/helpserver/provider/pom.xml
sdnr/wt/helpserver/provider/src/main/resources/help/meta.json
sdnr/wt/pom.xml
sdnr/wt/websocketmanager2/feature/pom.xml
sdnr/wt/websocketmanager2/installer/pom.xml
sdnr/wt/websocketmanager2/model/pom.xml
sdnr/wt/websocketmanager2/pom.xml
sdnr/wt/websocketmanager2/provider/pom.xml
sdnr/wt/websocketmanager2/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/WebSocketManagerProvider.java
sdnr/wt/websocketmanager2/provider/src/main/resources/OSGI-INF/blueprint/impl-blueprint.xml [deleted file]
sdnr/wt/websocketmanager2/provider/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml

index 88ccad4..cb83b16 100644 (file)
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>single-feature-parent</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
-
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-apigateway-feature</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>feature</packaging>
-
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId} :: feature</name>
-
-    <dependencyManagement>
-        <dependencies>
-
-            <dependency>
-                <groupId>org.opendaylight.controller</groupId>
-                <artifactId>mdsal-artifacts</artifactId>
-                <version>${odl.controller.mdsal.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+  <artifactId>sdnr-wt-apigateway-feature</artifactId>
+  <version>0.7.0-SNAPSHOT</version>
+  <packaging>feature</packaging>
+  <name>ccsdk-features-sdnr-wt :: ${project.artifactId} :: feature</name>
+
+  <parent>
+    <groupId>org.onap.ccsdk.parent</groupId>
+    <artifactId>single-feature-parent</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
+
+  <dependencyManagement>
     <dependencies>
+      <dependency>
+        <groupId>org.opendaylight.controller</groupId>
+        <artifactId>mdsal-artifacts</artifactId>
+        <version>${odl.controller.mdsal.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>sdnr-wt-apigateway-provider</artifactId>
-            <version>${project.version}</version>
-        </dependency>
+  <dependencies>
 
-    </dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>sdnr-wt-apigateway-provider</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+  </dependencies>
 </project>
index cee4f7d..96888e2 100755 (executable)
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>odlparent-lite</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
+  <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+  <artifactId>sdnr-wt-apigateway-installer</artifactId>
+  <version>0.7.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
 
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-apigateway-installer</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
+  <parent>
+    <groupId>org.onap.ccsdk.parent</groupId>
+    <artifactId>odlparent-lite</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
 
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
+  <properties>
+    <application.name>sdnr-wt-apigateway</application.name>
+    <include.transitive.dependencies>false</include.transitive.dependencies>
+  </properties>
 
-    <properties>
-        <application.name>sdnr-wt-apigateway</application.name>
-        <include.transitive.dependencies>false</include.transitive.dependencies>
-    </properties>
+  <dependencies>
 
-    <dependencies>
+    <dependency>
+      <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+      <artifactId>${application.name}-feature</artifactId>
+      <version>${project.version}</version>
+      <type>xml</type>
+      <classifier>features</classifier>
+      <exclusions>
+        <exclusion>
+          <groupId>*</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+      <artifactId>${application.name}-provider</artifactId>
+      <version>${project.version}</version>
+    </dependency>
 
-        <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-            <artifactId>${application.name}-feature</artifactId>
-            <version>${project.version}</version>
-            <type>xml</type>
-            <classifier>features</classifier>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-            <artifactId>${application.name}-provider</artifactId>
-            <version>${project.version}</version>
-        </dependency>
 
-    </dependencies>
+  </dependencies>
 
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>maven-repo-zip</id>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <phase>package</phase>
-                        <configuration>
-                            <attach>true</attach>
-                            <finalName>stage/${application.name}-${project.version}</finalName>
-                            <descriptors>
-                                <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
-                            </descriptors>
-                            <appendAssemblyId>true</appendAssemblyId>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <executions>
-                    <!--           <execution> -->
-                    <!--             <id>copy-dependencies</id> -->
-                    <!--             <goals> -->
-                    <!--               <goal>copy-dependencies</goal> -->
-                    <!--             </goals> -->
-                    <!--             <phase>prepare-package</phase> -->
-                    <!--             <configuration> -->
-                    <!--               <transitive>true</transitive> -->
-                    <!--               <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> -->
-                    <!--               <overWriteReleases>false</overWriteReleases> -->
-                    <!--               <overWriteSnapshots>true</overWriteSnapshots> -->
-                    <!--               <overWriteIfNewer>true</overWriteIfNewer> -->
-                    <!--               <useRepositoryLayout>true</useRepositoryLayout> -->
-                    <!--               <addParentPoms>false</addParentPoms> -->
-                    <!--               <copyPom>false</copyPom> -->
-                    <!--               <includeArtifactIds>sdnr-wt-apigateway-provider,${application.name}</includeArtifactIds> -->
-                    <!--               <scope>provided</scope> -->
-                    <!--             </configuration> -->
-                    <!--           </execution> -->
-                    <execution>
-                        <id>copy-nested-dependencies</id>
-                        <goals>
-                            <goal>copy-dependencies</goal>
-                        </goals>
-                        <phase>prepare-package</phase>
-                        <configuration>
-                            <transitive>true</transitive>
-                            <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
-                            <overWriteReleases>false</overWriteReleases>
-                            <overWriteSnapshots>true</overWriteSnapshots>
-                            <overWriteIfNewer>true</overWriteIfNewer>
-                            <useRepositoryLayout>true</useRepositoryLayout>
-                            <addParentPoms>false</addParentPoms>
-                            <copyPom>false</copyPom>
-                            <!--<includeArtifactIds>sdnr-wt-apigateway-provider,${application.name}</includeArtifactIds>-->
-                            <!--<scope>provided</scope>-->
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>maven-repo-zip</id>
+            <goals>
+              <goal>single</goal>
+            </goals>
+            <phase>package</phase>
+            <configuration>
+              <attach>true</attach>
+              <finalName>stage/${application.name}-${project.version}</finalName>
+              <descriptors>
+                <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
+              </descriptors>
+              <appendAssemblyId>true</appendAssemblyId>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+<!--           <execution> -->
+<!--             <id>copy-dependencies</id> -->
+<!--             <goals> -->
+<!--               <goal>copy-dependencies</goal> -->
+<!--             </goals> -->
+<!--             <phase>prepare-package</phase> -->
+<!--             <configuration> -->
+<!--               <transitive>true</transitive> -->
+<!--               <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> -->
+<!--               <overWriteReleases>false</overWriteReleases> -->
+<!--               <overWriteSnapshots>true</overWriteSnapshots> -->
+<!--               <overWriteIfNewer>true</overWriteIfNewer> -->
+<!--               <useRepositoryLayout>true</useRepositoryLayout> -->
+<!--               <addParentPoms>false</addParentPoms> -->
+<!--               <copyPom>false</copyPom> -->
+<!--               <includeArtifactIds>sdnr-wt-apigateway-provider,${application.name}</includeArtifactIds> -->
+<!--               <scope>provided</scope> -->
+<!--             </configuration> -->
+<!--           </execution> -->
+          <execution>
+            <id>copy-nested-dependencies</id>
+            <goals>
+              <goal>copy-dependencies</goal>
+            </goals>
+            <phase>prepare-package</phase>
+            <configuration>
+              <transitive>true</transitive>
+              <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
+              <overWriteReleases>false</overWriteReleases>
+              <overWriteSnapshots>true</overWriteSnapshots>
+              <overWriteIfNewer>true</overWriteIfNewer>
+              <useRepositoryLayout>true</useRepositoryLayout>
+              <addParentPoms>false</addParentPoms>
+              <copyPom>false</copyPom>
+              <!--<includeArtifactIds>sdnr-wt-apigateway-provider,${application.name}</includeArtifactIds>-->
+              <!--<scope>provided</scope>-->
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
index 8efdbc0..8189a2c 100755 (executable)
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
+        <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+    <artifactId>sdnr-wt-apigateway-top</artifactId>
+    <version>0.7.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+    <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
+
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent-lite</artifactId>
         <relativePath/>
     </parent>
 
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-apigateway-top</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
-
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
-
     <modules>
         <module>feature</module>
         <module>provider</module>
index b4bbe1e..a989874 100644 (file)
     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========================================================= -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>binding-parent</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
     <artifactId>sdnr-wt-apigateway-provider</artifactId>
     <version>0.7.0-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-
     <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
-
+    <packaging>bundle</packaging>
     <properties>
         <checkstyle.skip>true</checkstyle.skip>
     </properties>
-
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>binding-parent</artifactId>
+        <version>1.5.1-SNAPSHOT</version>
+        <relativePath/>
+    </parent>
     <dependencies>
         <dependency>
             <groupId>javax.servlet</groupId>
@@ -52,7 +49,6 @@
         </dependency>
 
     </dependencies>
-
     <build>
         <plugins>
             <!-- fixed bug for sonarcube -->
index c0b6c99..aee7a3b 100644 (file)
@@ -38,14 +38,25 @@ public class MsServlet extends BaseServlet {
        private static Logger LOG = LoggerFactory.getLogger(MsServlet.class);
        private static final long serialVersionUID = -5361461082028405171L;
        private static final String OFFLINE_RESPONSE_MESSAGE = "MediatorServer interface is offline";
-       private static final String DATABASE_REQUEST_URI_REGEX = "/mwtn/mediator-server";
+       private static final String DATABASE_REQUEST_URI_REGEX = "/mediator-server/mediator-server";
        private final DatabaseEntryProvider entryProvider;
+       private boolean isSecure;
+       public void setIsSecure(boolean secure) {
+               if(this.isSecure!=secure) {
+                       this.isSecure=secure;
+                       this.entryProvider.setBaseUrl(this.getDBBaseUrl());
+               }
+       }
        public MsServlet() {
                super();
-               this.entryProvider = new DatabaseEntryProvider("http://localhost:9200/",60);
+               this.entryProvider = new DatabaseEntryProvider(this.getDBBaseUrl(),60);
                EsServlet.registerRequestCallback(DATABASE_REQUEST_URI_REGEX, this.dbRequestCallback);
        }
 
+       private String getDBBaseUrl() {
+               return MyProperties.getInstance().getEsBaseUrl();
+       }
+
        private final IRequestCallback dbRequestCallback = new IRequestCallback() {
                
                @Override
@@ -64,7 +75,11 @@ public class MsServlet extends BaseServlet {
        protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                resp.setStatus(200);
        }
-
+       @Override
+       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+               super.doGet(req, resp);
+               this.isSecure=req.getScheme().equals("https");
+       }
        @Override
        protected String getOfflineResponse() {
                return OFFLINE_RESPONSE_MESSAGE;
index 3d66f52..36fce20 100644 (file)
@@ -40,7 +40,7 @@ public class MyProperties {
        private static final String DEFAULT_AAI_HEADERS = "[\"X-FromAppId:SDNR\",\"Authorization:Basic QUFJOkFBSQ==\"]";
        private static final String DEFAULT_CORSENABLED = "0";
        private static final String DEFAULT_TRUSTINSECURE = "0";
-       private static final String DEFAULT_ESDATABASE = "http://localhost:9200";
+       private static final String DEFAULT_ESDATABASE = "http://sdnrdb:9200";
        private static final String DEFAULT_AAI = "off";
 
        @Override
index 086c3c9..b467e27 100644 (file)
@@ -102,5 +102,8 @@ public class DatabaseEntryProvider implements AutoCloseable {
                }
                return s;
        }
+       public void setBaseUrl(String baseUrl) {
+               this.httpClient.setBaseUrl(baseUrl);
+       }
 
 }
index af46509..d0f5753 100644 (file)
@@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory;
 public class DatabaseHttpClient extends BaseHTTPClient {
 
        private static Logger LOG = LoggerFactory.getLogger(DatabaseHttpClient.class);
-       private static final String URI = "/mwtn/mediator-server/_search";
+       private static final String URI = "/mediator-server/mediator-server/_search";
        private final Map<String, String> headers;
 
        public DatabaseHttpClient(String base, boolean trustAllCerts) {
@@ -44,7 +44,7 @@ public class DatabaseHttpClient extends BaseHTTPClient {
 
        private Map<String, String> getHeaders() {
                Map<String, String> h = new HashMap<String, String>();
-
+               h.put("Content-Type", "application/json");
                return h;
        }
 
@@ -80,4 +80,6 @@ public class DatabaseHttpClient extends BaseHTTPClient {
                }
                return entries;
        }
+
+       
 }
index f8f95b3..9c89eef 100644 (file)
@@ -40,154 +40,161 @@ import org.slf4j.LoggerFactory;
 
 public class BaseHTTPClient {
 
-    private static Logger LOG = LoggerFactory.getLogger(BaseHTTPClient.class);
-    private static final int BUFSIZE = 1024;
-    private static final Charset CHARSET = StandardCharsets.UTF_8;
-    private static final String SSLCONTEXT = "TLSv1.2";
-    private static final int DEFAULT_HTTP_TIMEOUT_MS = 30000; // in ms
-
-    private final boolean trustAll;
-    private final String baseUrl;
-
-    private int timeout = DEFAULT_HTTP_TIMEOUT_MS;
-    private SSLContext sc = null;
-
-    public BaseHTTPClient(String base) {
-        this(base, false);
-    }
-
-
-    public BaseHTTPClient(String base, boolean trustAllCerts) {
-        this.baseUrl = base;
-        this.trustAll = trustAllCerts;
-        try {
-            sc = setupSsl(trustAll);
-        } catch (KeyManagementException | NoSuchAlgorithmException e) {
-            LOG.warn("problem ssl setup: " + e.getMessage());
-        }
-    }
-
-    protected @Nonnull BaseHTTPResponse sendRequest(String uri, String method, String body, Map<String, String> headers)
-            throws IOException {
-        return this.sendRequest(uri, method, body != null ? body.getBytes(CHARSET) : null, headers);
-    }
-
-    protected @Nonnull BaseHTTPResponse sendRequest(String uri, String method, byte[] body, Map<String, String> headers)
-            throws IOException {
-        if (uri == null) {
-            uri = "";
-        }
-        String surl = this.baseUrl;
-        if (!surl.endsWith("/") && uri.length() > 0) {
-            surl += "/";
-        }
-        if (uri.startsWith("/")) {
-            uri = uri.substring(1);
-        }
-        surl += uri;
-        LOG.debug("try to send request with url=" + this.baseUrl + uri + " as method=" + method);
-        LOG.trace("body:" + (body == null ? "null" : new String(body, CHARSET)));
-        URL url = new URL(surl);
-        URLConnection http = url.openConnection();
-        http.setConnectTimeout(this.timeout);
-        if (surl.toString().startsWith("https")) {
-            if (sc != null) {
-                ((HttpsURLConnection) http).setSSLSocketFactory(sc.getSocketFactory());
-                if (trustAll) {
-                    LOG.debug("trusting all certs");
-                    HostnameVerifier allHostsValid = (hostname, session) -> true;
-                    ((HttpsURLConnection) http).setHostnameVerifier(allHostsValid);
-                }
-            } else // Should never happen
-            {
-                LOG.warn("No SSL context available");
-                return new BaseHTTPResponse(-1, "");
-            }
-        }
-        ((HttpURLConnection) http).setRequestMethod(method);
-        http.setDoOutput(true);
-        if (headers != null && headers.size() > 0) {
-            for (String key : headers.keySet()) {
-                http.setRequestProperty(key, headers.get(key));
-                LOG.trace("set http header " + key + ": " + headers.get(key));
-            }
-        }
-        byte[] buffer = new byte[BUFSIZE];
-        int len = 0, lensum = 0;
-        // send request
-        // Send the message to destination
-        if (!method.equals("GET") && body != null && body.length > 0) {
-            try (OutputStream output = http.getOutputStream()) {
-                output.write(body);
-            }
-        }
-        // Receive answer
-        int responseCode = ((HttpURLConnection) http).getResponseCode();
-        String sresponse = "";
-        InputStream response = null;
-        try {
-            if (responseCode >= 200 && responseCode < 300) {
-                response = http.getInputStream();
-            } else {
-                response = ((HttpURLConnection) http).getErrorStream();
-                if (response == null) {
-                    response = http.getInputStream();
-                }
-            }
-            if (response != null) {
-                while (true) {
-                    len = response.read(buffer, 0, BUFSIZE);
-                    if (len <= 0) {
-                        break;
-                    }
-                    lensum += len;
-                    sresponse += new String(buffer, 0, len, CHARSET);
-                }
-            } else {
-                LOG.debug("response is null");
-            }
-        } catch (Exception e) {
-            LOG.debug("No response. ", e);
-        } finally {
-            if (response != null) {
-                response.close();
-            }
-        }
-        LOG.debug("ResponseCode: " + responseCode);
-        LOG.trace("Response (len:{}): {}", String.valueOf(lensum), sresponse);
-        return new BaseHTTPResponse(responseCode, sresponse);
-    }
-
-  
-    public static SSLContext setupSsl(boolean trustall) throws KeyManagementException, NoSuchAlgorithmException{
-
-        SSLContext sc = SSLContext.getInstance(SSLCONTEXT);
-        TrustManager[] trustCerts = null;
-        if (trustall) {
-            trustCerts = new TrustManager[] {new javax.net.ssl.X509TrustManager() {
-                @Override
-                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
-                    return null;
-                }
-
-                @Override
-                public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
-
-                @Override
-                public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
-            }};
-
-        }
-        KeyManager[] kms = null;
-        // Init the SSLContext with a TrustManager[] and SecureRandom()
-        sc.init(kms, trustCerts, new java.security.SecureRandom());
-        return sc;
-    }
-
-    public static String getAuthorizationHeaderValue(String username, String password) {
-        return "Basic " + new String(Base64.getEncoder().encode((username + ":" + password).getBytes()));
-    }
-
-  
-  
+       private static Logger LOG = LoggerFactory.getLogger(BaseHTTPClient.class);
+       private static final int BUFSIZE = 1024;
+       private static final Charset CHARSET = StandardCharsets.UTF_8;
+       private static final String SSLCONTEXT = "TLSv1.2";
+       private static final int DEFAULT_HTTP_TIMEOUT_MS = 30000; // in ms
+
+       private final boolean trustAll;
+       private String baseUrl;
+
+       private int timeout = DEFAULT_HTTP_TIMEOUT_MS;
+       private SSLContext sc = null;
+
+       public BaseHTTPClient(String base) {
+               this(base, false);
+       }
+
+       public void setBaseUrl(String baseUrl) {
+               this.baseUrl = baseUrl;
+               try {
+                       sc = setupSsl(trustAll);
+               } catch (KeyManagementException | NoSuchAlgorithmException e) {
+                       LOG.warn("problem ssl setup: " + e.getMessage());
+               }
+       }
+
+       public BaseHTTPClient(String base, boolean trustAllCerts) {
+               this.baseUrl = base;
+               this.trustAll = trustAllCerts;
+               try {
+                       sc = setupSsl(trustAll);
+               } catch (KeyManagementException | NoSuchAlgorithmException e) {
+                       LOG.warn("problem ssl setup: " + e.getMessage());
+               }
+       }
+
+       protected @Nonnull BaseHTTPResponse sendRequest(String uri, String method, String body, Map<String, String> headers)
+                       throws IOException {
+               return this.sendRequest(uri, method, body != null ? body.getBytes(CHARSET) : null, headers);
+       }
+
+       protected @Nonnull BaseHTTPResponse sendRequest(String uri, String method, byte[] body, Map<String, String> headers)
+                       throws IOException {
+               if (uri == null) {
+                       uri = "";
+               }
+               String surl = this.baseUrl;
+               if (!surl.endsWith("/") && uri.length() > 0) {
+                       surl += "/";
+               }
+               if (uri.startsWith("/")) {
+                       uri = uri.substring(1);
+               }
+               surl += uri;
+               LOG.debug("try to send request with url=" + this.baseUrl + uri + " as method=" + method);
+               LOG.trace("body:" + (body == null ? "null" : new String(body, CHARSET)));
+               URL url = new URL(surl);
+               URLConnection http = url.openConnection();
+               http.setConnectTimeout(this.timeout);
+               if (surl.toString().startsWith("https")) {
+                       if (sc != null) {
+                               ((HttpsURLConnection) http).setSSLSocketFactory(sc.getSocketFactory());
+                               if (trustAll) {
+                                       LOG.debug("trusting all certs");
+                                       HostnameVerifier allHostsValid = (hostname, session) -> true;
+                                       ((HttpsURLConnection) http).setHostnameVerifier(allHostsValid);
+                               }
+                       } else // Should never happen
+                       {
+                               LOG.warn("No SSL context available");
+                               return new BaseHTTPResponse(-1, "");
+                       }
+               }
+               ((HttpURLConnection) http).setRequestMethod(method);
+               http.setDoOutput(true);
+               if (headers != null && headers.size() > 0) {
+                       for (String key : headers.keySet()) {
+                               http.setRequestProperty(key, headers.get(key));
+                               LOG.trace("set http header " + key + ": " + headers.get(key));
+                       }
+               }
+               byte[] buffer = new byte[BUFSIZE];
+               int len = 0, lensum = 0;
+               // send request
+               // Send the message to destination
+               if (!method.equals("GET") && body != null && body.length > 0) {
+                       try (OutputStream output = http.getOutputStream()) {
+                               output.write(body);
+                       }
+               }
+               // Receive answer
+               int responseCode = ((HttpURLConnection) http).getResponseCode();
+               String sresponse = "";
+               InputStream response = null;
+               try {
+                       if (responseCode >= 200 && responseCode < 300) {
+                               response = http.getInputStream();
+                       } else {
+                               response = ((HttpURLConnection) http).getErrorStream();
+                               if (response == null) {
+                                       response = http.getInputStream();
+                               }
+                       }
+                       if (response != null) {
+                               while (true) {
+                                       len = response.read(buffer, 0, BUFSIZE);
+                                       if (len <= 0) {
+                                               break;
+                                       }
+                                       lensum += len;
+                                       sresponse += new String(buffer, 0, len, CHARSET);
+                               }
+                       } else {
+                               LOG.debug("response is null");
+                       }
+               } catch (Exception e) {
+                       LOG.debug("No response. ", e);
+               } finally {
+                       if (response != null) {
+                               response.close();
+                       }
+               }
+               LOG.debug("ResponseCode: " + responseCode);
+               LOG.trace("Response (len:{}): {}", String.valueOf(lensum), sresponse);
+               return new BaseHTTPResponse(responseCode, sresponse);
+       }
+
+       public static SSLContext setupSsl(boolean trustall) throws KeyManagementException, NoSuchAlgorithmException {
+
+               SSLContext sc = SSLContext.getInstance(SSLCONTEXT);
+               TrustManager[] trustCerts = null;
+               if (trustall) {
+                       trustCerts = new TrustManager[] { new javax.net.ssl.X509TrustManager() {
+                               @Override
+                               public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+                                       return null;
+                               }
+
+                               @Override
+                               public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
+                               }
+
+                               @Override
+                               public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
+                               }
+                       } };
+
+               }
+               KeyManager[] kms = null;
+               // Init the SSLContext with a TrustManager[] and SecureRandom()
+               sc.init(kms, trustCerts, new java.security.SecureRandom());
+               return sc;
+       }
+
+       public static String getAuthorizationHeaderValue(String username, String password) {
+               return "Basic " + new String(Base64.getEncoder().encode((username + ":" + password).getBytes()));
+       }
+
 }
index 7952288..791e9ba 100644 (file)
@@ -1,3 +1,20 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
 package org.onap.ccsdk.features.sdnr.wt.apigateway.test;
 
 import static org.junit.Assert.*;
index 6e21bc1..18e8485 100644 (file)
@@ -1,3 +1,20 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
 package org.onap.ccsdk.features.sdnr.wt.apigateway.test;
 
 import static org.junit.Assert.fail;
index 1a63240..6efd06f 100644 (file)
@@ -27,6 +27,8 @@ import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 import org.onap.ccsdk.features.sdnr.wt.apigateway.MyProperties;
 
@@ -38,7 +40,7 @@ public class TestProperties {
        private static final boolean DEFAULT_TRUSTINSECURE = false;
        private static final String DEFAULT_AAIBASEURL = "off";
        private static Map<String, String> DEFAULT_AAIHEADERS = new HashMap<String, String>();
-       private static final String DEFAULT_ESBASEURL = "http://localhost:9200";
+       private static final String DEFAULT_ESBASEURL = "http://sdnrdb:9200";
 
        private static final boolean CUSTOM_CORSENABLED = true;
        private static final boolean CUSTOM_AAIOFF = false;
@@ -49,10 +51,18 @@ public class TestProperties {
        private static final String CUSTOM_ESBASEURL = "http://localhost:9200";
 
        private static final String LR = "\n";
-
+       final String tmpFilename = "tmp2.cfg";
+       
+       @Before
+       @After
+       public void init() {
+               File f = new File(tmpFilename);
+               if(f.exists()) {
+                       f.delete();
+               }
+       }
        @Test
        public void test() {
-               final String tmpFilename = "tmp2.cfg";
                DEFAULT_AAIHEADERS.put("X-FromAppId", "SDNR");
                DEFAULT_AAIHEADERS.put("Authorization", "Basic QUFJOkFBSQ==");
                CUSTOM_AAIHEADERS.put("X-FromAppId", "SDNC");
@@ -62,9 +72,6 @@ public class TestProperties {
                                + "\"]" + LR + "database=" + CUSTOM_ESBASEURL + LR + "insecure=" + (CUSTOM_TRUSTINSECURE ? "1" : "0")
                                + LR + "cors=" + (CUSTOM_CORSENABLED ? "1" : "0");
                File ftest = new File(tmpFilename);
-               // delete autogenerated testfile
-               if (ftest.exists())
-                       ftest.delete();
                MyProperties prop = null;
                ftest = new File(tmpFilename);
                try {
index 78341df..3340ec6 100644 (file)
@@ -1,3 +1,20 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
 package org.onap.ccsdk.features.sdnr.wt.apigateway.test;
 
 import static org.junit.Assert.*;
index 2254b78..dfefe18 100644 (file)
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>${basedir}/../data-provider/database/src/main/resources/es-init.sh</executable>
+                                                       <executable>bash</executable>
                             <arguments>
+                                                               <argument>${basedir}/../data-provider/database/src/main/resources/es-init.sh</argument>
                                 <argument>initfile</argument>
                                 <argument>-f</argument>
                                 <argument>${project.build.directory}/EsInit.script</argument>
                 <artifactId>elasticsearch-maven-plugin</artifactId>
                 <version>6.16</version>
                 <configuration>
-                    <skip>true</skip>
+                                       <skip>${skipTests}</skip>
                     <clusterName>testCluster</clusterName>
                     <transportPort>9500</transportPort>
                     <httpPort>${databaseport}</httpPort>
-                    <version>6.4.3</version>
+                    <version>6.5.0</version>
+                    <timeout>120</timeout>
                     <pathInitScript>${project.build.directory}/EsInit.script</pathInitScript>
                 </configuration>
                 <executions>
diff --git a/sdnr/wt/common/src/test/java/org/onap/ccsdk/features/sdnr/wt/common/test/TestDbClient.java b/sdnr/wt/common/src/test/java/org/onap/ccsdk/features/sdnr/wt/common/test/TestDbClient.java
new file mode 100644 (file)
index 0000000..0d46b4d
--- /dev/null
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.common.test;
+
+import static org.junit.Assert.*;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
+import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit;
+import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
+import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
+import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilders;
+
+public class TestDbClient {
+       
+       private static HtDatabaseClient dbClient;
+       private static HostInfo[] hosts = new HostInfo[] { new HostInfo("localhost", Integer
+                       .valueOf(System.getProperty("databaseport") != null ? System.getProperty("databaseport") : "49200")) };
+
+       @BeforeClass
+       public static void init() {
+
+               dbClient = new HtDatabaseClient(hosts);
+               dbClient.waitForYellowStatus(20000);
+
+       }
+       @Test
+       public void testCRUD() {
+               final String IDX = "test23-knmoinsd";
+               final String ID = "abcddd";
+               final String JSON = "{\"data\":{\"inner\":\"more\"}}";
+               final String JSON2 = "{\"data\":{\"inner\":\"more2\"}}";
+               //Create
+               String esId=dbClient.doWriteRaw(IDX, ID, JSON);
+               assertEquals("inserted id is wrong",ID,esId);
+               //Read
+               SearchResult<SearchHit> result = dbClient.doReadByQueryJsonData(IDX, QueryBuilders.matchQuery("_id", ID));
+               assertEquals("amount of results is wrong",1,result.getTotal());
+               assertEquals("data not valid", JSON,result.getHits().get(0).getSourceAsString());
+               //Update
+               esId= dbClient.doUpdateOrCreate(IDX, ID, JSON2);
+               assertEquals("update response not successfull",ID,esId);
+               //Verify
+               result = dbClient.doReadByQueryJsonData( IDX, QueryBuilders.matchQuery("_id", ID));
+               assertEquals("amount of results is wrong",1,result.getTotal());
+               assertEquals("data not valid", JSON2,result.getHits().get(0).getSourceAsString());
+               //Delete
+               boolean del=dbClient.doRemove(IDX, ID);
+               assertTrue("item not deleted",del);
+               //Verify
+               result = dbClient.doReadByQueryJsonData(IDX, QueryBuilders.matchQuery("_id", ID));
+               assertEquals("amount of results is wrong",0,result.getTotal());
+       }
+
+}
diff --git a/sdnr/wt/common/src/test/java/org/onap/ccsdk/features/sdnr/wt/common/test/TestDbRequests.java b/sdnr/wt/common/src/test/java/org/onap/ccsdk/features/sdnr/wt/common/test/TestDbRequests.java
new file mode 100644 (file)
index 0000000..36bbebe
--- /dev/null
@@ -0,0 +1,412 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.common.test;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
+import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
+import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilders;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.ClusterHealthRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.CreateIndexRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteByQueryRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteIndexRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.GetRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.IndexRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.NodeStatsRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.RefreshIndexRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.SearchRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.UpdateByQueryRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.UpdateRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.ClusterHealthResponse;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.CreateIndexResponse;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.DeleteByQueryResponse;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.DeleteIndexResponse;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.DeleteResponse;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.GetResponse;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.IndexResponse;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.NodeStatsResponse;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.SearchResponse;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.UpdateByQueryResponse;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.UpdateResponse;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class TestDbRequests {
+
+       private static HtDatabaseClient dbClient;
+       private static HostInfo[] hosts = new HostInfo[] { new HostInfo("localhost", Integer
+                       .valueOf(System.getProperty("databaseport") != null ? System.getProperty("databaseport") : "49200")) };
+
+       @BeforeClass
+       public static void init() {
+
+               dbClient = new HtDatabaseClient(hosts);
+
+       }
+       @AfterClass
+       public static void deinit() {
+               if(dbClient!=null) {
+                       dbClient.close();
+               }
+       }
+       @Test
+       public void testHealth() {
+
+               ClusterHealthResponse response = null;
+               ClusterHealthRequest request = new ClusterHealthRequest();
+               request.timeout(10);
+               try {
+                       response = dbClient.health(request);
+               } catch (UnsupportedOperationException | IOException | JSONException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull("response is null", response);
+               assertTrue(response.isStatusMinimal(ClusterHealthResponse.HEALTHSTATUS_YELLOW));
+       }
+
+       @Test
+       public void testCount() {
+
+       }
+
+       @Test
+       public void testCreateAndDeleteIndex() {
+               final String IDX = "testcidx1";
+               CreateIndexRequest request = new CreateIndexRequest(IDX);
+               CreateIndexResponse response = null;
+               try {
+                       response = dbClient.createIndex(request);
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull(response);
+
+               assertTrue("index not existing", dbClient.isExistsIndex(IDX));
+
+               DeleteIndexRequest request2 = new DeleteIndexRequest(IDX);
+
+               DeleteIndexResponse response2 = null;
+               try {
+                       response2 = dbClient.deleteIndex(request2);
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull(response2);
+               assertFalse("index still existing", dbClient.isExistsIndex(IDX));
+               this.deleteIndex(IDX);
+       }
+
+       @Test
+       public void testInsertAndDelete() {
+               final String IDX = "test23-knmoinsd";
+               final String ID = "abcddd";
+               final String JSON = "{\"data\":{\"inner\":\"more\"}}";
+               this.insert(IDX, ID, JSON);
+               // delete data
+               DeleteRequest request2 = new DeleteRequest(IDX, IDX, ID);
+               DeleteResponse response2 = null;
+               try {
+                       response2 = dbClient.delete(request2);
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull(response2);
+               assertTrue(response2.isDeleted());
+               try {
+                       dbClient.refreshIndex(new RefreshIndexRequest(IDX));
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               // verify data deleted
+               GetRequest request4 = new GetRequest(IDX, IDX, ID);
+               GetResponse response4 = null;
+               try {
+                       response4 = dbClient.get(request4);
+               } catch (IOException e1) {
+                       fail(e1.getMessage());
+               }
+               assertNotNull(response4);
+               assertFalse("data still existing", response4.isExists());
+               this.deleteIndex(IDX);
+       }
+
+       @Test
+       public void testInsertAndDeleteByQuery() {
+               final String IDX = "test34-knmoinsd";
+               final String ID = "abcdddseae";
+               final String JSON = "{\"data\":{\"inner\":\"more\"}}";
+               this.insert(IDX, ID, JSON);
+
+               // delete data
+               DeleteByQueryRequest request2 = new DeleteByQueryRequest(IDX);
+               request2.source(QueryBuilders.matchQuery("_id", ID));
+               DeleteByQueryResponse response2 = null;
+               try {
+                       response2 = dbClient.deleteByQuery(request2);
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull(response2);
+               assertTrue(response2.isResponseSucceeded());
+               try {
+                       dbClient.refreshIndex(new RefreshIndexRequest(IDX));
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               // verify data deleted
+               GetRequest request4 = new GetRequest(IDX, IDX, ID);
+               GetResponse response4 = null;
+               try {
+                       response4 = dbClient.get(request4);
+               } catch (IOException e1) {
+                       fail(e1.getMessage());
+               }
+               assertNotNull(response4);
+               assertFalse("data still existing", response4.isExists());
+               this.deleteIndex(IDX);
+       }
+
+       private void insert(String IDX, String ID, String JSON) {
+
+               // create data
+               IndexRequest request = new IndexRequest(IDX, IDX, ID);
+               request.source(JSON);
+               IndexResponse response = null;
+               try {
+                       response = dbClient.index(request);
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull(response);
+               if (ID != null) {
+                       assertEquals("id not correct", ID, response.getId());
+               } else {
+                       ID = response.getId();
+               }
+               // do db refresh
+               try {
+                       dbClient.refreshIndex(new RefreshIndexRequest(IDX));
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               // verify data exists
+               GetRequest request3 = new GetRequest(IDX, IDX, ID);
+               GetResponse response3 = null;
+               try {
+                       response3 = dbClient.get(request3);
+               } catch (IOException e1) {
+                       fail(e1.getMessage());
+               }
+               assertNotNull(response3);
+               JSONAssert.assertEquals("could not verify update", JSON, response3.getSourceAsBytesRef(), true);
+       }
+
+       @Test
+       public void testSearch() {
+               final String IDX = "test44-moinsd";
+               final String ID = "abe";
+               final String JSON = "{\"data\":{\"inner\":\"more\"}}";
+               final String ID2 = "abe2";
+               final String JSON2 = "{\"data\":{\"inner\":\"more2\"}}";
+               final String ID3 = "abe3";
+               final String JSON3 = "{\"data\":{\"inner\":\"more3\"}}";
+               this.insert(IDX, ID, JSON);
+               this.insert(IDX, ID2, JSON2);
+               this.insert(IDX, ID3, JSON3);
+               SearchRequest request = new SearchRequest(IDX, IDX);
+               request.setQuery(QueryBuilders.matchAllQuery());
+               SearchResponse response = null;
+               try {
+                       response = dbClient.search(request);
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull(response);
+               assertEquals("not all items found", 3, response.getHits().length);
+               assertEquals("incorrect index",IDX,response.getHits()[0].getIndex());
+               assertEquals("incorrect type",IDX,response.getHits()[0].getType());
+               this.deleteIndex(IDX);
+       }
+
+       @Test
+       public void testUpdate() {
+               final String IDX = "test4534-moinsd";
+               final String ID = "assbe";
+               final String JSON = "{\"data\":{\"inner\":\"more\"}}";
+               final String JSON2 = "{\"data\":{\"inner\":\"more2\"},\"data2\":\"value2\",\"data3\":true}";
+
+               this.insert(IDX, ID, JSON);
+               UpdateRequest request = new UpdateRequest(IDX, IDX, ID);
+               UpdateResponse response = null;
+               try {
+                       request.source(new JSONObject(JSON2));
+                       response = dbClient.update(request);
+               } catch (JSONException | IOException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull(response);
+               assertTrue(response.succeeded());
+               // refresh index
+               try {
+                       dbClient.refreshIndex(new RefreshIndexRequest(IDX));
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               // verify update
+               GetRequest request3 = new GetRequest(IDX, IDX, ID);
+               GetResponse response3 = null;
+               try {
+                       response3 = dbClient.get(request3);
+               } catch (IOException e1) {
+                       fail(e1.getMessage());
+               }
+               assertNotNull(response3);
+               JSONAssert.assertEquals("could not verify update", JSON2, response3.getSourceAsBytesRef(), true);
+               this.deleteIndex(IDX);
+       }
+
+       @Test
+       public void testUpdateByQuery() {
+               final String IDX = "test224534-moinsd";
+               final String ID = "asssabe";
+               final String JSON = "{\"data\":{\"inner\":\"more\"}}";
+               final String JSON2 = "{\"data\":{\"inner\":\"more2\"},\"data2\":\"value2\",\"data3\":true}";
+
+               this.insert(IDX, ID, JSON);
+               UpdateByQueryRequest request = new UpdateByQueryRequest(IDX, IDX);
+               UpdateByQueryResponse response = null;
+               try {
+                       request.source(ID, new JSONObject(JSON2));
+                       response = dbClient.update(request);
+               } catch (JSONException | IOException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull(response);
+               assertTrue(response.isUpdated());
+               // refresh index
+               try {
+                       dbClient.refreshIndex(new RefreshIndexRequest(IDX));
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               // verify update
+               GetRequest request3 = new GetRequest(IDX, IDX, ID);
+               GetResponse response3 = null;
+               try {
+                       response3 = dbClient.get(request3);
+               } catch (IOException e1) {
+                       fail(e1.getMessage());
+               }
+               assertNotNull(response3);
+               JSONAssert.assertEquals("could not verify update", JSON2, response3.getSourceAsBytesRef(), true);
+               this.deleteIndex(IDX);
+       }
+
+       @Test
+       public void testAggregations() {
+               final String IDX = "test3227533677-moisnsd";
+               final String JSON = "{ \"node-id\":\"sim1\",\"severity\":\"critical\"}";
+               final String JSON2 = "{ \"node-id\":\"sim2\",\"severity\":\"critical\"}";
+               final String JSON3 = "{ \"node-id\":\"sim3\",\"severity\":\"minor\"}";
+               final String JSON4 = "{ \"node-id\":\"sim4\",\"severity\":\"warning\"}";
+               final String JSON5 = "{ \"node-id\":\"sim5\",\"severity\":\"major\"}";
+               final String MAPPINGS = "{\""+IDX+"\":{\"properties\":{\"node-id\": {\"type\": \"keyword\"},\"severity\": {\"type\": \"keyword\"}}}}";
+               //create index with mapping keyword
+               CreateIndexRequest irequest = new CreateIndexRequest(IDX);
+               irequest.mappings(new JSONObject(MAPPINGS));
+               CreateIndexResponse iresponse = null;
+               try {
+                       iresponse = dbClient.createIndex(irequest);
+               } catch (IOException e1) {
+                       fail("unable to create index: "+e1.getMessage());
+               }
+               assertNotNull(iresponse);
+               assertTrue(iresponse.isAcknowledged());
+               // fill index
+               this.insert(IDX, null, JSON);
+               this.insert(IDX, null, JSON2);
+               this.insert(IDX, null, JSON3);
+               this.insert(IDX, null, JSON4);
+               this.insert(IDX, null, JSON5);
+               // refresh index
+               try {
+                       dbClient.refreshIndex(new RefreshIndexRequest(IDX));
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+
+               SearchRequest request = new SearchRequest(IDX, IDX);
+               request.setQuery(QueryBuilders.matchAllQuery().aggregations("severity").size(0));
+               SearchResponse response = null;
+               try {
+                       response = dbClient.search(request);
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull(response);
+               assertTrue(response.hasAggregations());
+               assertEquals("aggregation size not correct", 4, response.getAggregations("severity").size());
+
+               List<String> items1 = Arrays.asList(response.getAggregations("severity").getKeysAsPagedStringList(2, 0));
+               List<String> items2 = Arrays.asList(response.getAggregations("severity").getKeysAsPagedStringList(2, 2));
+               assertEquals("pagination does not work", 2,items1.size());
+               assertEquals("pagination does not work", 2,items2.size());
+               for(String s:items1) {
+                       assertFalse("pagination overlap is not allowed",items2.contains(s));
+               }
+               for(String s:items2) {
+                       assertFalse("pagination overlap is not allowed",items1.contains(s));
+               }
+
+               this.deleteIndex(IDX);
+       }
+       
+       @Test
+       public void testStatistics() {
+               NodeStatsResponse stats=null;
+               try {
+                       stats = dbClient.stats(new NodeStatsRequest());
+               } catch (IOException e) {
+                       fail(e.getMessage());
+               }
+               assertNotNull(stats);
+               System.out.println(stats.getNodesInfo());
+               System.out.println(stats.getNodeStatistics());
+       }
+       private void deleteIndex(String idx) {
+               try {
+                       dbClient.deleteIndex( new DeleteIndexRequest(idx));
+               } catch (IOException e) {
+
+               }
+       }
+
+}
index 444cd59..ce4b291 100644 (file)
                                <artifactId>elasticsearch-maven-plugin</artifactId>
                                <version>6.16</version>
                                <configuration>
-                                       <skip>true</skip>
+                                       <skip>${skipTests}</skip>
                                        <clusterName>testCluster</clusterName>
                                        <transportPort>9500</transportPort>
                                        <httpPort>${databaseport}</httpPort>
index 0b122c0..68e6e84 100755 (executable)
@@ -270,6 +270,8 @@ cmd_initfile() {
     echo "Create script initfile: $INITFILENAME"
     if [ -f "$INITFILENAME" ] ; then
         rm $INITFILENAME
+    else
+      mkdir -p $( dirname $INITFILENAME )
     fi
     for i in "${!ALIAS[@]}"; do
           create_index_alias "${ALIAS[$i]}" "${MAPPING[$i]}" file
diff --git a/sdnr/wt/data-provider/database/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/test/TestDataMappings.java b/sdnr/wt/data-provider/database/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/test/TestDataMappings.java
new file mode 100644 (file)
index 0000000..1dc02b9
--- /dev/null
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.test;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.common.database.DatabaseClient;
+import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
+import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit;
+import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
+import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
+import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
+import org.onap.ccsdk.features.sdnr.wt.common.database.responses.SearchResponse;
+import org.onap.ccsdk.features.sdnr.wt.database.EsDataObjectReaderWriter;
+import org.onap.ccsdk.features.sdnr.wt.yangtools.YangToolsMapper;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+
+public class TestDataMappings {
+
+       private static final HostInfo[] HOSTINFOS = new HostInfo[] {HostInfo.getDefault()};
+       //public static final String ESDATATYPENAME = "faultcurrent";
+
+       private static class HtDatabaseClientHelper extends HtDatabaseClient {
+
+               private final String json;
+
+               public HtDatabaseClientHelper(String jsonResponse, HostInfo[] hosts) {
+                       super(hosts);
+                       this.json = jsonResponse;
+
+               }
+
+               @Override
+               public SearchResult<SearchHit> doReadByQueryJsonData(String dataTypeName, QueryBuilder qb) {
+                       return new SearchResult<SearchHit>(new SearchResponse(this.json).getHits());
+               }
+       }
+
+       private static class MapResult<T extends DataObject> {
+               public final List<T> mappedData;
+               public MapResult(String dataType, Class<T> cls, String dbJson) throws ClassNotFoundException {
+                       System.out.println(dbJson);
+                       DatabaseClient db = new HtDatabaseClientHelper(dbJson,HOSTINFOS);
+                       EsDataObjectReaderWriter<T> dbrw=new EsDataObjectReaderWriter<T>(db,dataType,cls);
+                       this.mappedData=dbrw.doReadAll().getHits();
+               }
+       }
+
+       private static final String SEARCHJSON_FORMAT = "{\n" +
+                       "\"took\": 0,\n" +
+                       "\"timed_out\": false,\n" +
+                       "\"_shards\": {\n" +
+                       "\"total\": 5,\n" +
+                       "\"successful\": 5,\n" +
+                       "\"skipped\": 0,\n" +
+                       "\"failed\": 0\n" +
+                       "},\n" +
+                       "\"hits\": {\n" +
+                       "\"total\": 1,\n" +
+                       "\"max_score\": 1,\n" +
+                       "\"hits\": [\n" +
+                       "{\n" +
+                       "\"_index\": \"%s\",\n" +
+                       "\"_type\": \"%s\",\n" +
+                       "\"_id\": \"%s\",\n" +
+                       "\"_score\": 1,\n" +
+                       "\"_source\": %s}\n" +
+                       "]\n" +
+                       "}\n" +
+                       "}";
+
+       private static final String MEDIATORSERVER_DB_ID="LumwSG0BFvcE3yf8MBM5";
+       private static final String MEDIATOR_SERVERDB_JSON = "{\"url\":\"https://10.45.44.223:7590\",\"name\":\"test mediator server\"}";
+
+       private static final String FAULTCURRENT_DB_ID="LumwSG0BFvcE3yf8MBM5";
+       private static final String FAULTCURRENT_DB_NODEID = "sim1";
+       private static final int FAULTCURRENT_DB_COUNTER = 3;
+       private static final String FAULTCURRENT_DB_OBJECTID = "LPS-MWT-01";
+       private static final String FAULTCURRENT_DB_PROBLEM = "rlsExceeded";
+       private static final String FAULTCURRENT_DB_SEVERITY = "critical";
+       private static final DateAndTime FAULTCURRENT_DB_TIMESTAMP = DateAndTime.getDefaultInstance("2019-09-18T13:07:05.8Z");
+
+       private static final String FAULTCURRENT_SERVERDB_JSON = "{\"node-id\":\""+FAULTCURRENT_DB_NODEID+"\","+
+                       "\"counter\":"+FAULTCURRENT_DB_COUNTER+","+
+                       "\"object-id\":\""+FAULTCURRENT_DB_OBJECTID+"\","+
+                       "\"problem\":\""+FAULTCURRENT_DB_PROBLEM+"\","+
+                       "\"timestamp\":\""+FAULTCURRENT_DB_TIMESTAMP.getValue()+"\","+
+                       "\"severity\":\""+FAULTCURRENT_DB_SEVERITY+"\""+
+       "}";
+
+
+       private static final String PMDATA15M_SERVERDB_JSON="{\n" +
+                       "\"node-name\": \"sim2\",\n" +
+                       "\"uuid-interface\": \"LP-MWPS-TTP-01\",\n" +
+                       "\"layer-protocol-name\": \"MWPS\",\n" +
+                       "\"radio-signal-id\": \"Test11\",\n" +
+                       "\"time-stamp\": \"2017-07-04T14:00:00.0Z\",\n" +
+                       "\"granularity-period\": \"PERIOD_15MIN\",\n" +
+                       "\"scanner-id\": \"PM_RADIO_15M_9\",\n" +
+                       "\"performance-data\": {\n" +
+                       "\"es\": 0,\n" +
+                       "\"rx-level-avg\": -41,\n" +
+                       "\"time2-states\": -1,\n" +
+                       "\"time4-states-s\": 0,\n" +
+                       "\"time4-states\": 0,\n" +
+                       "\"time8-states\": 0,\n" +
+                       "\"time16-states-s\": -1,\n" +
+                       "\"time16-states\": 0,\n" +
+                       "\"time32-states\": 0,\n" +
+                       "\"time64-states\": 0,\n" +
+                       "\"time128-states\": 0,\n" +
+                       "\"time256-states\": 900,\n" +
+                       "\"time512-states\": -1,\n" +
+                       "\"time512-states-l\": -1,\n" +
+                       "\"time1024-states\": -1,\n" +
+                       "\"time1024-states-l\": -1,\n" +
+                       "\"time2048-states\": -1,\n" +
+                       "\"time2048-states-l\": -1,\n" +
+                       "\"time4096-states\": -1,\n" +
+                       "\"time4096-states-l\": -1,\n" +
+                       "\"time8192-states\": -1,\n" +
+                       "\"time8192-states-l\": -1,\n" +
+                       "\"snir-min\": -99,\n" +
+                       "\"snir-max\": -99,\n" +
+                       "\"snir-avg\": -99,\n" +
+                       "\"xpd-min\": -99,\n" +
+                       "\"xpd-max\": -99,\n" +
+                       "\"xpd-avg\": -99,\n" +
+                       "\"rf-temp-min\": -99,\n" +
+                       "\"rf-temp-max\": -99,\n" +
+                       "\"rf-temp-avg\": -99,\n" +
+                       "\"defect-blocks-sum\": -1,\n" +
+                       "\"time-period\": 900,\n" +
+                       "\"tx-level-min\": 25,\n" +
+                       "\"tx-level-max\": 25,\n" +
+                       "\"tx-level-avg\": 25,\n" +
+                       "\"rx-level-min\": -41,\n" +
+                       "\"rx-level-max\": -41,\n" +
+                       "\"unavailability\": 0,\n" +
+                       "\"ses\": 0,\n" +
+                       "\"cses\": 0\n" +
+                       "},\n" +
+                       "\"suspect-interval-flag\": false\n" +
+                       "}";
+
+       //@Test
+//     public void testMediatorServer() throws ClassNotFoundException {
+//
+//             MapResult<EsMediatorServer> result = new MapResult<EsMediatorServer>(EsMediatorServer.ESDATATYPENAME,
+//                             EsMediatorServer.class,
+//                             getSearchJson(EsMediatorServer.ESDATATYPENAME,MEDIATORSERVER_DB_ID,MEDIATOR_SERVERDB_JSON));
+//             assertEquals("test mediator server", result.mappedData.get(0).getName());
+//             assertEquals("https://10.45.44.223:7590", result.mappedData.get(0).getUrl());
+//             assertEquals(MEDIATORSERVER_DB_ID, result.mappedData.get(0).getId());
+//
+//     }
+       //@Test
+//     public void testFaultCurrent() {
+//
+//             MapResult<FaultcurrentEntity> result = new MapResult<FaultcurrentEntity>(ESDATATYPENAME, EsFaultCurrent.class,
+//                             getSearchJson(ESDATATYPENAME, FAULTCURRENT_DB_ID, FAULTCURRENT_SERVERDB_JSON));
+//             assertEquals(FAULTCURRENT_DB_ID, result.mappedData.get(0).getId());
+//             assertEquals(FAULTCURRENT_DB_NODEID, result.mappedData.get(0).getNodeId());
+//             assertEquals(FAULTCURRENT_DB_COUNTER, result.mappedData.get(0).getCounter().intValue());
+//             assertEquals(FAULTCURRENT_DB_OBJECTID, result.mappedData.get(0).getObjectId());
+//             assertEquals(FAULTCURRENT_DB_PROBLEM, result.mappedData.get(0).getProblem());
+//             assertEquals(FAULTCURRENT_DB_SEVERITY, result.mappedData.get(0).getSeverity());
+//             assertEquals(FAULTCURRENT_DB_TIMESTAMP, result.mappedData.get(0).getTimestamp());
+//     }
+//
+       @Test
+       public void testPmData15m() {
+
+               YangToolsMapper mapper = new YangToolsMapper();
+               try {
+                       Data data =mapper.readValue(PMDATA15M_SERVERDB_JSON.getBytes(), Data.class);
+                       System.out.println(data);
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }
+
+
+       }
+       private String getSearchJson(String dataType,String dbId, String source) {
+               return String.format(SEARCHJSON_FORMAT,dataType,dataType, dbId,source);
+       }
+
+}
diff --git a/sdnr/wt/data-provider/database/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/test/TestYangGenSalMapping.java b/sdnr/wt/data-provider/database/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/test/TestYangGenSalMapping.java
new file mode 100644 (file)
index 0000000..6660614
--- /dev/null
@@ -0,0 +1,408 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.test;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.json.JSONObject;
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.common.database.DatabaseClient;
+import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
+import org.onap.ccsdk.features.sdnr.wt.common.database.InvalidProtocolException;
+import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
+import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
+import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo.Protocol;
+import org.onap.ccsdk.features.sdnr.wt.common.database.queries.BoolQueryBuilder;
+import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
+import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilders;
+import org.onap.ccsdk.features.sdnr.wt.database.EsDataObjectReaderWriter;
+import org.onap.ccsdk.features.sdnr.wt.yangtools.YangToolsMapper;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.parameters.OdlHelloMessageCapabilitiesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPasswordBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMediatorServerInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Entity;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.EntityInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.SortOrder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.Filter;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.PaginationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.Sortorder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.pmdata15m.entity.PerformanceDataBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.DataBuilder;
+import org.opendaylight.yangtools.concepts.Builder;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+
+public class TestYangGenSalMapping {
+
+       // Create mapper for serialization and deserialization
+       YangToolsMapper mapper = new YangToolsMapper();
+
+       @Test
+       public void test1() throws IOException {
+
+               // Create test object
+               NetconfNodeBuilder netconfNodeBuilder = new NetconfNodeBuilder();
+               netconfNodeBuilder.setConnectedMessage("ConnMessage");
+
+               LoginPasswordBuilder loginPasswordBuilder = new LoginPasswordBuilder();
+               loginPasswordBuilder.setUsername("myTestUsername");
+               loginPasswordBuilder.setPassword("myTestPassword");
+               netconfNodeBuilder.setCredentials(loginPasswordBuilder.build());
+
+               OdlHelloMessageCapabilitiesBuilder odlHelloMessageCapabilitiesBuilder = new OdlHelloMessageCapabilitiesBuilder();
+               List<Uri> uriList = new ArrayList<>();
+               uriList.add( new Uri("test.uri") );
+               odlHelloMessageCapabilitiesBuilder.setCapability(uriList);
+               netconfNodeBuilder.setOdlHelloMessageCapabilities(odlHelloMessageCapabilitiesBuilder.build());
+
+               NetconfNode netconfNode = netconfNodeBuilder.build();
+               out(netconfNode.toString());
+
+               // Map Object to JSON String
+           String res = mapper.writeValueAsString(netconfNode);
+           JSONObject json = new JSONObject(res); // Convert text to object
+               out(json.toString(4)); // Print it with specified indentation
+
+               // Map to JSON String to Object
+               NetconfNode generatedNode = mapper.readValue(res.getBytes(), NetconfNode.class);
+               out(generatedNode.toString()); // Print it with specified indentation
+               // Compare result
+               out("Equal?  "+(netconfNode.equals(generatedNode)));
+       }
+
+       static class TestDataObjectBuilder implements Builder<TestDataObject> {
+               @Override
+               public @NonNull TestDataObject build() throws IllegalArgumentException {
+                       return new TestDataObject();
+               }
+       }
+
+       static class TestDataObject implements DataObject {
+               String test;
+
+               @Override
+               public Class<? extends DataContainer> getImplementedInterface() {
+                       return null;
+               }
+       }
+
+       @Test
+       public void test2() throws InvalidProtocolException, ClassNotFoundException     {
+
+
+               int databasePort = Integer.valueOf(System.getProperty("databaseport"));
+               System.out.println("DB Port: "+databasePort);
+
+               HostInfo[] HOSTINFOS = new HostInfo[] { new HostInfo("localhost", databasePort )};
+               DatabaseClient db = new HtDatabaseClient(HOSTINFOS);
+
+               EsDataObjectReaderWriter<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data> dataRW =
+                 new EsDataObjectReaderWriter<>(db, "inventorytest", org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data.class);
+
+               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data d1;
+               d1 = getInventoryDataBuilder("MyDescription", 23L).build();
+               String id = dataRW.write(d1,null);
+
+               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data d2;
+               d2 = dataRW.read(id);
+
+               out(d2.toString());
+
+       }
+
+       @Test
+       public void test3() throws IOException  {
+
+               PerformanceDataBuilder performanceBuilder = new PerformanceDataBuilder();
+               performanceBuilder.setEs(99);
+               DataBuilder pmData15MinutesBuilder = new DataBuilder();
+               pmData15MinutesBuilder.setLayerProtocolName("fdsaf");
+               pmData15MinutesBuilder.setTimeStamp(new DateAndTime("2017-03-01T09:15:00.0Z"));
+               pmData15MinutesBuilder.setPerformanceData(performanceBuilder.build());
+
+               // Map Object to JSON String
+           String res = mapper.writeValueAsString(pmData15MinutesBuilder.build());
+           JSONObject json = new JSONObject(res); // Convert text to object
+               out(json.toString(4)); // Print it with specified indentation
+
+               // Map to JSON String to Object
+               Data generatedNode = mapper.readValue(res.getBytes(), Data.class);
+               out(generatedNode.toString()); // Print it with specified indentation
+       }
+
+       @Test
+       public void test4() throws IOException {
+
+               String jsonString = "{\n" + "\"node-name\": \"Sim2230\",\n" + "\"uuid-interface\": \"LP-MWPS-TTP-RADIO\",\n"
+                               + "\"layer-protocol-name\": \"MWPS\",\n" + "\"radio-signal-id\": \"Test8\",\n"
+                               + "\"time-stamp\": \"2017-03-01T09:15:00.0Z\",\n" + "\"granularity-period\": \"PERIOD_15MIN\",\n"
+                               + "\"scanner-id\": \"PM_RADIO_15M_4\",\n" + "\"performance-data\": {\n" + "\"unavailability\": 0,\n"
+                               + "\"tx-level-max\": 3,\n" + "\"tx-level-avg\": 3,\n" + "\"rx-level-min\": -44,\n"
+                               + "\"rx-level-max\": -45,\n" + "\"rx-level-avg\": -44,\n" + "\"time2-states\": 0,\n"
+                               + "\"time4-states-s\": 0,\n" + "\"time4-states\": 0,\n" + "\"time8-states\": -1,\n"
+                               + "\"time16-states-s\": -1,\n" + "\"time16-states\": 0,\n" + "\"time32-states\": -1,\n"
+                               + "\"time64-states\": 900,\n" + "\"time128-states\": -1,\n" + "\"time256-states\": -1,\n"
+                               + "\"time512-states\": -1,\n" + "\"time512-states-l\": -1,\n" + "\"time1024-states\": -1,\n"
+                               + "\"time1024-states-l\": -1,\n" + "\"time8192-states-l\": -1,\n" + "\"time8192-states\": -1,\n"
+                               + "\"time2048-states\": -1,\n" + "\"snir-min\": -99,\n" + "\"snir-max\": -99,\n"
+                               + "\"snir-avg\": -99,\n" + "\"xpd-min\": -99,\n" + "\"xpd-max\": -99,\n" + "\"xpd-avg\": -99,\n"
+                               + "\"rf-temp-min\": -99,\n" + "\"rf-temp-max\": -99,\n" + "\"rf-temp-avg\": -99,\n"
+                               + "\"defect-blocks-sum\": -1,\n" + "\"time-period\": 900,\n" + "\"cses\": 0,\n"
+                               + "\"time4096-states-l\": -1,\n" + "\"tx-level-min\": 3,\n" + "\"es\": 0,\n"
+                               + "\"time2048-states-l\": -1,\n" + "\"time4096-states\": -1,\n" + "\"ses\": 0\n" + "},\n"
+                               + "\"suspect-interval-flag\": false\n" + "}\n" + "}";
+               // Map to JSON String to Object
+               Data generatedNode = mapper.readValue(jsonString.getBytes(), Data.class);
+               out(generatedNode.toString()); // Print it with specified indentation
+
+       }
+
+
+       @Test
+       public void test5() throws IOException {
+               String jsonString = "{\n" +
+                               "    \"time-stamp\": \"2017-03-01T06:45:00.0Z\",\n" +
+                               "    \"node-name\": \"Sim2230\",\n" +
+                               "    \"uuid-interface\": \"LP-MWPS-TTP-RADIO\",\n" +
+                               "    \"scanner-id\": \"PM_RADIO_15M_14\",\n" +
+                               "    \"layer-protocol-name\": \"MWPS\",\n" +
+                               "    \"granularity-period\": \"PERIOD_15MIN\",\n" +
+                               "    \"radio-signal-id\": \"Test8\",\n" +
+                               "    \"suspect-interval-flag\": false,\n" +
+                               "    \"performance-data\": {\n" +
+                               "        \"time4096-states-l\": -1,\n" +
+                               "        \"time16-states-s\": -1,\n" +
+                               "        \"tx-level-max\": 3,\n" +
+                               "        \"snir-max\": -99,\n" +
+                               "        \"time16-states\": 0,\n" +
+                               "        \"time64-states\": 900,\n" +
+                               "        \"unavailability\": 0,\n" +
+                               "        \"time8192-states-l\": -1,\n" +
+                               "        \"time512-states\": -1,\n" +
+                               "        \"xpd-min\": -99,\n" +
+                               "        \"xpd-avg\": -99,\n" +
+                               "        \"tx-level-avg\": 3,\n" +
+                               "        \"tx-level-min\": 3,\n" +
+                               "        \"rf-temp-min\": -99,\n" +
+                               "        \"rf-temp-avg\": -99,\n" +
+                               "        \"snir-avg\": -99,\n" +
+                               "        \"snir-min\": -99,\n" +
+                               "        \"time-period\": 900,\n" +
+                               "        \"time2-states\": 0,\n" +
+                               "        \"time4-states\": 0,\n" +
+                               "        \"time8-states\": -1,\n" +
+                               "        \"ses\": 0,\n" +
+                               "        \"time2048-states-l\": -1,\n" +
+                               "        \"time2048-states\": -1,\n" +
+                               "        \"xpd-max\": -99,\n" +
+                               "        \"rf-temp-max\": -99,\n" +
+                               "        \"time8192-states\": -1,\n" +
+                               "        \"time128-states\": -1,\n" +
+                               "        \"time256-states\": -1,\n" +
+                               "        \"rx-level-min\": -44,\n" +
+                               "        \"rx-level-avg\": -44,\n" +
+                               "        \"time1024-states-l\": -1,\n" +
+                               "        \"es\": 0,\n" +
+                               "        \"cses\": 0,\n" +
+                               "        \"time4-states-s\": 0,\n" +
+                               "        \"time1024-states\": -1,\n" +
+                               "        \"time512-states-l\": -1,\n" +
+                               "        \"time4096-states\": -1,\n" +
+                               "        \"rx-level-max\": -45,\n" +
+                               "        \"defect-blocks-sum\": -1,\n" +
+                               "        \"time32-states\": -1\n" +
+                               "    }\n" +
+                               "}";
+
+               // Map to JSON String to Object
+               Data generatedNode = mapper.readValue(jsonString.getBytes(), Data.class);
+               out(generatedNode.toString()); // Print it with specified indentation
+
+       }
+
+
+       @Test
+       public void test6() throws IOException, ClassNotFoundException {
+        out(method());
+               HtDatabaseClient dbClient = new HtDatabaseClient(new HostInfo[] { new HostInfo("sdnrdb", 9200, Protocol.HTTP) });
+        String PMDATA15M_TYPE = "historicalperformance15min";
+
+               EsDataObjectReaderWriter<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data> pm15mRW =
+                               new EsDataObjectReaderWriter<>(dbClient, PMDATA15M_TYPE, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data.class);
+               pm15mRW.setEsIdAttributeName("_nodeName");
+
+               ReadPmdata15mListInputBuilder inputBuilder = new ReadPmdata15mListInputBuilder();
+               PaginationBuilder paginationBuilder = new PaginationBuilder();
+               paginationBuilder.setPage(new BigInteger("1"));
+               paginationBuilder.setSize(20L);
+               inputBuilder.setPagination(paginationBuilder.build());
+
+               ReadPmdata15mListInput input = inputBuilder.build();
+
+
+               ReadPmdata15mListOutputBuilder outputBuilder = new ReadPmdata15mListOutputBuilder();
+               long page = getPage(input);
+               long pageSize = getPageSize(input);
+
+               QueryBuilder query = fromFilter(input.getFilter()).from((page - 1) * pageSize).size(pageSize);
+               setSortOrder(query, input.getSortorder());
+
+               SearchResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data> result=pm15mRW.doReadAll(query);
+
+               out("Found: "+result.getHits().size());
+               int t=0;
+               for (Data hit : result.getHits()) {
+                       out("Hit "+(t++)+":"+hit);
+               }
+               setPagination(outputBuilder, page, pageSize, result.getTotal());
+               outputBuilder.setData(result.getHits());
+       }
+
+       @Test
+       public void test7() throws IOException, ClassNotFoundException {
+        out(method());
+               String ESDATATYPE_MEDIATORSERVER = Entity.MediatorServer.getName();
+               HtDatabaseClient dbClient = new HtDatabaseClient(new HostInfo[] { new HostInfo("sdnrdb", 9200, Protocol.HTTP) });
+               EsDataObjectReaderWriter<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.mediator.server.list.output.Data> mediatorserverRW;
+
+               mediatorserverRW = new EsDataObjectReaderWriter<>(dbClient, ESDATATYPE_MEDIATORSERVER,
+                               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.mediator.server.list.output.Data.class)
+                               .setWriteInterface(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.MediatorServerEntity.class)
+                               .setEsIdAttributeName("_id");
+
+               CreateMediatorServerInputBuilder inputBuilder = new CreateMediatorServerInputBuilder();
+               inputBuilder.setName("Hans");
+               inputBuilder.setUrl("MyGreatUrl");
+
+               String id = mediatorserverRW.write(inputBuilder.build(),"testid");
+               System.out.println(id);
+
+       }
+
+       @Test
+       public void test8() throws IOException {
+        out(method());
+        String input;
+        input = "id-dd-dd";
+        System.out.println("Map " + input + " to "+YangToolsMapper.toCamelCaseAttributeName(input));
+        input = "idDdGg";
+        System.out.println("Map " + input + " to "+YangToolsMapper.toCamelCaseAttributeName(input));
+        input = "_idDdGg";
+        System.out.println("Map " + input + " to "+YangToolsMapper.toCamelCaseAttributeName(input));
+        input = "--ff--gfg";
+        System.out.println("Map " + input + " to "+YangToolsMapper.toCamelCaseAttributeName(input));
+        input = "";
+        System.out.println("Map " + input + " to "+YangToolsMapper.toCamelCaseAttributeName(input));
+       }
+
+       /* ---------------------------------
+        * Private
+        */
+       private static String method() {
+               String nameofCurrMethod = new Throwable().getStackTrace()[1].getMethodName();
+               return nameofCurrMethod;
+       }
+
+    private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.DataBuilder getInventoryDataBuilder(String description, long treeLevel) {
+               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.DataBuilder dataBuilder =
+                               new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.DataBuilder();
+               dataBuilder.setDescription(description);
+               dataBuilder.setTreeLevel(treeLevel);
+               return dataBuilder;
+    }
+
+
+       private static void out(String text) {
+               System.out.println("----------------------");
+               System.out.println(text);
+       }
+
+       private static long getPage(EntityInput input) {
+               return getPage(input, 1);
+       }
+
+       private static long getPage(EntityInput input, long defaultValue) {
+               return input.getPagination() != null ? input.getPagination().getPage().longValue() : defaultValue;
+       }
+
+       private static long getPageSize(EntityInput input) {
+               return getPageSize(input, 1);
+       }
+
+       private static long getPageSize(EntityInput input, long defaultValue) {
+               return input.getPagination() != null ? input.getPagination().getSize().longValue() : defaultValue;
+       }
+
+       private static QueryBuilder fromFilter(@Nullable List<Filter> filters) {
+               return fromFilter(filters, "");
+       }
+
+       private static QueryBuilder fromFilter(@Nullable List<Filter> filters, String prefix) {
+               if (filters == null || filters.size() == 0) {
+                       return QueryBuilders.matchAllQuery();
+
+               } else if(filters.size()==1){
+                       return QueryBuilders.matchQuery(filters.get(0).getProperty(), filters.get(0).getFiltervalue());
+               }
+               else {
+                       BoolQueryBuilder query = new BoolQueryBuilder();
+                       for (Filter fi : filters) {
+                               query.must(QueryBuilders.matchQuery((prefix != null ? prefix : "") + fi.getProperty(),
+                                               fi.getFiltervalue()));
+                       }
+                       return query;
+               }
+
+       }
+       private static QueryBuilder setSortOrder(QueryBuilder query, @Nullable List<Sortorder> sortorder) {
+               return setSortOrder(query, sortorder, "");
+       }
+
+       private static QueryBuilder setSortOrder(QueryBuilder query, @Nullable List<Sortorder> sortorder, String prefix) {
+               if (sortorder != null && sortorder.size() > 0) {
+                       for (Sortorder so : sortorder) {
+                               query.sort((prefix != null ? prefix : "") + so.getProperty(),
+                                               so.getSortorder() == SortOrder.Ascending
+                                                               ? org.onap.ccsdk.features.sdnr.wt.common.database.queries.SortOrder.ASCENDING
+                                                               : org.onap.ccsdk.features.sdnr.wt.common.database.queries.SortOrder.DESCENDING);
+                       }
+               }
+               return query;
+
+       }
+
+       private static void setPagination(ReadPmdata15mListOutputBuilder outputBuilder, long page, long pageSize, long totalSize) {
+               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Pagination value = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.PaginationBuilder()
+                               .setPage(BigInteger.valueOf(page)).setSize(pageSize).setTotal(BigInteger.valueOf(totalSize)).build();
+               outputBuilder.setPagination(value);
+       }
+
+}
index 2c1978b..b21d2f9 100644 (file)
                                <artifactId>elasticsearch-maven-plugin</artifactId>
                                <version>6.16</version>
                                <configuration>
-                                       <skip>true</skip>
+                                       <skip>${skipTests}</skip>
                                        <clusterName>testCluster</clusterName>
                                        <transportPort>9500</transportPort>
                                        <httpPort>${databaseport}</httpPort>
diff --git a/sdnr/wt/data-provider/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/test/TestCRUDforDatabase.java b/sdnr/wt/data-provider/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/test/TestCRUDforDatabase.java
new file mode 100644 (file)
index 0000000..f1d5125
--- /dev/null
@@ -0,0 +1,1453 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
+
+package org.onap.ccsdk.features.sdnr.wt.dataprovider.test;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
+import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit;
+import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
+import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
+import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilders;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.BaseRequest;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.ElasticSearchDataProvider;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMaintenanceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMaintenanceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMaintenanceOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMediatorServerInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMediatorServerInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMediatorServerOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateNetworkElementConnectionInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateNetworkElementConnectionInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateNetworkElementConnectionOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMaintenanceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMaintenanceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMediatorServerInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMediatorServerInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteNetworkElementConnectionInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteNetworkElementConnectionInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Entity;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadConnectionlogListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadConnectionlogListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadConnectionlogListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadEventlogListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadEventlogListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadEventlogListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultcurrentListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultcurrentListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultcurrentListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultlogListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultlogListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultlogListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadInventoryListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadInventoryListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadInventoryListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMaintenanceListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMaintenanceListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMaintenanceListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMediatorServerListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMediatorServerListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMediatorServerListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadNetworkElementConnectionListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadNetworkElementConnectionListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadNetworkElementConnectionListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mDeviceListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mDeviceListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mDeviceListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mLtpListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mLtpListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mLtpListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hDeviceListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hDeviceListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hDeviceListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hLtpListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hLtpListInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hLtpListOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.SeverityType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMaintenanceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMaintenanceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMaintenanceOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMediatorServerInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMediatorServerInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMediatorServerOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateNetworkElementConnectionInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateNetworkElementConnectionInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateNetworkElementConnectionOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.FilterBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.Pagination;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.entity.input.PaginationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.mediator.server.list.output.Data;
+
+public class TestCRUDforDatabase {
+
+    private static ElasticSearchDataProvider dbProvider;
+    private static HtDatabaseClient dbRawProvider;
+    private static HostInfo[] hosts = new HostInfo[] { new HostInfo("localhost", Integer
+            .valueOf(System.getProperty("databaseport") != null ? System.getProperty("databaseport") : "49200")) };
+
+    @BeforeClass
+    public static void init() throws Exception {
+
+        dbProvider = new ElasticSearchDataProvider(hosts);
+        dbProvider.waitForYellowDatabaseStatus(30, TimeUnit.SECONDS);
+        dbRawProvider = new HtDatabaseClient(hosts);
+    }
+
+    private static void trySleep(long ms) {
+        try {
+            Thread.sleep(ms);
+        } catch (Exception e) {
+            Thread.interrupted();
+        }
+    }
+
+    private static void trySleep() {
+        trySleep(0);
+    }
+
+    @Test
+    public void testStatus() throws IOException {
+
+        //== CLEAR AND CREATE ================================
+        clearAndCreatefaultEntity("1", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.Critical);
+        createFaultEntity("Lorem Ipsum", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.Major);
+        createFaultEntity("3", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.Minor);
+        createFaultEntity("4", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.Warning);
+
+        //== READ ================================
+
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.status.output.Data> readOutput = dbProvider.readStatus().getData();
+        System.out.println(readOutput);
+
+        assertEquals(1,readOutput.get(0).getFaults().getMajors().intValue());
+        assertEquals(1,readOutput.get(0).getFaults().getMinors().intValue());
+        assertEquals(1,readOutput.get(0).getFaults().getWarnings().intValue());
+        assertEquals(1,readOutput.get(0).getFaults().getCriticals().intValue());
+
+        //== DELETE ================================
+
+         System.out.println("try to delete entries");
+         try {
+             dbRawProvider.doRemove(Entity.Faultcurrent.getName(), QueryBuilders.matchAllQuery());
+         } catch (Exception e) {
+             fail("problem deleting entry: " + e.getMessage());
+         }
+
+       //== VERIFY DELETE ===========================
+         System.out.println("verify entries were deleted");
+         readOutput = dbProvider.readStatus().getData();
+         assertEquals(0,readOutput.get(0).getFaults().getMajors().intValue());
+         assertEquals(0,readOutput.get(0).getFaults().getMinors().intValue());
+         assertEquals(0,readOutput.get(0).getFaults().getWarnings().intValue());
+         assertEquals(0,readOutput.get(0).getFaults().getCriticals().intValue());
+    }
+
+     @Test
+    public void testMediatorServer() {
+        final String NAME = "ms1";
+        final String URL = "http://11.23.45.55:4599";
+        final String NAME2 = "ms1-nu";
+        final String URL2 = "http://11.23.45.56:4599";
+
+        // ==CLEAR BEFORE TEST============================
+        System.out.println("try to clear entry");
+        try {
+            dbRawProvider.doRemove(Entity.MediatorServer.getName(), QueryBuilders.matchAllQuery());
+        } catch (Exception e) {
+            fail("problem deleting entry: " + e.getMessage());
+        }
+        trySleep();
+        // ==CREATE============================
+        System.out.println("try to create entry");
+        CreateMediatorServerOutputBuilder createOutput = null;
+        CreateMediatorServerInput input = new CreateMediatorServerInputBuilder().setName(NAME).setUrl(URL).build();
+        String dbId = null;
+
+        try {
+            createOutput = dbProvider.createMediatorServer(input);
+            dbId = createOutput.getId();
+            System.out.println(createOutput);
+        } catch (Exception e) {
+            fail("failed to create " + input.toString() + ":" + e.getMessage());
+        }
+        assertNotNull(createOutput);
+        assertNotNull(dbId);
+        trySleep();
+        // ==READ===========================
+        System.out.println("try to read entry");
+        ReadMediatorServerListInput readinput = new ReadMediatorServerListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
+                .setPagination(getPagination(20, 1)).build();
+        ReadMediatorServerListOutputBuilder readoutput = dbProvider.readMediatorServerList(readinput);
+        List<Data> data = readoutput.getData();
+        assertNotNull(data);
+        assertEquals("no entry found", 1, data.size());
+        assertEquals(NAME, data.get(0).getName());
+        assertEquals(URL, data.get(0).getUrl());
+        String dbId2 = data.get(0).getId();
+        assertEquals(dbId, dbId2);
+        System.out.println(data);
+        // ==UPDATE============================
+        System.out.println("try to update entry");
+        UpdateMediatorServerInput updateInput = new UpdateMediatorServerInputBuilder().setId(dbId2).setName(NAME2)
+                .setUrl(URL2).build();
+        UpdateMediatorServerOutputBuilder updateOutput = null;
+        try {
+            updateOutput = dbProvider.updateMediatorServer(updateInput);
+            System.out.println(updateOutput);
+        } catch (Exception e) {
+            fail("problem updating entry:" + e.getMessage());
+        }
+        assertNotNull(updateOutput);
+        trySleep();
+        // ==READ============================
+        System.out.println("try to read entry");
+        readinput = new ReadMediatorServerListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("name").setFiltervalue(NAME2).build()))
+                .setPagination(getPagination(20, 1)).build();
+        readoutput = dbProvider.readMediatorServerList(readinput);
+        data = readoutput.getData();
+        System.out.println(data);
+        assertNotNull("no update response", data);
+        assertEquals("update not verifiied", 1, data.size());
+        assertEquals("update not verifiied", NAME2, data.get(0).getName());
+        assertEquals("update not verifiied", URL2, data.get(0).getUrl());
+        assertEquals("update not verifiied", dbId, data.get(0).getId());
+        // ==DELETE============================
+        System.out.println("try to delete entry");
+        DeleteMediatorServerInput deleteInput = new DeleteMediatorServerInputBuilder().setId(dbId).build();
+        try {
+            dbProvider.deleteMediatorServer(deleteInput);
+        } catch (Exception e) {
+            fail("problem deleting entry: " + e.getMessage());
+        }
+
+        trySleep();
+        // ==READ/VERIFY DELETE============================
+        System.out.println("try to read entry");
+        readinput = new ReadMediatorServerListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("name").setFiltervalue(NAME2).build()))
+                .setPagination(getPagination(20, 1)).build();
+        readoutput = dbProvider.readMediatorServerList(readinput);
+        data = readoutput.getData();
+        assertNotNull("delete not verifiied", data);
+        assertEquals("delete not verifiied", 0, data.size());
+    }
+
+     @Test
+    public void testNetworkElementConnectionCurrent() {
+
+        System.out.println("networkElementConnection test start");
+
+        // ==CLEAR BEFORE TEST============================
+        System.out.println("try to clear entry");
+        try {
+            dbRawProvider.doRemove(Entity.NetworkelementConnection.getName(), QueryBuilders.matchAllQuery());
+        } catch (Exception e) {
+            fail("problem deleting entry: " + e.getMessage());
+        }
+
+        // ==CREATE============================
+        System.out.println("try to create");
+        final String name = "sim87";
+        final String url = "10.5.10.1";
+        final long port = 5959;
+
+        CreateNetworkElementConnectionOutputBuilder create = null;
+        CreateNetworkElementConnectionInput input = new CreateNetworkElementConnectionInputBuilder().setNodeId(name)
+                .setIsRequired(true).setHost(url).setPort(port).build();
+        String dbId = null;
+
+        try {
+            create = dbProvider.createNetworkElementConnection(input);
+            dbId = create.getId();
+        } catch (Exception e) {
+            fail("networkElementConnection create failed" + e.getMessage());
+        }
+
+        assertNotNull(dbId);
+        assertNotNull(create);
+
+        // ==READ===========================
+
+        ReadNetworkElementConnectionListInput readInput = new ReadNetworkElementConnectionListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
+                .setPagination(getPagination(20, 1)).build();
+
+        ReadNetworkElementConnectionListOutputBuilder readOperation = dbProvider
+                .readNetworkElementConnectionList(readInput);
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.network.element.connection.list.output.Data> data = readOperation
+                .getData();
+
+        assertNotNull(data);
+        assertEquals(dbId, data.get(0).getId());
+        assertEquals(name, data.get(0).getNodeId());
+        assertEquals(url, data.get(0).getHost());
+        assertEquals(port, data.get(0).getPort().longValue());
+
+        // ==UPDATE============================
+        System.out.println("Trying to update...");
+        final String name2 = "sim88";
+        final String url2 = "10.5.10.2";
+        final long port2 = 5960;
+
+        UpdateNetworkElementConnectionInput updateInput = new UpdateNetworkElementConnectionInputBuilder().setId(dbId).setHost(url2).setPort(port2).setIsRequired(false).build();
+        UpdateNetworkElementConnectionOutputBuilder updateOutput = null;
+        try {
+            updateOutput = dbProvider.updateNetworkElementConnection(updateInput);
+        } catch (Exception e) {
+            fail("update failed: " + e.getMessage());
+        }
+
+        assertNotNull(updateOutput);
+
+        // == Verify UPDATE============================
+        System.out.println("Verfiying update...");
+
+        readOperation = dbProvider.readNetworkElementConnectionList(readInput);
+        data = readOperation.getData();
+
+        assertNotNull(data);
+        assertEquals(url2, data.get(0).getHost());
+        assertEquals(port2, data.get(0).getPort().longValue());
+
+        // ==PARTIAL UPDATE============================
+        System.out.println("Try partial update...");
+        assertEquals(false, data.get(0).isIsRequired());
+        updateInput = new UpdateNetworkElementConnectionInputBuilder().setId(dbId).setIsRequired(true).build();
+        try {
+            updateOutput = dbProvider.updateNetworkElementConnection(updateInput);
+        } catch (Exception e) {
+            fail("update failed: " + e.getMessage());
+        }
+
+        assertNotNull(updateOutput);
+
+        readOperation = dbProvider.readNetworkElementConnectionList(readInput);
+        data = readOperation.getData();
+
+        assertEquals(true, data.get(0).isIsRequired());
+        assertEquals(url2, data.get(0).getHost());
+        assertEquals(port2, data.get(0).getPort().longValue());
+
+        // ==DELETE============================
+        System.out.println("Try delete...");
+
+        DeleteNetworkElementConnectionInput deleteInput = new DeleteNetworkElementConnectionInputBuilder().setId(dbId)
+                .build();
+        try {
+            dbProvider.deleteNetworkElementConnection(deleteInput);
+        } catch (Exception e) {
+            fail("problem deleting "+e.getMessage());
+        }
+
+        readInput = new ReadNetworkElementConnectionListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
+                .setPagination(getPagination(20, 1)).build();
+        readOperation = dbProvider.readNetworkElementConnectionList(readInput);
+        data = readOperation.getData();
+        assertEquals(0, data.size());
+
+    }
+
+     @Test
+    public void testMaintenance() {
+        System.out.println("Starting Maintenance tests...");
+
+        // ==CLEAR BEFORE TEST============================
+        System.out.println("try to clear entry");
+        try {
+            dbRawProvider.doRemove(Entity.Maintenancemode.getName(), QueryBuilders.matchAllQuery());
+        } catch (Exception e) {
+            fail("problem deleting entry: " + e.getMessage());
+        }
+
+        // ==CREATE============================
+
+        final String nodeId = "Lorem Ipsum";
+        final boolean isActive = true;
+
+        CreateMaintenanceOutputBuilder create = null;
+        CreateMaintenanceInput input = new CreateMaintenanceInputBuilder().setNodeId(nodeId).setActive(isActive)
+                .build();
+        String dbId = null;
+        try {
+            create = dbProvider.createMaintenance(input);
+            dbId = create.getId();
+        } catch (Exception e) {
+            fail("Failed to create:" + e.getMessage());
+        }
+
+        System.out.println(dbId);
+        assertNotNull(create);
+        assertNotNull(dbId);
+
+        // ==READ===========================
+        System.out.println("Try read...");
+
+        ReadMaintenanceListInput readinput = new ReadMaintenanceListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
+                .setPagination(getPagination(20, 1)).build();
+        ReadMaintenanceListOutputBuilder readResult = dbProvider.readMaintenanceList(readinput);
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.maintenance.list.output.Data> data = readResult
+                .getData();
+
+        assertNotEquals(0, data.size());
+        assertNotNull(data);
+        assertEquals(nodeId, data.get(0).getNodeId());
+        assertEquals(isActive, data.get(0).isActive());
+
+        // ==UPDATE============================
+
+        System.out.println("Trying to update...");
+        final String nodeId2 = "Name2";
+        final boolean isActive2 = false;
+
+        UpdateMaintenanceInput updateInput = new UpdateMaintenanceInputBuilder().setId(dbId).setNodeId(nodeId2)
+                .setActive(isActive2).build();
+        UpdateMaintenanceOutputBuilder updateResult = null;
+        try {
+            updateResult = dbProvider.updateMaintenance(updateInput);
+        } catch (Exception e) {
+            fail("maintenance update failed..." + e.getMessage());
+        }
+
+        assertNotNull(updateResult);
+
+        // == VERIFY UPDATE============================
+        System.out.println("Verfify update...");
+        readResult = dbProvider.readMaintenanceList(readinput);
+        data = readResult.getData();
+
+        assertNotNull(data);
+        assertEquals(nodeId2, data.get(0).getNodeId());
+        assertEquals(isActive2, data.get(0).isActive());
+
+        // ==DELETE================================
+        System.out.println("Trying to delete...");
+
+        DeleteMaintenanceInput deleteInput = new DeleteMaintenanceInputBuilder().setId(dbId).build();
+        try {
+            dbProvider.deleteMaintenance(deleteInput);
+        } catch (Exception e) {
+            fail("Maintenance entry couldn't be deleted" + e.getMessage());
+        }
+
+        readResult = dbProvider.readMaintenanceList(readinput);
+        data = readResult.getData();
+
+        assertEquals(0, data.size());
+    }
+
+    @Test
+    public void testFaultLog() {
+
+        System.out.println("Starting fault log tests...");
+        String dbId = clearAndCreatefaultEntity("1", Entity.Faultlog.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultlogInput", SeverityType.Critical);
+
+        // ==READ===========================
+        System.out.println("try to read entry");
+
+        ReadFaultlogListInput readinput = new ReadFaultlogListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
+                .setPagination(getPagination(20, 1)).build();
+
+        ReadFaultlogListOutputBuilder readResult = null;
+        try {
+            readResult = dbProvider.readFaultLogList(readinput);
+
+        } catch (Exception e) {
+            fail("Fault log not read: " + e.getMessage());
+        }
+
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultlog.list.output.Data> data = readResult
+                .getData();
+
+        assertNotNull(data);
+        assertEquals(1, data.size());
+        assertEquals("signalIsLost", data.get(0).getProblem());
+        assertEquals("Critical", data.get(0).getSeverity().toString());
+        assertEquals("s1", data.get(0).getNodeId());
+
+      //== UPDATE ================================
+        System.out.println("try to update entry");
+
+        dbRawProvider.doUpdateOrCreate(Entity.Faultlog.getName(), "1", "{'problem': 'CableLOS', 'severity': 'Major', 'node-id': 'test4657-78'}");
+
+        System.out.println("try to search entry 1");
+        readinput = new ReadFaultlogListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-id").setFiltervalue("test").build()))
+                .setPagination(getPagination(20, 1)).build();
+
+      //== VERIFY UPDATE ================================
+        readResult = dbProvider.readFaultLogList(readinput);
+        data = readResult.getData();
+
+
+        assertNotNull(data);
+        System.out.println(data);
+        assertEquals(0, data.size());
+
+        System.out.println("try to search entry 2");
+
+        readinput = new ReadFaultlogListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-id").setFiltervalue("test*").build()))
+                .setPagination(getPagination(20, 1)).build();
+
+        readResult = dbProvider.readFaultLogList(readinput);
+        data = readResult.getData();
+
+
+        assertNotNull(data);
+        assertEquals(1, data.size());
+        assertEquals("CableLOS", data.get(0).getProblem());
+        assertEquals("Major", data.get(0).getSeverity().toString());
+        assertEquals("test4657-78", data.get(0).getNodeId());
+
+      //== DELETE ================================
+
+        System.out.println("try to clear entry");
+        try {
+            dbRawProvider.doRemove(Entity.Faultlog.getName(), dbId);
+        } catch (Exception e) {
+            fail("problem deleting entry: " + e.getMessage());
+        }
+
+      //== VERIFY DELETE ===========================
+        System.out.println("verify entries deleted");
+        readResult = dbProvider.readFaultLogList(new ReadFaultlogListInputBuilder().setPagination(getPagination(20, 1)).build());
+        data = readResult.getData();
+        assertEquals(0, data.size());
+    }
+
+    @Test
+    public void testFaultCurrent() {
+        System.out.println("Starting faultCurrent test...");
+         String dbId = null;
+         dbId = clearAndCreatefaultEntity("1", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.NonAlarmed);
+         assertEquals("1", dbId);
+
+        // ==READ===========================
+         System.out.println("Trying to read...");
+
+
+        ReadFaultcurrentListInput readinput = new ReadFaultcurrentListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
+                .setPagination(getPagination(20, 1)).build();
+
+        ReadFaultcurrentListOutputBuilder readResult = null;
+        try {
+            readResult = dbProvider.readFaultCurrentList(readinput);
+
+        } catch (Exception e) {
+            fail("Fault log not read: " + e.getMessage());
+        }
+
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultcurrent.list.output.Data> data = readResult
+                .getData();
+
+
+        assertNotNull(data);
+        assertEquals(1, data.size());
+        assertEquals("signalIsLost", data.get(0).getProblem());
+        assertEquals("NonAlarmed", data.get(0).getSeverity().toString());
+        assertEquals("s1", data.get(0).getNodeId());
+        assertEquals(4340, data.get(0).getCounter().intValue());
+        assertEquals(new DateAndTime("2019-10-28T11:55:58.3Z"), data.get(0).getTimestamp());
+        assertEquals(4340, data.get(0).getCounter().intValue());
+        assertEquals("LP-MWPS-RADIO", data.get(0).getObjectId());
+
+
+        // ==UPDATE============================
+        System.out.println("Trying to update...");
+
+        String json = "{\n" +
+                "\"timestamp\": \"2019-12-28T11:55:58.3Z\",\n" +
+                "\"node-id\": \"SDN-Controller-0\",\n" +
+                "\"counter\": 75,\n" +
+                "\"problem\": \"connectionLossNeOAM\",\n" +
+                "}";
+
+        String updatedDbId = dbRawProvider.doUpdateOrCreate(Entity.Faultcurrent.getName(), dbId, json);
+        assertEquals(dbId, updatedDbId);
+
+        // ==READ============================
+
+        try {
+            readResult = dbProvider.readFaultCurrentList(readinput);
+
+        } catch (Exception e) {
+            fail("Fault log not read: " + e.getMessage());
+        }
+
+        data = readResult.getData();
+
+        assertNotNull(data);
+        assertEquals(1, data.size());
+        assertEquals("connectionLossNeOAM", data.get(0).getProblem());
+        assertEquals("SDN-Controller-0", data.get(0).getNodeId());
+        assertEquals(75, data.get(0).getCounter().intValue());
+        assertEquals("LP-MWPS-RADIO", data.get(0).getObjectId());
+
+        // ==DELETE============================
+        try {
+            dbRawProvider.doRemove(Entity.Faultcurrent.getName(), QueryBuilders.matchAllQuery());
+        } catch (Exception e) {
+            fail("problem deleting: " + e.getMessage());
+        }
+
+        // ==READ/VERIFY DELETE============================
+
+        try {
+            readResult = dbProvider.readFaultCurrentList(readinput);
+
+        } catch (Exception e) {
+            fail("Fault log not read: " + e.getMessage());
+        }
+
+        data = readResult.getData();
+
+        assertNotNull(data);
+        assertEquals(0, data.size());
+    }
+
+    @Test
+    public void testConnectionLog() {
+
+        // ==CLEAR================================
+        System.out.println("Clear before test");
+         try {
+             dbRawProvider.doRemove(Entity.Connectionlog.getName(), QueryBuilders.matchAllQuery());
+         } catch (Exception e) {
+             fail("problem deleting: " + e.getMessage());
+         }
+
+        // ==CREATE================================
+
+        System.out.println("Try create entry");
+        final String initialDbId = "1";
+        String dbId = null;
+        String json ="{\n" +
+                "\"timestamp\": \"2019-11-01T11:28:34.7Z\",\n" +
+                "\"status\": \"Connecting\",\n" +
+                "\"node-id\": \"sim2230\",\n" +
+                "\"implemented-interface\": \"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateConnectionlogInput\"\n" +
+                "}";
+
+        dbId = dbRawProvider.doUpdateOrCreate(Entity.Connectionlog.getName(), initialDbId, json);
+
+        assertEquals(initialDbId, dbId);
+
+        // ==READ================================
+        System.out.println("Try read entry");
+
+        ReadConnectionlogListInput readinput = new ReadConnectionlogListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
+                .setPagination(getPagination(20, 1)).build();
+
+        ReadConnectionlogListOutputBuilder readResult = null;
+        try {
+            readResult = dbProvider.readConnectionlogList(readinput);
+
+        } catch (Exception e) {
+            fail("Connection log not read: " + e.getMessage());
+        }
+
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.connectionlog.list.output.Data> data = readResult
+                .getData();
+
+        assertNotNull(data);
+        assertEquals(1, data.size());
+        assertEquals("Connecting", data.get(0).getStatus().toString());
+        assertEquals("sim2230", data.get(0).getNodeId());
+
+
+        // ==UPDATE================================
+        System.out.println("Try update entry");
+
+        dbRawProvider.doUpdateOrCreate(Entity.Connectionlog.getName(), dbId, "{'status' : 'Connected'}");
+
+        // ==READ 2================================
+        System.out.println("Try read updated entry");
+
+        readinput = new ReadConnectionlogListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("status").setFiltervalue("Connected").build()))
+                .setPagination(getPagination(20, 1)).build();
+
+        try {
+            readResult = dbProvider.readConnectionlogList(readinput);
+
+        } catch (Exception e) {
+            fail("Connection log not read: " + e.getMessage());
+        }
+
+        data = readResult.getData();
+
+        assertNotNull(data);
+        assertEquals(1, data.size());
+        assertEquals("Connected", data.get(0).getStatus().toString());
+        assertEquals("sim2230", data.get(0).getNodeId());
+
+      //== DELETE ================================
+
+           System.out.println("try to clear entry");
+           try {
+               dbRawProvider.doRemove(Entity.Connectionlog.getName(), dbId);
+           } catch (Exception e) {
+               fail("problem deleting entry: " + e.getMessage());
+           }
+
+         //== VERIFY DELETE ===========================
+           System.out.println("verify entries deleted");
+           readResult = dbProvider.readConnectionlogList(new ReadConnectionlogListInputBuilder().setPagination(getPagination(20, 1)).build());
+           data = readResult.getData();
+           assertEquals(0, data.size());
+
+    }
+
+     @Test
+    public void testEventLog() {
+        System.out.println("Test event log starting...");
+
+        // ==CLEAR================================
+        System.out.println("Clear before test");
+         try {
+             dbRawProvider.doRemove(Entity.Eventlog.getName(), QueryBuilders.matchAllQuery());
+         } catch (Exception e) {
+             fail("problem deleting: " + e.getMessage());
+         }
+        // ==CREATE============================
+
+         String dbId = null;
+        String json = " {\n" +
+                "\"timestamp\": \"2019-11-08T16:39:23.0Z\",\n" +
+                "\"new-value\": \"done\",\n" +
+                "\"object-id\": \"SDN-Controller-0\",\n" +
+                "\"attribute-name\": \"startup\",\n" +
+                "\"counter\": 0,\n" +
+                "\"implemented-interface\": \"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Eventlog\",\n" +
+                "\"node-id\": \"SDN-Controller-0\"\n" +
+                "}";
+
+        dbId = dbRawProvider.doUpdateOrCreate(Entity.Eventlog.getName(), "1", json);
+        assertNotNull(dbId);
+
+        // ==READ===========================
+
+        ReadEventlogListInput readinput = new ReadEventlogListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
+                .setPagination(getPagination(20, 1)).build();
+        ReadEventlogListOutputBuilder readResult = null;
+        try {
+             readResult = dbProvider.readEventlogList(readinput);
+
+        } catch (Exception e) {
+            fail("problem reading eventlog");
+        }
+
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.eventlog.list.output.Data> data = readResult.getData();
+        assertEquals(1,data.size());
+
+        //== DELETE ================================
+
+          System.out.println("try to clear entry");
+          try {
+              dbRawProvider.doRemove(Entity.Eventlog.getName(), dbId);
+          } catch (Exception e) {
+              fail("problem deleting entry: " + e.getMessage());
+          }
+
+        //== VERIFY DELETE ===========================
+          System.out.println("verify entries deleted");
+          try {
+            readResult = dbProvider.readEventlogList(new ReadEventlogListInputBuilder().setPagination(getPagination(20, 1)).build());
+        } catch (IOException e) {
+            fail("problem reading eventlog");
+        }
+          data = readResult.getData();
+          assertEquals(0, data.size());
+
+    }
+
+     @Test
+    public void testInventory() {
+
+         System.out.println("Test inventory starting...");
+
+         // ==CLEAR================================
+         System.out.println("Clear before test");
+          try {
+              dbRawProvider.doRemove(Entity.Inventoryequipment.getName(), QueryBuilders.matchAllQuery());
+          } catch (Exception e) {
+              fail("problem deleting: " + e.getMessage());
+          }
+
+
+        // ==CREATE============================
+
+         String dbId = null;
+         String json = " {\"tree-level\": 1,\n" +
+                 "    \"parent-uuid\": \"SHELF-1.1.0.0\",\n" +
+                 "    \"node-id\": \"sim2\",\n" +
+                 "    \"uuid\": \"CARD-1.1.8.0\",\n" +
+                 "    \"contained-holder\": [ ],\n" +
+                 "    \"manufacturer-name\": \"Lorem Ipsum\",\n" +
+                 "    \"manufacturer-identifier\": \"ONF-Wireless-Transport\",\n" +
+                 "    \"serial\": \"sd-dsa-eqw\",\n" +
+                 "    \"date\": \"2008-10-21T00:00:00.0Z\",\n" +
+                 "\"implemented-interface\": \"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory\",\n" +
+                 "    \"version\": \"unknown\",\n" +
+                 "    \"description\": \"WS/DS3\",\n" +
+                 "    \"part-type-id\": \"unknown\",\n" +
+                 "    \"model-identifier\": \"model-id-s3s\",\n" +
+                 "    \"type-name\": \"p4.module\"}";
+
+         dbId = dbRawProvider.doUpdateOrCreate(Entity.Inventoryequipment.getName(), "1 1", json);
+         assertNotNull(dbId);
+
+        // ==READ===========================
+         ReadInventoryListInput readinput = new ReadInventoryListInputBuilder()
+                .setFilter(Arrays.asList(new FilterBuilder().setProperty("id").setFiltervalue(dbId).build()))
+                .setPagination(getPagination(20, 1)).build();
+        ReadInventoryListOutputBuilder readResult = null;
+        try {
+             readResult = dbProvider.readInventoryList(readinput);
+
+        } catch (Exception e) {
+            fail("Problem reading inventory list"+e.getMessage());
+        }
+
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data> data = readResult.getData();
+        assertEquals(1,data.size());
+        assertEquals("Lorem Ipsum", data.get(0).getManufacturerName());
+        assertEquals("ONF-Wireless-Transport", data.get(0).getManufacturerIdentifier());
+        assertEquals("sim2", data.get(0).getNodeId());
+        assertEquals("unknown", data.get(0).getVersion());
+        assertEquals("WS/DS3", data.get(0).getDescription());
+        assertEquals("2008-10-21T00:00:00.0Z", data.get(0).getDate());
+        assertEquals("sd-dsa-eqw", data.get(0).getSerial());
+        System.out.println(data.get(0).getDate());
+
+        // ==UPDATE============================
+        String updatedDbId=null;
+        final String[] holderArray = {"Lorem Ipsum 1", "Lorem Ipsum 2", "Lorem Ipsum &%/$_2"};
+        String updatejson = " {" +
+                 "    \"node-id\": \"sim5\",\n" +
+                 "    \"contained-holder\": [ \"Lorem Ipsum 1\", \"Lorem Ipsum 2\", \"Lorem Ipsum &%/$_2\" ],\n" +
+                 "    \"serial\": \"sd-dsa-eww\",\n" +
+                 "    \"date\": \"2008-11-21T00:00:00.0Z\",\n" +
+                 "    \"part-type-id\": \"not unknown\",\n" +
+                 "}";
+
+        updatedDbId = dbRawProvider.doUpdateOrCreate(Entity.Inventoryequipment.getName(), dbId, updatejson);
+        assertEquals(dbId, updatedDbId);
+
+        try {
+            readResult = dbProvider.readInventoryList(readinput);
+
+        } catch (Exception e) {
+            fail("Problem reading inventory list"+e.getMessage());
+        }
+
+        data = readResult.getData();
+
+        assertEquals(1,data.size());
+        assertEquals("Lorem Ipsum", data.get(0).getManufacturerName());
+        assertEquals("ONF-Wireless-Transport", data.get(0).getManufacturerIdentifier());
+        assertEquals("sim5", data.get(0).getNodeId());
+        assertEquals("not unknown", data.get(0).getPartTypeId());
+        assertEquals("WS/DS3", data.get(0).getDescription());
+        assertEquals("2008-11-21T00:00:00.0Z", data.get(0).getDate());
+        assertEquals("sd-dsa-eww", data.get(0).getSerial());
+        assertEquals(holderArray.length,data.get(0).getContainedHolder().size());
+        assertEquals(holderArray[0],data.get(0).getContainedHolder().get(0));
+        assertEquals(holderArray[1],data.get(0).getContainedHolder().get(1));
+        assertEquals(holderArray[2],data.get(0).getContainedHolder().get(2));
+
+        // ==DELETE============================
+
+        System.out.println("delete after test");
+        try {
+            dbRawProvider.doRemove(Entity.Inventoryequipment.getName(), QueryBuilders.matchAllQuery());
+        } catch (Exception e) {
+            fail("problem deleting: " + e.getMessage());
+        }
+
+     // ==VERIFY DELETE ============================
+
+        try {
+               readResult = dbProvider.readInventoryList(readinput);
+
+           } catch (Exception e) {
+               fail("Problem reading inventory list"+e.getMessage());
+           }
+
+           data = readResult.getData();
+           assertEquals(0,data.size());
+
+    }
+
+     @Test
+     public void test15MinPerformanceReadLtpListWithoutNodeIdSetThrowsException() {
+
+         System.out.println("Reading 15m ltp list without node id filter set throws an exception test start...");
+
+         try {
+             dbRawProvider.doRemove(Entity.Historicalperformance15min.getName(), QueryBuilders.matchAllQuery());
+         } catch (Exception e) {
+             fail("problem deleting: " + e.getMessage());
+         }
+
+         System.out.println("create entries...");
+
+         createPerformanceData("1", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a2");
+         createPerformanceData("2", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a2");
+
+         createPerformanceData("4", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a3");
+         createPerformanceData("5", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a3");
+         createPerformanceData("6", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_7", "LP-MWPS-TTP-03", "a3");
+         createPerformanceData("3", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_7", "LP-MWPS-TTP-05", "a3");
+
+         System.out.println("trying to read, should throw exception...");
+
+
+         ReadPmdata15mLtpListInput readLtp = new ReadPmdata15mLtpListInputBuilder()
+                 .setPagination(getPagination(20, 1)).build();
+
+         ReadPmdata15mLtpListOutputBuilder readltpResult = null;
+
+         try {
+            readltpResult = dbProvider.readPmdata15mLtpList(readLtp);
+            fail("No exception thrown!");
+        } catch (Exception e) {
+            System.out.println(e);
+            assertTrue(e instanceof IllegalArgumentException);
+            assertEquals("no nodename in filter found ", e.getMessage());
+        }
+
+         assertNull(readltpResult);
+
+          //== DELETE ================================
+
+            System.out.println("try to clear entry");
+            try {
+                dbRawProvider.doRemove(Entity.Historicalperformance15min.getName(), QueryBuilders.matchAllQuery());
+            } catch (Exception e) {
+                fail("problem deleting entry: " + e.getMessage());
+            }
+
+          //== VERIFY DELETE ===========================
+            System.out.println("verify entries deleted");
+            List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data> data = dbProvider.readPmdata15mList(new ReadPmdata15mListInputBuilder()
+                    .setPagination(getPagination(20, 1)).build()).getData();
+
+            assertEquals(0, data.size());
+     }
+
+     @Test
+     public void test15MinPerformanceData() {
+        // == CLEAR BEFORE TESTS ============================
+         System.out.println("Test 15 min performance...");
+
+         try {
+             dbRawProvider.doRemove(Entity.Historicalperformance15min.getName(), QueryBuilders.matchAllQuery());
+         } catch (Exception e) {
+             fail("problem deleting: " + e.getMessage());
+         }
+
+        // == CREATE ============================
+
+         System.out.println("create entries...");
+
+         createPerformanceData("1", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a2");
+         createPerformanceData("2", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a2");
+
+         createPerformanceData("4", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a3");
+         createPerformanceData("5", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a3");
+         createPerformanceData("6", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_7", "LP-MWPS-TTP-03", "a3");
+         createPerformanceData("3", timeInterval.PERIOD_15MIN, "PM_RADIO_15M_7", "LP-MWPS-TTP-05", "a3");
+
+        // == READ ============================
+         System.out.println("read list entries...");
+
+         ReadPmdata15mListInput read = new ReadPmdata15mListInputBuilder()
+                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-name").setFiltervalue("a2").build()))
+                 .setPagination(getPagination(20, 1)).build();
+
+         ReadPmdata15mListOutputBuilder readResult = null;
+
+         try {
+             readResult = dbProvider.readPmdata15mList(read);
+        } catch (Exception e) {
+            fail("Problem reading 15m data");
+        }
+
+          List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data> data = readResult
+                  .getData();
+
+          assertNotNull(data);
+          assertEquals(2, data.size());
+
+          System.out.println("read ltp entries with node name set...");
+
+          ReadPmdata15mLtpListInput readLtp = new ReadPmdata15mLtpListInputBuilder()
+                  .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-name").setFiltervalue("a2").build()))
+                  .setPagination(getPagination(20, 1)).build();
+
+          ReadPmdata15mLtpListOutputBuilder readltpResult = null;
+
+          try {
+             readltpResult = dbProvider.readPmdata15mLtpList(readLtp);
+         } catch (Exception e) {
+             fail("Problem reading 15m ltp data");
+         }
+
+          List<String> dataLtp = readltpResult.getData();
+
+          assertNotNull(dataLtp);
+         assertEquals(2, dataLtp.size());
+         assertTrue(dataLtp.contains("LP-MWPS-TTP-02"));
+         assertTrue(dataLtp.contains("LP-MWPS-TTP-01"));
+
+         System.out.println("read device entries...");
+
+         ReadPmdata15mDeviceListInput readDevices = new ReadPmdata15mDeviceListInputBuilder()
+                   .setPagination(getPagination(20, 1)).build();
+
+           ReadPmdata15mDeviceListOutputBuilder readDeviceResult = null;
+
+           try {
+              readDeviceResult = dbProvider.readPmdata15mDeviceList(readDevices);
+          } catch (Exception e) {
+              fail("Problem reading 15m device data");
+          }
+
+            List<String> dataDevice = readDeviceResult.getData();
+
+            assertNotNull(dataDevice);
+          assertEquals(2, dataDevice.size());
+          assertTrue(dataDevice.contains("a2"));
+          assertTrue(dataDevice.contains("a3"));
+
+          //== DELETE ================================
+
+            System.out.println("try to clear entry");
+            try {
+                dbRawProvider.doRemove(Entity.Historicalperformance15min.getName(), QueryBuilders.matchAllQuery());
+            } catch (Exception e) {
+                fail("problem deleting entry: " + e.getMessage());
+            }
+
+          //== VERIFY DELETE ===========================
+            System.out.println("verify entries deleted");
+            readResult = dbProvider.readPmdata15mList(new ReadPmdata15mListInputBuilder()
+                    .setPagination(getPagination(20, 1)).build());
+            data = readResult.getData();
+            assertEquals(0, data.size());
+
+     }
+
+     @Test
+     public void test24hPerformanceData() {
+         System.out.println("Test 24h performance...");
+
+         try {
+             dbRawProvider.doRemove(Entity.Historicalperformance24h.getName(), QueryBuilders.matchAllQuery());
+         } catch (Exception e) {
+             fail("problem deleting: " + e.getMessage());
+         }
+
+         System.out.println("create entries...");
+
+         createPerformanceData("1", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a2");
+         createPerformanceData("2", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a2");
+         String aDbId = createPerformanceData("4", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_6", "LP-MWPS-TTP-06", "a2");
+
+         createPerformanceData("5", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a3");
+         createPerformanceData("6", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_7", "LP-MWPS-TTP-03", "a3");
+         createPerformanceData("3", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_7", "LP-MWPS-TTP-05", "a3");
+
+         System.out.println("read all list entries...");
+
+         ReadPmdata24hListInput read = new ReadPmdata24hListInputBuilder()
+                 .setPagination(getPagination(20, 1)).build();
+
+         ReadPmdata24hListOutputBuilder readResult = null;
+
+         try {
+             readResult = dbProvider.readPmdata24hList(read);
+        } catch (Exception e) {
+            fail("Problem reading 24h data");
+        }
+
+         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.list.output.Data> data = readResult
+                 .getData();
+
+         assertNotNull(data);
+         assertEquals(6, data.size());
+
+
+         System.out.println("filter list entries...");
+
+          read = new ReadPmdata24hListInputBuilder()
+                 .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-name").setFiltervalue("a2").build()))
+                 .setPagination(getPagination(20, 1)).build();
+
+          readResult = null;
+
+         try {
+             readResult = dbProvider.readPmdata24hList(read);
+        } catch (Exception e) {
+            fail("Problem reading 24h data");
+        }
+
+         data = readResult.getData();
+
+          assertNotNull(data);
+          assertEquals(3, data.size());
+
+          System.out.println("read ltp entries with node name set...");
+
+          ReadPmdata24hLtpListInput readLtp = new ReadPmdata24hLtpListInputBuilder()
+                   .setFilter(Arrays.asList(new FilterBuilder().setProperty("node-name").setFiltervalue("a2").build()))
+                   .setPagination(getPagination(20, 1)).build();
+
+           ReadPmdata24hLtpListOutputBuilder readltpResult = null;
+
+           try {
+              readltpResult = dbProvider.readPmdata24hLtpList(readLtp);
+          } catch (Exception e) {
+              fail("Problem reading 24h ltp data");
+          }
+
+           List<String> dataLtp = readltpResult.getData();
+
+            assertNotNull(dataLtp);
+            assertEquals(3, dataLtp.size());
+            assertTrue(dataLtp.contains("LP-MWPS-TTP-02"));
+            assertTrue(dataLtp.contains("LP-MWPS-TTP-01"));
+            assertTrue(dataLtp.contains("LP-MWPS-TTP-06"));
+
+
+            System.out.println("read device entries...");
+
+            ReadPmdata24hDeviceListInput readDevices = new ReadPmdata24hDeviceListInputBuilder()
+                       .setPagination(getPagination(20, 1)).build();
+
+               ReadPmdata24hDeviceListOutputBuilder readDeviceResult = null;
+
+               try {
+                  readDeviceResult = dbProvider.readPmdata24hDeviceList(readDevices);
+              } catch (Exception e) {
+                  fail("Problem reading 24h device data");
+              }
+
+                List<String> dataDevice = readDeviceResult.getData();
+
+                assertNotNull(dataDevice);
+              assertEquals(2, dataDevice.size());
+              assertTrue(dataDevice.contains("a2"));
+              assertTrue(dataDevice.contains("a3"));
+
+              // == UPDATE ==============================
+
+              String shouldbeEmpty = dbRawProvider.doUpdate(Entity.Historicalperformance24h.getName(), "{'uuid-interface':'LTP-TEST-MWP-097'}", QueryBuilders.termQuery("_id", aDbId));
+              assertEquals("",shouldbeEmpty);
+              try {
+              readltpResult = dbProvider.readPmdata24hLtpList(readLtp);
+        } catch (Exception e) {
+            fail("Problem reading 24h ltp data");
+        }
+
+              // == VERIFY UPDATE ==============================
+
+              dataLtp = readltpResult.getData();
+
+              assertNotNull(dataLtp);
+             assertEquals(3, dataLtp.size());
+             assertTrue(dataLtp.contains("LP-MWPS-TTP-02"));
+             assertTrue(dataLtp.contains("LP-MWPS-TTP-01"));
+             assertTrue(dataLtp.contains("LTP-TEST-MWP-097"));
+
+
+
+              //== DELETE ===========================
+
+              System.out.println("try to clear entries");
+              try {
+                  dbRawProvider.doRemove(Entity.Historicalperformance24h.getName(), QueryBuilders.matchAllQuery());
+              } catch (Exception e) {
+                  fail("problem deleting entry: " + e.getMessage());
+              }
+
+            //== VERIFY DELETE ===========================
+              System.out.println("verify entries deleted");
+              readResult = dbProvider.readPmdata24hList(new ReadPmdata24hListInputBuilder()
+                      .setPagination(getPagination(20, 1)).build());
+              data = readResult.getData();
+              assertEquals(0, data.size());
+     }
+
+     @Test
+     public void test24hPerformanceDataReadLtpListWithoutNodeIdSetThrowsException() {
+         System.out.println("Test 24 hour tp list without node id filter set throws an exception test start...\"...");
+
+         try {
+             dbRawProvider.doRemove(Entity.Historicalperformance24h.getName(), QueryBuilders.matchAllQuery());
+         } catch (Exception e) {
+             fail("problem deleting: " + e.getMessage());
+         }
+
+         System.out.println("create entries...");
+
+         createPerformanceData("1", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a2");
+         createPerformanceData("2", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a2");
+
+         createPerformanceData("4", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_6", "LP-MWPS-TTP-02", "a3");
+         createPerformanceData("5", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_4", "LP-MWPS-TTP-01", "a3");
+         createPerformanceData("6", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_7", "LP-MWPS-TTP-03", "a3");
+         createPerformanceData("3", timeInterval.PERIOD_24HOURS, "PM_RADIO_15M_7", "LP-MWPS-TTP-05", "a3");
+
+         System.out.println("trying to read, should throw exception...");
+
+
+         ReadPmdata24hLtpListInput readLtp = new ReadPmdata24hLtpListInputBuilder()
+                 .setPagination(getPagination(20, 1)).build();
+
+         ReadPmdata24hLtpListOutputBuilder readltpResult = null;
+
+         try {
+            readltpResult = dbProvider.readPmdata24hLtpList(readLtp);
+            fail("No exception thrown!");
+        } catch (Exception e) {
+            System.out.println(e);
+            assertTrue(e instanceof IllegalArgumentException);
+            assertEquals("no nodename in filter found ", e.getMessage());
+        }
+
+         assertNull(readltpResult);
+
+         try {
+             dbRawProvider.doRemove(Entity.Historicalperformance24h.getName(), QueryBuilders.matchAllQuery());
+         } catch (Exception e) {
+             fail("problem deleting: " + e.getMessage());
+         }
+     }
+
+    @Test
+    public void testUrlEncoding() {
+        System.out.println("Testing url encding");
+
+        final String test = "Lorem Ipsum";
+        final String test1 = "Lorem/Ipsum";
+        final String test2 = "Lorem_Ipsum";
+        final String test3 = "Lorem%Ipsum";
+
+        assertEquals("Lorem%20Ipsum", BaseRequest.urlEncodeValue(test));
+        assertEquals("Lorem%2FIpsum", BaseRequest.urlEncodeValue(test1));
+        assertEquals("Lorem_Ipsum", BaseRequest.urlEncodeValue(test2));
+        assertEquals("Lorem%25Ipsum", BaseRequest.urlEncodeValue(test3));
+    }
+
+    @Test
+    public void testDoUpdateOrCreateWithNullId() {
+        System.out.println("Test DoUpdateOrCreate doesn't create new database entry if null is passed");
+
+        String dbId = clearAndCreatefaultEntity(null, Entity.Faultlog.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultlogInput", SeverityType.Critical);
+        assertNull(dbId);
+    }
+
+    @Test
+    public void readTestFaultCurrentViaRawDbProvider() {
+        System.out.println("Starting faultCurrent test...");
+        String dbId = null;
+        dbId = clearAndCreatefaultEntity("1", Entity.Faultcurrent.getName(), "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput", SeverityType.Critical);
+        assertEquals("1", dbId);
+
+       // ==READ===========================
+        System.out.println("Trying to read...");
+
+       String readResult = null;
+       try {
+           readResult = dbRawProvider.doReadJsonData(Entity.Faultcurrent.getName(), dbId);
+
+       } catch (Exception e) {
+           fail("Fault log not read: " + e.getMessage());
+       }
+
+
+       String expectedDbResult ="{\"severity\":\"Critical\",\"node-id\":\"s1\",\"problem\":\"signalIsLost\",\"counter\":4340,\"object-id\":\"LP-MWPS-RADIO\",\"implemented-interface\":\"org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateFaultcurrentInput\",\"type\":\"ProblemNotificationXml\",\"timestamp\":\"2019-10-28T11:55:58.3Z\"}";
+
+       System.out.println(readResult);
+       assertNotNull(readResult);
+       assertEquals(expectedDbResult, readResult);
+
+       SearchResult<SearchHit> searchResult = dbRawProvider.doReadAllJsonData(Entity.Faultcurrent.getName());
+       assertNotNull(searchResult);
+
+       List<SearchHit> hits = searchResult.getHits();
+
+       assertNotNull(hits);
+       assertEquals(1, searchResult.getTotal());
+       assertEquals(expectedDbResult, hits.get(0).getSourceAsString());
+
+       //== DELETE ==============================
+       try {
+           dbRawProvider.doRemove(Entity.Faultcurrent.getName(), QueryBuilders.matchAllQuery());
+       } catch (Exception e) {
+           fail("problem deleting: " + e.getMessage());
+       }
+       //== VERIFY DELETE ========================
+       searchResult = dbRawProvider.doReadAllJsonData(Entity.Faultcurrent.getName());
+        hits = searchResult.getHits();
+        assertNotNull(hits);
+        assertEquals(0, searchResult.getTotal());
+
+    }
+
+
+    private Pagination getPagination(long pageSize, int page) {
+        return new PaginationBuilder().setPage(BigInteger.valueOf(page)).setSize(pageSize).build();
+    }
+
+
+    private String clearAndCreatefaultEntity(String initialDbId,  String entityType, String implementedInterface, SeverityType severity) {
+        // ==CLEAR BEFORE TEST============================
+        System.out.println("try to clear entry");
+        try {
+            dbRawProvider.doRemove(entityType, QueryBuilders.matchAllQuery());
+        } catch (Exception e) {
+            fail("problem deleting: " + e.getMessage());
+        }
+
+
+        return createFaultEntity(initialDbId, entityType, implementedInterface, severity);
+    }
+
+    private String createFaultEntity(String initialDbId,  String entityType, String implementedInterface, SeverityType severity) {
+         // ==CREATE============================
+        System.out.println("try to create entry");
+        String dbId = null;
+
+        try {
+
+            dbId = dbRawProvider.doUpdateOrCreate(entityType, initialDbId,"{\n" +
+                    "\"timestamp\": \"2019-10-28T11:55:58.3Z\",\n" +
+                    "\"object-id\": \"LP-MWPS-RADIO\",\n" +
+                    "\"severity\": \""+severity.toString()+"\",\n" +
+                    "\"node-id\": \"s1\",\n" +
+                    "\"implemented-interface\": \""+implementedInterface+"\",\n" +
+                    "\"counter\": 4340,\n" +
+                    "\"problem\": \"signalIsLost\",\n" +
+                    "\"type\": \"ProblemNotificationXml\"\n" +
+                    "}");
+
+
+
+        } catch (Exception e) {
+            fail("Problem creating fault log entry" + e.getMessage());
+        }
+
+        return dbId;
+    }
+
+    private enum timeInterval{
+        PERIOD_15MIN,
+        PERIOD_24HOURS
+    }
+
+    private String createPerformanceData(String initialDbId, timeInterval timeInterval, String scannerId, String uuidInterface, String nodename) {
+
+        String json = "{\n" +
+                "\"node-name\": \""+nodename+"\",\n" +
+                "\"uuid-interface\": \""+uuidInterface+"\",\n" +
+                "\"layer-protocol-name\": \"MWPS\",\n" +
+                "\"radio-signal-id\": \"Test8\",\n" +
+                "\"time-stamp\": \"2017-03-01T06:15:00.0Z\",\n" +
+                "\"granularity-period\": \""+timeInterval.toString()+"\",\n" +
+                "\"scanner-id\": \""+scannerId+"\",\n" +
+                "\"performance-data\": {\n" +
+                "\"cses\": 0,\n" +
+                "\"ses\": 0,\n" +
+                "\"es\": 0,\n" +
+                "\"tx-level-max\": 3,\n" +
+                "\"tx-level-avg\": 3,\n" +
+                "\"rx-level-min\": -44,\n" +
+                "\"rx-level-max\": -45,\n" +
+                "\"rx-level-avg\": -44,\n" +
+                "\"time2-states\": 0,\n" +
+                "\"time4-states-s\": 0,\n" +
+                "\"time4-states\": 0,\n" +
+                "\"time8-states\": -1,\n" +
+                "\"time16-states-s\": -1,\n" +
+                "\"time16-states\": 0,\n" +
+                "\"time32-states\": -1,\n" +
+                "\"time64-states\": 900,\n" +
+                "\"time128-states\": -1,\n" +
+                "\"time256-states\": -1,\n" +
+                "\"time512-states\": -1,\n" +
+                "\"time512-states-l\": -1,\n" +
+                "\"unavailability\": 0,\n" +
+                "\"tx-level-min\": 3,\n" +
+                "\"time1024-states\": -1,\n" +
+                "\"time1024-states-l\": -1,\n" +
+                "\"time2048-states\": -1,\n" +
+                "\"time2048-states-l\": -1,\n" +
+                "\"time4096-states\": -1,\n" +
+                "\"time4096-states-l\": -1,\n" +
+                "\"time8192-states\": -1,\n" +
+                "\"time8192-states-l\": -1,\n" +
+                "\"snir-min\": -99,\n" +
+                "\"snir-max\": -99,\n" +
+                "\"snir-avg\": -99,\n" +
+                "\"xpd-min\": -99,\n" +
+                "\"xpd-max\": -99,\n" +
+                "\"xpd-avg\": -99,\n" +
+                "\"rf-temp-min\": -99,\n" +
+                "\"rf-temp-max\": -99,\n" +
+                "\"rf-temp-avg\": -99,\n" +
+                "\"defect-blocks-sum\": -1,\n" +
+                "\"time-period\": 900\n" +
+                "},\n" +
+                "\"suspect-interval-flag\": false\n" +
+                "}";
+
+        if(timeInterval.toString().equals("PERIOD_15MIN")) {
+            return dbRawProvider.doUpdateOrCreate(Entity.Historicalperformance15min.getName(), initialDbId, json);
+        }else {
+            return dbRawProvider.doUpdateOrCreate(Entity.Historicalperformance24h.getName(), initialDbId, json);
+        }
+    }
+
+}
diff --git a/sdnr/wt/data-provider/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/test/TestInitalMaintenanceObjectInDatabase.java b/sdnr/wt/data-provider/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/test/TestInitalMaintenanceObjectInDatabase.java
new file mode 100644 (file)
index 0000000..6339125
--- /dev/null
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.dataprovider.test;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/**
+ * - Handling of inital values for Maintenance mode.
+ */
+public class TestInitalMaintenanceObjectInDatabase {
+
+       //@Test
+       public void test() {
+               fail("Not yet implemented");
+       }
+
+}
index f7e6271..da50bc9 100644 (file)
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>single-feature-parent</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
-
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-helpserver-feature</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>feature</packaging>
-
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId} :: feature</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>sdnr-wt-helpserver-provider</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-    </dependencies>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+  <artifactId>sdnr-wt-helpserver-feature</artifactId>
+  <version>0.7.0-SNAPSHOT</version>
+  <packaging>feature</packaging>
+  <name>ccsdk-features-sdnr-wt :: ${project.artifactId} :: feature</name>
+
+  <parent>
+    <groupId>org.onap.ccsdk.parent</groupId>
+    <artifactId>single-feature-parent</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath />
+  </parent>
+
+  
+  <dependencies>
+
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>sdnr-wt-helpserver-provider</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+  </dependencies>
 </project>
index 01f6b3f..557e7bf 100755 (executable)
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+       <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>odlparent-lite</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
+       <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+       <artifactId>sdnr-wt-helpserver-installer</artifactId>
+       <version>0.7.0-SNAPSHOT</version>
+       <packaging>pom</packaging>
+       <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
 
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-helpserver-installer</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
+       <parent>
+               <groupId>org.onap.ccsdk.parent</groupId>
+               <artifactId>odlparent-lite</artifactId>
+               <version>1.5.1-SNAPSHOT</version>
+               <relativePath />
+       </parent>
 
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
+       <properties>
+               <application.name>sdnr-wt-helpserver</application.name>
+               <include.transitive.dependencies>false</include.transitive.dependencies>
+       </properties>
 
-    <properties>
-        <application.name>sdnr-wt-helpserver</application.name>
-        <include.transitive.dependencies>false</include.transitive.dependencies>
-    </properties>
+       <dependencies>
 
-    <dependencies>
+               <dependency>
+                       <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+                       <artifactId>${application.name}-feature</artifactId>
+                       <version>${project.version}</version>
+                       <type>xml</type>
+                       <classifier>features</classifier>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>*</groupId>
+                                       <artifactId>*</artifactId>
+                               </exclusion>
+                       </exclusions>
+               </dependency>
+               <dependency>
+                       <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+                       <artifactId>${application.name}-provider</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               </dependencies>
 
-        <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-            <artifactId>${application.name}-feature</artifactId>
-            <version>${project.version}</version>
-            <type>xml</type>
-            <classifier>features</classifier>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-            <artifactId>${application.name}-provider</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>maven-repo-zip</id>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <phase>package</phase>
-                        <configuration>
-                            <attach>true</attach>
-                            <finalName>stage/${application.name}-${project.version}</finalName>
-                            <descriptors>
-                                <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
-                            </descriptors>
-                            <appendAssemblyId>true</appendAssemblyId>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <executions>
-                    <!-- <execution> -->
-                    <!-- <id>copy-dependencies</id> -->
-                    <!-- <goals> -->
-                    <!-- <goal>copy-dependencies</goal> -->
-                    <!-- </goals> -->
-                    <!-- <phase>prepare-package</phase> -->
-                    <!-- <configuration> -->
-                    <!-- <transitive>true</transitive> -->
-                    <!-- <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> -->
-                    <!-- <overWriteReleases>false</overWriteReleases> -->
-                    <!-- <overWriteSnapshots>true</overWriteSnapshots> -->
-                    <!-- <overWriteIfNewer>true</overWriteIfNewer> -->
-                    <!-- <useRepositoryLayout>true</useRepositoryLayout> -->
-                    <!-- <addParentPoms>false</addParentPoms> -->
-                    <!-- <copyPom>false</copyPom> -->
-                    <!-- <includeArtifactIds>sdnr-wt-apigateway-provider,${application.name}</includeArtifactIds> -->
-                    <!-- <scope>provided</scope> -->
-                    <!-- </configuration> -->
-                    <!-- </execution> -->
-                    <execution>
-                        <id>copy-nested-dependencies</id>
-                        <goals>
-                            <goal>copy-dependencies</goal>
-                        </goals>
-                        <phase>prepare-package</phase>
-                        <configuration>
-                            <transitive>true</transitive>
-                            <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
-                            <overWriteReleases>false</overWriteReleases>
-                            <overWriteSnapshots>true</overWriteSnapshots>
-                            <overWriteIfNewer>true</overWriteIfNewer>
-                            <useRepositoryLayout>true</useRepositoryLayout>
-                            <addParentPoms>false</addParentPoms>
-                            <copyPom>false</copyPom>
-                            <!--<includeArtifactIds>sdnr-wt-apigateway-provider,${application.name}</includeArtifactIds> -->
-                            <!--<scope>provided</scope> -->
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+       <build>
+               <plugins>
+                       <plugin>
+                               <artifactId>maven-assembly-plugin</artifactId>
+                               <executions>
+                                       <execution>
+                                               <id>maven-repo-zip</id>
+                                               <goals>
+                                                       <goal>single</goal>
+                                               </goals>
+                                               <phase>package</phase>
+                                               <configuration>
+                                                       <attach>true</attach>
+                                                       <finalName>stage/${application.name}-${project.version}</finalName>
+                                                       <descriptors>
+                                                               <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
+                                                       </descriptors>
+                                                       <appendAssemblyId>true</appendAssemblyId>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-dependency-plugin</artifactId>
+                               <executions>
+                                       <!-- <execution> -->
+                                       <!-- <id>copy-dependencies</id> -->
+                                       <!-- <goals> -->
+                                       <!-- <goal>copy-dependencies</goal> -->
+                                       <!-- </goals> -->
+                                       <!-- <phase>prepare-package</phase> -->
+                                       <!-- <configuration> -->
+                                       <!-- <transitive>true</transitive> -->
+                                       <!-- <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> -->
+                                       <!-- <overWriteReleases>false</overWriteReleases> -->
+                                       <!-- <overWriteSnapshots>true</overWriteSnapshots> -->
+                                       <!-- <overWriteIfNewer>true</overWriteIfNewer> -->
+                                       <!-- <useRepositoryLayout>true</useRepositoryLayout> -->
+                                       <!-- <addParentPoms>false</addParentPoms> -->
+                                       <!-- <copyPom>false</copyPom> -->
+                                       <!-- <includeArtifactIds>sdnr-wt-apigateway-provider,${application.name}</includeArtifactIds> -->
+                                       <!-- <scope>provided</scope> -->
+                                       <!-- </configuration> -->
+                                       <!-- </execution> -->
+                                       <execution>
+                                               <id>copy-nested-dependencies</id>
+                                               <goals>
+                                                       <goal>copy-dependencies</goal>
+                                               </goals>
+                                               <phase>prepare-package</phase>
+                                               <configuration>
+                                                       <transitive>true</transitive>
+                                                       <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
+                                                       <overWriteReleases>false</overWriteReleases>
+                                                       <overWriteSnapshots>true</overWriteSnapshots>
+                                                       <overWriteIfNewer>true</overWriteIfNewer>
+                                                       <useRepositoryLayout>true</useRepositoryLayout>
+                                                       <addParentPoms>false</addParentPoms>
+                                                       <copyPom>false</copyPom>
+                                                       <!--<includeArtifactIds>sdnr-wt-apigateway-provider,${application.name}</includeArtifactIds> -->
+                                                       <!--<scope>provided</scope> -->
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+               </plugins>
+       </build>
 </project>
index 4532c34..fd0a68c 100755 (executable)
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+       <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>odlparent-lite</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
+       <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+       <artifactId>sdnr-wt-helpserver-top</artifactId>
+       <version>0.7.0-SNAPSHOT</version>
+       <packaging>pom</packaging>
+       <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
 
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-helpserver-top</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
+       <parent>
+               <groupId>org.onap.ccsdk.parent</groupId>
+               <artifactId>odlparent-lite</artifactId>
+               <version>1.5.1-SNAPSHOT</version>
+               <relativePath/>
+       </parent>
 
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
 
-    <modules>
-        <module>feature</module>
-        <module>provider</module>
-        <module>installer</module>
-    </modules>
+       <modules>
+               <module>feature</module>
+               <module>provider</module>
+               <module>installer</module>
+       </modules>
 
-    <properties>
-        <feature-name>sdnr-wt-helpserver</feature-name>
-    </properties>
+       <properties>
+               <feature-name>sdnr-wt-helpserver</feature-name>
+       </properties>
 </project>
index 0e237a6..2fae07c 100644 (file)
     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========================================================= -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>binding-parent</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
     <artifactId>sdnr-wt-helpserver-provider</artifactId>
     <version>0.7.0-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-
     <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
-
+    <packaging>bundle</packaging>
     <properties>
         <checkstyle.skip>true</checkstyle.skip>
-    </properties>
-
+     </properties>
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>binding-parent</artifactId>
+        <version>1.5.1-SNAPSHOT</version>
+        <relativePath />
+    </parent>
     <dependencies>
         <dependency>
             <groupId>javax.servlet</groupId>
@@ -60,7 +57,6 @@
         </dependency>
 
     </dependencies>
-
     <build>
         <plugins>
             <!-- fixed bug for sonarcube -->
index c8dc5ce..53dbbfb 100644 (file)
@@ -61,7 +61,7 @@
                 },
                 "label": "Config"
             },
-            "performanceApp": {
+            "performanceHistoryApp": {
                 "versions": {
                     "0.4.0": {
                         "date": "2018-02-24",
@@ -76,7 +76,7 @@
                 },
                 "label": "Performance"
             },
-            "pnfInventory": {
+            "inventoryApp": {
                 "versions": {
                     "0.4.0": {
                         "date": "2018-02-24",
         },
         "label": "SDN-R"
     },
-    "mediatorserver":{
-        "nodes":{
-            "installation":{
-                "versions":{
-                    "0.4.0":{"date":"","path":"mediatorserver/installation/README.md","label":""},
-                    "current":{"date":"","path":"mediatorserver/installation/README.md","label":""}
+    "mediatorserver": {
+        "nodes": {
+            "installation": {
+                "versions": {
+                    "0.4.0": {
+                        "date": "",
+                        "path": "mediatorserver/installation/README.md",
+                        "label": ""
+                    },
+                    "current": {
+                        "date": "",
+                        "path": "mediatorserver/installation/README.md",
+                        "label": ""
+                    }
                 },
-                "label":"Installation"
+                "label": "Installation"
             },
-            "mediator":{
-                "versions":{
-                    "0.4.0":{"date":"","path":"mediatorserver/mediator/README.md","label":""},
-                    "current":{"date":"","path":"mediatorserver/mediator/README.md","label":""}
+            "mediator": {
+                "versions": {
+                    "0.4.0": {
+                        "date": "",
+                        "path": "mediatorserver/mediator/README.md",
+                        "label": ""
+                    },
+                    "current": {
+                        "date": "",
+                        "path": "mediatorserver/mediator/README.md",
+                        "label": ""
+                    }
                 },
-                "label":"Mediator"
+                "label": "Mediator"
             }
         },
-        "versions":{
-            "0.4.0":{"date":"","path":"mediatorserver/README.md","label":""},
-            "current":{"date":"","path":"mediatorserver/README.md","label":""}
+        "versions": {
+            "0.4.0": {
+                "date": "",
+                "path": "mediatorserver/README.md",
+                "label": ""
+            },
+            "current": {
+                "date": "",
+                "path": "mediatorserver/README.md",
+                "label": ""
+            }
         },
-        "label":"MediatorServer"
+        "label": "MediatorServer"
     },
     "faq": {
         "versions": {
         },
         "label": "Abbreviations"
     }
-}
+}
\ No newline at end of file
index 8c8bc45..d8c3f41 100644 (file)
@@ -41,5 +41,6 @@
         <module>apigateway</module>
         <module>websocketmanager2</module>
         <module>helpserver</module>
+        <module>data-provider</module>
     </modules>
 </project>
index 3ce6d3f..f7c33dd 100644 (file)
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>single-feature-parent</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
+  <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+  <artifactId>sdnr-wt-websocketmanager2-feature</artifactId>
+  <version>0.7.0-SNAPSHOT</version>
+  <packaging>feature</packaging>
+  <name>ccsdk-features-sdnr-wt :: ${project.artifactId} :: feature</name>
 
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-websocketmanager2-feature</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>feature</packaging>
+  <parent>
+    <groupId>org.onap.ccsdk.parent</groupId>
+    <artifactId>single-feature-parent</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
 
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId} :: feature</name>
-
-    <dependencyManagement>
-        <dependencies>
-
-            <dependency>
-                <groupId>org.opendaylight.controller</groupId>
-                <artifactId>mdsal-artifacts</artifactId>
-                <version>${odl.controller.mdsal.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
+  <dependencyManagement>
     <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>sdnr-wt-websocketmanager2-model</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>sdnr-wt-websocketmanager2-provider</artifactId>
-            <version>${project.version}</version>
-        </dependency>
+      <dependency>
+        <groupId>org.opendaylight.controller</groupId>
+        <artifactId>mdsal-artifacts</artifactId>
+        <version>${odl.controller.mdsal.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
     </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>sdnr-wt-websocketmanager2-model</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>sdnr-wt-websocketmanager2-provider</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
 </project>
index dfedca5..e363be3 100755 (executable)
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>odlparent-lite</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
+  <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+  <artifactId>sdnr-wt-websocketmanager2-installer</artifactId>
+  <version>0.7.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
 
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-websocketmanager2-installer</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
+  <parent>
+    <groupId>org.onap.ccsdk.parent</groupId>
+    <artifactId>odlparent-lite</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
 
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
+  <properties>
+    <application.name>sdnr-wt-websocketmanager2</application.name>
+    <include.transitive.dependencies>false</include.transitive.dependencies>
+  </properties>
 
-    <properties>
-        <application.name>sdnr-wt-websocketmanager2</application.name>
-        <include.transitive.dependencies>false</include.transitive.dependencies>
-    </properties>
+  <dependencies>
+    <dependency>
+      <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+      <artifactId>${application.name}-feature</artifactId>
+      <version>${project.version}</version>
+      <type>xml</type>
+      <classifier>features</classifier>
+      <exclusions>
+        <exclusion>
+          <groupId>*</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+      <artifactId>${application.name}-provider</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
 
-    <dependencies>
-        <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-            <artifactId>${application.name}-feature</artifactId>
-            <version>${project.version}</version>
-            <type>xml</type>
-            <classifier>features</classifier>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-            <artifactId>${application.name}-provider</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>maven-repo-zip</id>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <phase>package</phase>
-                        <configuration>
-                            <attach>true</attach>
-                            <finalName>stage/${application.name}-${project.version}</finalName>
-                            <descriptors>
-                                <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
-                            </descriptors>
-                            <appendAssemblyId>true</appendAssemblyId>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <executions>
-                    <!--           <execution> -->
-                    <!--             <id>copy-dependencies</id> -->
-                    <!--             <goals> -->
-                    <!--               <goal>copy-dependencies</goal> -->
-                    <!--             </goals> -->
-                    <!--             <phase>prepare-package</phase> -->
-                    <!--             <configuration> -->
-                    <!--               <transitive>false</transitive> -->
-                    <!--               <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> -->
-                    <!--               <overWriteReleases>false</overWriteReleases> -->
-                    <!--               <overWriteSnapshots>true</overWriteSnapshots> -->
-                    <!--               <overWriteIfNewer>true</overWriteIfNewer> -->
-                    <!--               <useRepositoryLayout>true</useRepositoryLayout> -->
-                    <!--               <addParentPoms>false</addParentPoms> -->
-                    <!--               <copyPom>false</copyPom> -->
-                    <!--               <includeArtifactIds>${application.name}-model,${application.name}-provider,${application.name}</includeArtifactIds> -->
-                    <!--               <scope>provided</scope> -->
-                    <!--             </configuration> -->
-                    <!--           </execution> -->
-                    <execution>
-                        <id>copy-nested-dependencies</id>
-                        <goals>
-                            <goal>copy-dependencies</goal>
-                        </goals>
-                        <phase>prepare-package</phase>
-                        <configuration>
-                            <transitive>true</transitive>
-                            <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
-                            <overWriteReleases>false</overWriteReleases>
-                            <overWriteSnapshots>true</overWriteSnapshots>
-                            <overWriteIfNewer>true</overWriteIfNewer>
-                            <useRepositoryLayout>true</useRepositoryLayout>
-                            <addParentPoms>false</addParentPoms>
-                            <copyPom>false</copyPom>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>maven-repo-zip</id>
+            <goals>
+              <goal>single</goal>
+            </goals>
+            <phase>package</phase>
+            <configuration>
+              <attach>true</attach>
+              <finalName>stage/${application.name}-${project.version}</finalName>
+              <descriptors>
+                <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
+              </descriptors>
+              <appendAssemblyId>true</appendAssemblyId>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+<!--           <execution> -->
+<!--             <id>copy-dependencies</id> -->
+<!--             <goals> -->
+<!--               <goal>copy-dependencies</goal> -->
+<!--             </goals> -->
+<!--             <phase>prepare-package</phase> -->
+<!--             <configuration> -->
+<!--               <transitive>false</transitive> -->
+<!--               <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> -->
+<!--               <overWriteReleases>false</overWriteReleases> -->
+<!--               <overWriteSnapshots>true</overWriteSnapshots> -->
+<!--               <overWriteIfNewer>true</overWriteIfNewer> -->
+<!--               <useRepositoryLayout>true</useRepositoryLayout> -->
+<!--               <addParentPoms>false</addParentPoms> -->
+<!--               <copyPom>false</copyPom> -->
+<!--               <includeArtifactIds>${application.name}-model,${application.name}-provider,${application.name}</includeArtifactIds> -->
+<!--               <scope>provided</scope> -->
+<!--             </configuration> -->
+<!--           </execution> -->
+          <execution>
+            <id>copy-nested-dependencies</id>
+            <goals>
+              <goal>copy-dependencies</goal>
+            </goals>
+            <phase>prepare-package</phase>
+            <configuration>
+              <transitive>true</transitive>
+              <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
+              <overWriteReleases>false</overWriteReleases>
+              <overWriteSnapshots>true</overWriteSnapshots>
+              <overWriteIfNewer>true</overWriteIfNewer>
+              <useRepositoryLayout>true</useRepositoryLayout>
+              <addParentPoms>false</addParentPoms>
+              <copyPom>false</copyPom>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
index fb82618..fed8b2e 100644 (file)
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>binding-parent</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
-
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-websocketmanager2-model</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+  <artifactId>sdnr-wt-websocketmanager2-model</artifactId>
+  <version>0.7.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+  <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
+  <parent>
+    <groupId>org.onap.ccsdk.parent</groupId>
+    <artifactId>binding-parent</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
 </project>
index 9c37986..f02ce11 100755 (executable)
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+       <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>odlparent-lite</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
+       <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+       <artifactId>sdnr-wt-websocketmanager2-top</artifactId>
+       <version>0.7.0-SNAPSHOT</version>
+       <packaging>pom</packaging>
+       <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
 
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-websocketmanager2-top</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
+       <parent>
+               <groupId>org.onap.ccsdk.parent</groupId>
+               <artifactId>odlparent-lite</artifactId>
+               <version>1.5.1-SNAPSHOT</version>
+               <relativePath/>
+       </parent>
 
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
+       <properties>
+               <feature-name>sdnr-wt-websocketmanager2</feature-name>
+       </properties>
 
-    <modules>
-        <module>model</module>
-        <module>provider</module>
-        <module>feature</module>
-        <module>installer</module>
-    </modules>
+       <modules>
+               <module>model</module>
+               <module>provider</module>
+               <module>feature</module>
+               <module>installer</module>
+       </modules>
 
-    <properties>
-        <feature-name>sdnr-wt-websocketmanager2</feature-name>
-    </properties>
 </project>
index 20cf964..11d212f 100644 (file)
     OF ANY KIND, either express or implied. See the License for the specific
     language governing permissions and limitations under the License. ============LICENSE_END========================================================= -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+  <artifactId>sdnr-wt-websocketmanager2-provider</artifactId>
+  <version>0.7.0-SNAPSHOT</version>
+  <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
+  <packaging>bundle</packaging>
+  <parent>
+    <groupId>org.onap.ccsdk.parent</groupId>
+    <artifactId>binding-parent</artifactId>
+    <version>1.5.1-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
+  <properties>
+    <maven.javadoc.skip>true</maven.javadoc.skip>
+    <checkstyle.skip>true</checkstyle.skip>
+  </properties>
+  <licenses>
+    <license>
+      <name>Apache License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0</url>
+    </license>
+  </licenses>
+<!--     <dependencyManagement> -->
+<!--         <dependencies> -->
+<!--             <dependency> -->
+<!--                 <groupId>org.opendaylight.controller</groupId> -->
+<!--                 <artifactId>mdsal-artifacts</artifactId> -->
+<!--                 <version>1.6.1</version> -->
+<!--                 <type>pom</type> -->
+<!--                 <scope>import</scope> -->
+<!--             </dependency> -->
+<!--         </dependencies> -->
+<!--     </dependencyManagement> -->
 
-    <parent>
-        <groupId>org.onap.ccsdk.parent</groupId>
-        <artifactId>binding-parent</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-        <relativePath/>
-    </parent>
-
-    <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
-    <artifactId>sdnr-wt-websocketmanager2-provider</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-
-    <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
-    <licenses>
-        <license>
-            <name>Apache License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0</url>
-        </license>
-    </licenses>
-
-    <properties>
-        <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
-    </properties>
-
-    <!--     <dependencyManagement> -->
-    <!--         <dependencies> -->
-    <!--             <dependency> -->
-    <!--                 <groupId>org.opendaylight.controller</groupId> -->
-    <!--                 <artifactId>mdsal-artifacts</artifactId> -->
-    <!--                 <version>1.6.1</version> -->
-    <!--                 <type>pom</type> -->
-    <!--                 <scope>import</scope> -->
-    <!--             </dependency> -->
-    <!--         </dependencies> -->
-    <!--     </dependencyManagement> -->
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>sdnr-wt-websocketmanager2-model</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.jetty.websocket</groupId>
-            <artifactId>websocket-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.jetty.websocket</groupId>
-            <artifactId>websocket-servlet</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-transport</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-all</artifactId>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>sdnr-wt-websocketmanager2-model</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty.websocket</groupId>
+      <artifactId>websocket-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty.websocket</groupId>
+      <artifactId>websocket-servlet</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.netty</groupId>
+      <artifactId>netty-transport</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.netty</groupId>
+      <artifactId>netty-all</artifactId>
             <!-- <version>${netty.version}</version> -->
-        </dependency>
-        <dependency>
-            <groupId>org.json</groupId>
-            <artifactId>json</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.typesafe.akka</groupId>
-            <artifactId>akka-actor_2.12</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.typesafe.akka</groupId>
-            <artifactId>akka-cluster_2.12</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.java-websocket</groupId>
-            <artifactId>Java-WebSocket</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.json</groupId>
+      <artifactId>json</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.typesafe.akka</groupId>
+      <artifactId>akka-actor_2.12</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.typesafe.akka</groupId>
+      <artifactId>akka-cluster_2.12</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.java-websocket</groupId>
+      <artifactId>Java-WebSocket</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
             <!-- <version>2.23.4</version> -->
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-binding-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-server</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-servlet</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <!--     <dependency> -->
-        <!--       <groupId>org.eclipse.jetty.websocket</groupId> -->
-        <!--       <artifactId>websocket-api</artifactId> -->
-        <!--       <version>9.3.24.v20180605</version> -->
-        <!--     </dependency> -->
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>sal-binding-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.compendium</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-server</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-servlet</artifactId>
+      <scope>test</scope>
+    </dependency>
+<!--     <dependency> -->
+<!--       <groupId>org.eclipse.jetty.websocket</groupId> -->
+<!--       <artifactId>websocket-api</artifactId> -->
+<!--       <version>9.3.24.v20180605</version> -->
+<!--     </dependency> -->
         <!-- To run websockets in embedded server -->
         <!-- <dependency> -->
         <!-- <groupId>org.eclipse.jetty.websocket</groupId> -->
         <!-- <version>9.3.24.v20180605</version> -->
         <!-- <scope>test</scope> -->
         <!-- </dependency> -->
-    </dependencies>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.8</source>
+          <target>1.8</target>
+        </configuration>
+      </plugin>
+    </plugins>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+  </build>
 </project>
index 2c54d2a..881ee1a 100644 (file)
  ******************************************************************************/
 package org.onap.ccsdk.features.sdnr.wt.websocketmanager2;
 
+import com.google.common.util.concurrent.ListenableFuture;
 import javax.servlet.ServletException;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketmanagerService;
 import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
 import org.osgi.service.http.HttpService;
 import org.osgi.service.http.NamespaceException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class WebSocketManagerProvider extends Blueprint {
+public class WebSocketManagerProvider extends Blueprint implements WebsocketmanagerService {
 
     private static final Logger LOG = LoggerFactory.getLogger(WebSocketManagerProvider.class);
     private static final String APPLICATION_NAME = WebSocketManagerProvider.class.getName();
@@ -97,4 +103,14 @@ public class WebSocketManagerProvider extends Blueprint {
     public void setWsServlet(WebSocketManager wsServlet) {
         this.wsServlet = wsServlet;
     }
+
+    @Override
+    public ListenableFuture<RpcResult<WebsocketEventOutput>> websocketEvent(WebsocketEventInput input) {
+        if (wsServlet != null) {
+                       return wsServlet.websocketEvent(input);
+               } else {
+            RpcResultBuilder<WebsocketEventOutput> result = RpcResultBuilder.failed();
+            return result.withError(ErrorType.APPLICATION, "Not intialized").buildFuture();
+        }
+    }
 }
diff --git a/sdnr/wt/websocketmanager2/provider/src/main/resources/OSGI-INF/blueprint/impl-blueprint.xml b/sdnr/wt/websocketmanager2/provider/src/main/resources/OSGI-INF/blueprint/impl-blueprint.xml
deleted file mode 100644 (file)
index 5e95b7b..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ============LICENSE_START========================================================================
-  ONAP : ccsdk feature sdnr wt
-  =================================================================================================
-  Copyright (C) 2019 highstreet technologies GmbH 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==========================================================================
--->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-  xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
-  odl:use-default-for-reference-types="true">
-
-  <reference id="rpcProviderRegistry" interface="org.opendaylight.mdsal.binding.api.RpcProviderService" odl:type="default" />
-
-  <bean id="provider" class="org.onap.ccsdk.features.sdnr.wt.websocketmanager2.WebSocketManagerProvider" init-method="init" destroy-method="close">
-    <property name="rpcProviderRegistry" ref="rpcProviderRegistry" />
-  </bean>
-
-  <reference id="onBindService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService">
-    <reference-listener ref="provider" bind-method="onBindService" unbind-method="onUnbindService" />
-  </reference>
-
-</blueprint>
index 5e95b7b..32b19a6 100644 (file)
@@ -30,4 +30,8 @@
     <reference-listener ref="provider" bind-method="onBindService" unbind-method="onUnbindService" />
   </reference>
 
+  <service id="registerWebsocketmanagerService"
+           interface="org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketmanagerService"
+           ref="provider" />
+
 </blueprint>