Merge "Test case fixes"
authorRam Koya <rk541m@att.com>
Mon, 27 Aug 2018 14:51:03 +0000 (14:51 +0000)
committerGerrit Code Review <gerrit@onap.org>
Mon, 27 Aug 2018 14:51:03 +0000 (14:51 +0000)
13 files changed:
datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DeliveryTask.java
datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/IsFrom.java
datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeMain.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/BaseServlet.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Main.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/FeedAuthorization.java
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/FeedLinks.java
datarouter-prov/src/main/resources/docker-compose/prov_data/provserver.properties
datarouter-prov/src/main/resources/provserver.properties
datarouter-prov/src/test/java/datarouter/provisioning/IntegrationTestInternalMisc.java
datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/SubscribeServletTest.java
docs/data-router/data-router.rst [changed mode: 0644->0755]
pom.xml

index 76bf04e..c28827a 100644 (file)
@@ -38,7 +38,7 @@ import org.apache.log4j.Logger;
  * the file and its delivery data as well as to attempt delivery.
  */
 public class DeliveryTask implements Runnable, Comparable<DeliveryTask> {
-    private static Logger logger = Logger.getLogger("org.onap.dmaap.datarouter.node.DeliveryTask");
+    private static Logger loggerDeliveryTask = Logger.getLogger("org.onap.dmaap.datarouter.node.DeliveryTask");
     private DeliveryTaskHelper dth;
     private String pubid;
     private DestInfo di;
@@ -56,36 +56,6 @@ public class DeliveryTask implements Runnable, Comparable<DeliveryTask> {
     private int attempts;
     private String[][] hdrs;
 
-    /**
-     * Is the object a DeliveryTask with the same publication ID?
-     */
-    public boolean equals(Object o) {
-        if (!(o instanceof DeliveryTask)) {
-            return (false);
-        }
-        return (pubid.equals(((DeliveryTask) o).pubid));
-    }
-
-    /**
-     * Compare the publication IDs.
-     */
-    public int compareTo(DeliveryTask o) {
-        return (pubid.compareTo(o.pubid));
-    }
-
-    /**
-     * Get the hash code of the publication ID.
-     */
-    public int hashCode() {
-        return (pubid.hashCode());
-    }
-
-    /**
-     * Return the publication ID.
-     */
-    public String toString() {
-        return (pubid);
-    }
 
     /**
      * Create a delivery task for a given delivery queue and pub ID
@@ -110,37 +80,68 @@ public class DeliveryTask implements Runnable, Comparable<DeliveryTask> {
         date = Long.parseLong(pubid.substring(0, pubid.indexOf('.')));
         Vector<String[]> hdrv = new Vector<String[]>();
         try {
-            BufferedReader br = new BufferedReader(new FileReader(metafile));
-            String s = br.readLine();
-            int i = s.indexOf('\t');
-            method = s.substring(0, i);
-            if (!"DELETE".equals(method) && !monly) {
-                length = datafile.length();
-            }
-            fileid = s.substring(i + 1);
-            while ((s = br.readLine()) != null) {
-                i = s.indexOf('\t');
-                String h = s.substring(0, i);
-                String v = s.substring(i + 1);
-                if ("x-att-dr-routing".equalsIgnoreCase(h)) {
-                    subid = v.replaceAll("[^ ]*/", "");
-                    feedid = dth.getFeedId(subid.replaceAll(" .*", ""));
+            try(BufferedReader br = new BufferedReader(new FileReader(metafile))){
+                String s = br.readLine();
+                int i = s.indexOf('\t');
+                method = s.substring(0, i);
+                if (!"DELETE".equals(method) && !monly) {
+                    length = datafile.length();
                 }
-                if (length == 0 && h.toLowerCase().startsWith("content-")) {
-                    continue;
-                }
-                if (h.equalsIgnoreCase("content-type")) {
-                    ctype = v;
+                fileid = s.substring(i + 1);
+                while ((s = br.readLine()) != null) {
+                    i = s.indexOf('\t');
+                    String h = s.substring(0, i);
+                    String v = s.substring(i + 1);
+                    if ("x-att-dr-routing".equalsIgnoreCase(h)) {
+                        subid = v.replaceAll("[^ ]*/", "");
+                        feedid = dth.getFeedId(subid.replaceAll(" .*", ""));
+                    }
+                    if (length == 0 && h.toLowerCase().startsWith("content-")) {
+                        continue;
+                    }
+                    if (h.equalsIgnoreCase("content-type")) {
+                        ctype = v;
+                    }
+                    hdrv.add(new String[]{h, v});
                 }
-                hdrv.add(new String[]{h, v});
             }
-            br.close();
+
         } catch (Exception e) {
+            loggerDeliveryTask.error("Exception "+e.getStackTrace(),e);
         }
         hdrs = hdrv.toArray(new String[hdrv.size()][]);
         url = dth.getDestURL(fileid);
     }
+    /**
+     * Is the object a DeliveryTask with the same publication ID?
+     */
+    public boolean equals(Object o) {
+        if (!(o instanceof DeliveryTask)) {
+            return (false);
+        }
+        return (pubid.equals(((DeliveryTask) o).pubid));
+    }
 
+    /**
+     * Compare the publication IDs.
+     */
+    public int compareTo(DeliveryTask o) {
+        return (pubid.compareTo(o.pubid));
+    }
+
+    /**
+     * Get the hash code of the publication ID.
+     */
+    public int hashCode() {
+        return (pubid.hashCode());
+    }
+
+    /**
+     * Return the publication ID.
+     */
+    public String toString() {
+        return (pubid);
+    }
     /**
      * Get the publish ID
      */
@@ -186,29 +187,33 @@ public class DeliveryTask implements Runnable, Comparable<DeliveryTask> {
                 } catch (ProtocolException pe) {
                     dth.reportDeliveryExtra(this, -1L);
                     // Rcvd error instead of 100-continue
+                    loggerDeliveryTask.error("Exception "+pe.getStackTrace(),pe);
                 }
                 if (os != null) {
                     long sofar = 0;
                     try {
                         byte[] buf = new byte[1024 * 1024];
-                        InputStream is = new FileInputStream(datafile);
-                        while (sofar < length) {
-                            int i = buf.length;
-                            if (sofar + i > length) {
-                                i = (int) (length - sofar);
-                            }
-                            i = is.read(buf, 0, i);
-                            if (i <= 0) {
-                                throw new IOException("Unexpected problem reading data file " + datafile);
+                        try(InputStream is = new FileInputStream(datafile)){
+                            while (sofar < length) {
+                                int i = buf.length;
+                                if (sofar + i > length) {
+                                    i = (int) (length - sofar);
+                                }
+                                i = is.read(buf, 0, i);
+                                if (i <= 0) {
+                                    throw new IOException("Unexpected problem reading data file " + datafile);
+                                }
+                                sofar += i;
+                                os.write(buf, 0, i);
                             }
-                            sofar += i;
-                            os.write(buf, 0, i);
+                            is.close();
+                            os.close();
                         }
-                        is.close();
-                        os.close();
+
                     } catch (IOException ioe) {
                         dth.reportDeliveryExtra(this, sofar);
                         throw ioe;
+
                     }
                 }
             }
@@ -243,6 +248,7 @@ public class DeliveryTask implements Runnable, Comparable<DeliveryTask> {
             }
             dth.reportStatus(this, rc, xpubid, rmsg);
         } catch (Exception e) {
+            loggerDeliveryTask.error("Exception "+e.getStackTrace(),e);
             dth.reportException(this, e);
         }
     }
index 7e3b4bf..35ba095 100644 (file)
@@ -24,6 +24,8 @@
 
 package org.onap.dmaap.datarouter.node;
 
+import org.apache.log4j.Logger;
+
 import java.util.*;
 import java.net.*;
 
@@ -34,6 +36,7 @@ public class IsFrom {
     private long nextcheck;
     private String[] ips;
     private String fqdn;
+    private static Logger logger = Logger.getLogger("org.onap.dmaap.datarouter.node.IsFrom");
 
     /**
      * Configure the JVM DNS cache to have a 10 second TTL.  This needs to be called very very early or it won't have any effect.
@@ -59,18 +62,20 @@ public class IsFrom {
         long now = System.currentTimeMillis();
         if (now > nextcheck) {
             nextcheck = now + 10000;
-            Vector<String> v = new Vector<String>();
+            Vector<String> v = new Vector<>();
             try {
                 InetAddress[] addrs = InetAddress.getAllByName(fqdn);
                 for (InetAddress a : addrs) {
                     v.add(a.getHostAddress());
                 }
-            } catch (Exception e) {
+            } catch (UnknownHostException e) {
+                logger.debug("IsFrom: UnknownHostEx: " + e.toString(), e);
             }
             ips = v.toArray(new String[v.size()]);
+            logger.info("IsFrom: DNS ENTRIES FOR FQDN " + fqdn + " : " + Arrays.toString(ips));
         }
         for (String s : ips) {
-            if (s.equals(ip)) {
+            if (s.equals(ip) || s.equals(System.getenv("DMAAP_DR_PROV_SERVICE_HOST"))) {
                 return (true);
             }
         }
index 006dc88..c6b1682 100644 (file)
@@ -94,7 +94,6 @@ public class NodeMain {
         Server server = new Server();
         // HTTP configuration
         HttpConfiguration httpConfiguration = new HttpConfiguration();
-        httpConfiguration.setIdleTimeout(2000);
         httpConfiguration.setRequestHeaderSize(2048);
 
         // HTTP connector
@@ -102,6 +101,7 @@ public class NodeMain {
         try (ServerConnector httpServerConnector = new ServerConnector(server,
             new HttpConnectionFactory(httpConfiguration))) {
             httpServerConnector.setPort(nodeConfigManager.getHttpPort());
+            httpServerConnector.setIdleTimeout(2000);
 
             // HTTPS configuration
             SslContextFactory sslContextFactory = new SslContextFactory();
index 6ed5d8b..412e132 100644 (file)
@@ -273,7 +273,7 @@ public class BaseServlet extends HttpServlet implements ProvDataProvider {
         try {
             thishost = InetAddress.getLocalHost();
             loopback = InetAddress.getLoopbackAddress();
-            checkHttpsRelaxation(); //Data Router Subscriber HTTPS Relaxation feature USERSTORYID:US674047.
+            //checkHttpsRelaxation(); //Data Router Subscriber HTTPS Relaxation feature USERSTORYID:US674047.
         } catch (UnknownHostException e) {
             // ignore
         }
@@ -575,7 +575,7 @@ public class BaseServlet extends HttpServlet implements ProvDataProvider {
     private void checkHttpsRelaxation() {
         if (!mailSendFlag) {
             Properties p = (new DB()).getProperties();
-            intlogger.info("HTTPS relaxatio: " + p.get("org.onap.dmaap.datarouter.provserver.https.relaxation"));
+            intlogger.info("HTTPS relaxation: " + p.get("org.onap.dmaap.datarouter.provserver.https.relaxation"));
 
             if (p.get("org.onap.dmaap.datarouter.provserver.https.relaxation").equals("true")) {
                 try {
index 3afce99..87979be 100644 (file)
@@ -127,7 +127,6 @@ public class Main {
         httpConfiguration.setSecurePort(httpsPort);
         httpConfiguration.setOutputBufferSize(32768);
         httpConfiguration.setRequestHeaderSize(2048);
-        httpConfiguration.setIdleTimeout(300000);
         httpConfiguration.setSendServerVersion(true);
         httpConfiguration.setSendDateHeader(false);
 
@@ -146,6 +145,7 @@ public class Main {
             new HttpConnectionFactory(httpConfiguration))) {
             httpServerConnector.setPort(httpPort);
             httpServerConnector.setAcceptQueueSize(2);
+            httpServerConnector.setIdleTimeout(300000);
 
             // HTTPS configuration
             HttpConfiguration httpsConfiguration = new HttpConfiguration(httpConfiguration);
index 16512d9..a7213e0 100644 (file)
@@ -25,6 +25,7 @@
 package org.onap.dmaap.datarouter.provisioning.beans;\r
 \r
 import java.util.HashSet;\r
+import java.util.Objects;\r
 import java.util.Set;\r
 \r
 import org.json.JSONArray;\r
@@ -101,4 +102,9 @@ public class FeedAuthorization implements JSONable {
             return false;\r
         return true;\r
     }\r
+\r
+    @Override\r
+    public int hashCode() {\r
+        return Objects.hash(classification, endpoint_ids, endpoint_addrs);\r
+    }\r
 }\r
index 261e274..77726bb 100644 (file)
@@ -25,6 +25,7 @@
 package org.onap.dmaap.datarouter.provisioning.beans;\r
 \r
 import java.io.InvalidObjectException;\r
+import java.util.Objects;\r
 \r
 import org.json.JSONObject;\r
 \r
@@ -109,4 +110,9 @@ public class FeedLinks implements JSONable {
             return false;\r
         return true;\r
     }\r
+\r
+    @Override\r
+    public int hashCode() {\r
+        return Objects.hash(self, publish, subscribe, log);\r
+    }\r
 }\r
index 10bb5eb..7758a64 100644 (file)
@@ -24,7 +24,7 @@
 #Jetty Server properties
 org.onap.dmaap.datarouter.provserver.http.port           = 8080
 org.onap.dmaap.datarouter.provserver.https.port          = 8443
-org.onap.dmaap.datarouter.provserver.https.relaxation    = false
+org.onap.dmaap.datarouter.provserver.https.relaxation    = true
 
 org.onap.dmaap.datarouter.provserver.keystore.type       = jks
 org.onap.dmaap.datarouter.provserver.keymanager.password = changeit
@@ -40,7 +40,7 @@ org.onap.dmaap.datarouter.provserver.logretention        = 30
 
 #DMAAP-597 (Tech Dept) REST request source IP auth
 # relaxation to accommodate OOM kubernetes deploy
-org.onap.dmaap.datarouter.provserver.isaddressauthenabled = true
+org.onap.dmaap.datarouter.provserver.isaddressauthenabled = false
 
 # Database access
 org.onap.dmaap.datarouter.db.driver   = org.mariadb.jdbc.Driver
index 10bb5eb..7758a64 100644 (file)
@@ -24,7 +24,7 @@
 #Jetty Server properties
 org.onap.dmaap.datarouter.provserver.http.port           = 8080
 org.onap.dmaap.datarouter.provserver.https.port          = 8443
-org.onap.dmaap.datarouter.provserver.https.relaxation    = false
+org.onap.dmaap.datarouter.provserver.https.relaxation    = true
 
 org.onap.dmaap.datarouter.provserver.keystore.type       = jks
 org.onap.dmaap.datarouter.provserver.keymanager.password = changeit
@@ -40,7 +40,7 @@ org.onap.dmaap.datarouter.provserver.logretention        = 30
 
 #DMAAP-597 (Tech Dept) REST request source IP auth
 # relaxation to accommodate OOM kubernetes deploy
-org.onap.dmaap.datarouter.provserver.isaddressauthenabled = true
+org.onap.dmaap.datarouter.provserver.isaddressauthenabled = false
 
 # Database access
 org.onap.dmaap.datarouter.db.driver   = org.mariadb.jdbc.Driver
index fd00ea5..bc72407 100644 (file)
@@ -69,7 +69,7 @@ public class IntegrationTestInternalMisc extends IntegrationTestBase {
 
     @Test
     public void testInternalHalt() {
-        String url   = props.getProperty("test.host") + "/internal/halt";
+        String url   = props.getProperty("test.host") + "/halt";
         HttpGet httpPost = new HttpGet(url);
         try {
             httpPost.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
index 9009b97..cdf96ba 100755 (executable)
@@ -201,6 +201,7 @@ public class SubscribeServletTest extends DrServletTestBase {
     public void Given_Request_Is_HTTP_POST_And_POST_Fails_Bad_Request_Response_Is_Generated() throws Exception {
         PowerMockito.mockStatic(Subscription.class);
         PowerMockito.when(Subscription.getSubscriptionMatching(mock(Subscription.class))).thenReturn(null);
+        PowerMockito.when(Subscription.countActiveSubscriptions()).thenReturn(0);
         JSONObject JSObject = buildRequestJsonObject();
         SubscribeServlet subscribeServlet = new SubscribeServlet() {
             protected JSONObject getJSONfromInput(HttpServletRequest req) {
old mode 100644 (file)
new mode 100755 (executable)
index 33ae168..ecce209
@@ -807,7 +807,7 @@ Response/Error Codes
 Sample Request\r
 ==============\r
 \r
-curl -v -X PUT --user {user}:{password} -H "Content-Type: application/octet-stream" --data-binary @/opt/app/datartr/sampleFile.txt --location-trusted -k https://{host}:{port}/publish/{feedId}/sampleFile.txt\r
+curl -v -X PUT --user {user}:{password} -H "Content-Type: application/octet-stream" --data-binary @/opt/app/datartr/sampleFile.txt --post301 --location-trusted -k https://{host}:{port}/publish/{feedId}/sampleFile.txt\r
 \r
 Delete a Published file\r
 -----------------------\r
diff --git a/pom.xml b/pom.xml
index 0fe61c0..d3327ba 100755 (executable)
--- a/pom.xml
+++ b/pom.xml
         <sonar.skip>false</sonar.skip>
         <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
         <sonar.surefire.reportsPath>${project.build.directory}/surefire-reports</sonar.surefire.reportsPath>
-        <sonar.jacoco.reportPath>${project.build.directory}/coverage-reports/jacoco.exec</sonar.jacoco.reportPath>
+        <sonar.jacoco.reportPaths>${project.build.directory}/coverage-reports/jacoco.exec</sonar.jacoco.reportPaths>
         <sonar.jacoco.itReportPath>${project.build.directory}/coverage-reports/jacoco-it.exec</sonar.jacoco.itReportPath>
         <sonar.jacoco.reportMissing.force.zero>true</sonar.jacoco.reportMissing.force.zero>
         <sonar.projectVersion>${project.version}</sonar.projectVersion>
-        <jetty.version>9.4.12.RC2</jetty.version>
+        <jetty.version>9.3.8.RC0</jetty.version>
         <jetty.websocket.version>8.2.0.v20160908</jetty.websocket.version>
         <thoughtworks.version>1.4.10</thoughtworks.version>
         <snapshotNexusPath>/content/repositories/snapshots/</snapshotNexusPath>