changeset 491:b26d52214ed6

Fixing several errors which were causing incorrect behaviour causing correct reproduction of PR905
author Jiri Vanek <jvanek@redhat.com>
date Wed, 05 Sep 2012 16:09:40 +0200
parents 2905e24a50bd
children 956ca57557a0
files ChangeLog tests/test-extensions/net/sourceforge/jnlp/LoggingBottleneck.java tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java tests/test-extensions/net/sourceforge/jnlp/ServerLauncher.java tests/test-extensions/net/sourceforge/jnlp/TinyHttpdImpl.java
diffstat 5 files changed, 52 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Sep 05 12:58:30 2012 +0200
+++ b/ChangeLog	Wed Sep 05 16:09:40 2012 +0200
@@ -1,3 +1,16 @@
+2012-09-05  Jiri Vanek  <jvanek@redhat.com>
+
+	Fixing several errors which were causing incorrect behaviour causing
+	correct reproduction of PR905
+	* tests/test-extensions/net/sourceforge/jnlp/LoggingBottleneck.java:
+	added flush for logs
+	* tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java: cleaned
+	and enhanced getUrl* methods.
+	* tests/test-extensions/net/sourceforge/jnlp/ServerLauncher.java: delegated
+	socket
+	* tests/test-extensions/net/sourceforge/jnlp/TinyHttpdImpl.java: fixed
+	processing of question mark. 
+
 2012-09-04  Jiri Vanek  <Jvanek@redhat.com>
             Danesh Dadachanji  <ddadacha@redhat.com>
 
--- a/tests/test-extensions/net/sourceforge/jnlp/LoggingBottleneck.java	Wed Sep 05 12:58:30 2012 +0200
+++ b/tests/test-extensions/net/sourceforge/jnlp/LoggingBottleneck.java	Wed Sep 05 16:09:40 2012 +0200
@@ -201,15 +201,18 @@
     private void stdout(String idded) throws IOException {
         DEFAULT_STDOUT_WRITER.write(idded);
         DEFAULT_STDOUT_WRITER.newLine();
+        DEFAULT_STDOUT_WRITER.flush();
     }
 
     private void stderr(String idded) throws IOException {
         DEFAULT_STDERR_WRITER.write(idded);
         DEFAULT_STDERR_WRITER.newLine();
+        DEFAULT_STDERR_WRITER.flush();
     }
 
     private void stdeall(String idded) throws IOException {
         DEFAULT_STDLOGS_WRITER.write(idded);
         DEFAULT_STDLOGS_WRITER.newLine();
+        DEFAULT_STDLOGS_WRITER.flush();
     }
 }
--- a/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java	Wed Sep 05 12:58:30 2012 +0200
+++ b/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java	Wed Sep 05 16:09:40 2012 +0200
@@ -585,16 +585,24 @@
     }
 
     /**
+     * Ctreate resource on http, on 'localhost' on port on which this cached instance is running
+     * @param resource
+     * @return
+     * @throws MalformedURLException
+     */
+    public URL getUrlUponThisInstance(String resource) throws MalformedURLException {
+        getInstance();
+       return getUrlUponInstance(server,resource);
+    }
+
+    /**
      * Ctreate resource on http, on 'localhost' on port on which this instance is running
      * @param resource
      * @return
      * @throws MalformedURLException
      */
-    public URL getUrlUponThisInstance(String resource) throws MalformedURLException {
-        if (!resource.startsWith("/")) {
-            resource = "/" + resource;
-        }
-        return new URL("http", server.getServerName(), getPort(), resource);
+    public static URL getUrlUponInstance(ServerLauncher instance,String resource) throws MalformedURLException {
+       return instance.getUrl(resource);
     }
 
     /**
--- a/tests/test-extensions/net/sourceforge/jnlp/ServerLauncher.java	Wed Sep 05 12:58:30 2012 +0200
+++ b/tests/test-extensions/net/sourceforge/jnlp/ServerLauncher.java	Wed Sep 05 16:09:40 2012 +0200
@@ -56,6 +56,7 @@
     private boolean running;
     private final Integer port;
     private final File dir;
+    private ServerSocket serverSocket;
 
     public String getServerName() {
         return serverName;
@@ -99,9 +100,9 @@
     public void run() {
         running = true;
         try {
-            ServerSocket s = new ServerSocket(port);
+            serverSocket = new ServerSocket(port);
             while (running) {
-                new TinyHttpdImpl(s.accept(), dir, port);
+                new TinyHttpdImpl(serverSocket.accept(), dir, port);
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -111,10 +112,27 @@
     }
 
     public URL getUrl(String resource) throws MalformedURLException {
+        if (resource == null) {
+            resource = "";
+        }
+        if (resource.trim().length() > 0 && !resource.startsWith("/")) {
+            resource = "/" + resource;
+        }
         return new URL("http", getServerName(), getPort(), resource);
     }
 
     public URL getUrl() throws MalformedURLException {
         return getUrl("");
     }
+
+    public void stop() {
+        this.running = false;
+        if (serverSocket != null) {
+            try {
+                serverSocket.close();
+            } catch (Exception ex) {
+                ServerAccess.logException(ex);
+            }
+        }
+    }
 }
--- a/tests/test-extensions/net/sourceforge/jnlp/TinyHttpdImpl.java	Wed Sep 05 12:58:30 2012 +0200
+++ b/tests/test-extensions/net/sourceforge/jnlp/TinyHttpdImpl.java	Wed Sep 05 16:09:40 2012 +0200
@@ -99,8 +99,9 @@
                         }
                         ServerAccess.logNoReprint("Getting: " + p);
                         p = URLDecoder.decode(p, "UTF-8");
+                        p=p.replaceAll("\\?.*", "");
+                        p = (".".concat((p.endsWith("/")) ? p.concat("index.html") : p)).replace('/', File.separatorChar);
                         ServerAccess.logNoReprint("Serving: " + p);
-                        p = (".".concat((p.endsWith("/")) ? p.concat("index.html") : p)).replace('/', File.separatorChar);
                         File pp = new File(dir, p);
                         int l = (int) pp.length();
                         byte[] b = new byte[l];
@@ -115,7 +116,7 @@
                         } else if (p.toLowerCase().endsWith(".jar")) {
                             content = ct + "application/x-jar\n";
                         }
-                        o.writeBytes("HTTP/1.0 200 OK\nConten" + "t-Length:" + l + "\n" + content + "\n");
+                        o.writeBytes("HTTP/1.0 200 OK\nContent-Length:" + l + "\n" + content + "\n");
                         if (op.startsWith(XSX)) {
                             byte[][] bb = splitArray(b, 10);
                             for (int j = 0; j < bb.length; j++) {