You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by sm...@apache.org on 2007/12/11 12:26:58 UTC

svn commit: r603210 - in /harmony/enhanced/buildtest/branches/2.0/tests/reliability: run/exclude.linux_x86_64 run/run.normal.mode.settings.xml src/java/org/apache/harmony/test/reliability/api/net/HttpConnectionTest.java

Author: smishura
Date: Tue Dec 11 03:26:48 2007
New Revision: 603210

URL: http://svn.apache.org/viewvc?rev=603210&view=rev
Log:
Apply patch from HARMONY-5266:
([buildtest][reliability] HttpConnectionTest fails when www.apache.org is not accessible)

Modified:
    harmony/enhanced/buildtest/branches/2.0/tests/reliability/run/exclude.linux_x86_64
    harmony/enhanced/buildtest/branches/2.0/tests/reliability/run/run.normal.mode.settings.xml
    harmony/enhanced/buildtest/branches/2.0/tests/reliability/src/java/org/apache/harmony/test/reliability/api/net/HttpConnectionTest.java

Modified: harmony/enhanced/buildtest/branches/2.0/tests/reliability/run/exclude.linux_x86_64
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/tests/reliability/run/exclude.linux_x86_64?rev=603210&r1=603209&r2=603210&view=diff
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/tests/reliability/run/exclude.linux_x86_64 (original)
+++ harmony/enhanced/buildtest/branches/2.0/tests/reliability/run/exclude.linux_x86_64 Tue Dec 11 03:26:48 2007
@@ -2,7 +2,6 @@
 ##           20071030 test run failures
 api.kernel.thread.VolatileVariableTest.DekkerTest 
 api.net.DatagramTest 
-api.net.HttpConnectionTest 
 api.net.SingleConnectTest 
 api.nio.buffers.ByteBufferallocateTest 
 api.nio.channels.filechannel.MappedByteBufferForceTest 

Modified: harmony/enhanced/buildtest/branches/2.0/tests/reliability/run/run.normal.mode.settings.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/tests/reliability/run/run.normal.mode.settings.xml?rev=603210&r1=603209&r2=603210&view=diff
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/tests/reliability/run/run.normal.mode.settings.xml (original)
+++ harmony/enhanced/buildtest/branches/2.0/tests/reliability/run/run.normal.mode.settings.xml Tue Dec 11 03:26:48 2007
@@ -517,7 +517,7 @@
 <!-- api.net.HttpConnectionTest -->
 
 	    <!-- URLs to scan  -->
-	    <property name="api.net.HttpConnectionTest.URLs" value="http://harmony.apache.org/;http://issues.apache.org/jira/browse/HARMONY;http://harmony.apache.org/quickhelp_contributors.html" />
+	    <property name="api.net.HttpConnectionTest.URLs" value="" />
 
 <!-- vm.classloading.ClassUnloadingTest -->
 

Modified: harmony/enhanced/buildtest/branches/2.0/tests/reliability/src/java/org/apache/harmony/test/reliability/api/net/HttpConnectionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/tests/reliability/src/java/org/apache/harmony/test/reliability/api/net/HttpConnectionTest.java?rev=603210&r1=603209&r2=603210&view=diff
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/tests/reliability/src/java/org/apache/harmony/test/reliability/api/net/HttpConnectionTest.java (original)
+++ harmony/enhanced/buildtest/branches/2.0/tests/reliability/src/java/org/apache/harmony/test/reliability/api/net/HttpConnectionTest.java Tue Dec 11 03:26:48 2007
@@ -24,12 +24,16 @@
 
 import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.InetSocketAddress;
 import java.net.MalformedURLException;
 import java.net.Proxy;
 import java.net.URL;
+import java.net.Socket;
+import java.net.ServerSocket;
 import java.util.regex.Pattern;
 
 import org.apache.harmony.test.reliability.share.Test;
@@ -37,7 +41,7 @@
 /*
  * Goal: Test HttpURLConnection functionality
  *
- *  passed parameters:
+ *  passed optional parameters:
  *  parameter[0] - urls for web pages you want to get, all urls are to be listed consequently
  *  via ";" with no blanks or tabs
  *  E.g http://harmony.apache.org/;http://issues.apache.org/jira/browse/HARMONY
@@ -49,13 +53,14 @@
  *   
  *  No crash, hang or fail is excpected.
  *  
- *  Note: All input parameters are to be set properly as test could fail due to wrong 
- *  set proxy or Url address.
+ *  If no parameters are set then internal stab http server is started for testing.
  *  */
 
 public class HttpConnectionTest extends Test{
+    static volatile boolean failed = false;
     String[] testedUrlStrings = null;
     Proxy prx = null;
+    HttpServerStub sPort = null;
 
     public static void main(String[] params){
         System.exit(new HttpConnectionTest().test(params));
@@ -63,8 +68,16 @@
     
     public int test(String[] params){
         parseParams(params);
+
+
         if (testedUrlStrings == null){
-            return fail("Urls to test are not set");
+            sPort = new HttpServerStub();
+            if (!sPort.isAlive())
+            {
+                return fail("Failed to start server");
+            }
+            testedUrlStrings = new String[1];
+            testedUrlStrings[0] = "http://localhost:" + sPort.port + "/";
         }
 
         for (int i=0; i<testedUrlStrings.length;i++){
@@ -79,7 +92,11 @@
                 return fail("FAILED");
             }
         }
-        
+
+        if (failed == true)
+        {
+            return fail("FAILED");
+        }
         return pass("OK");
     }
     
@@ -115,11 +132,12 @@
             while((buf = br.readLine()) != null){
                 resultedString += buf;
             }
-            //System.out.println(resultedString);
+            // System.out.println("resultedString:" + resultedString);
             hur.disconnect();
             
         } catch (IOException e) {
             log.add("Failed to connect to " + hur.getURL() + " : " + e.getMessage());
+            e.printStackTrace();
             return false;
         }
         
@@ -138,3 +156,90 @@
         
     }
 }
+
+class HttpServerStub extends Thread
+{
+    int port = 0;
+    ServerSocket ss = null;
+    boolean started = false;
+    final static int sizeOfMessage = 1000;
+    String content = null;
+    HttpServerStub()
+    {
+        try
+        {
+            ss = new ServerSocket(0);
+        }
+        catch (IOException e1)
+        {
+            return;
+        }
+        port = ss.getLocalPort();
+        start();
+        started = true;
+    }
+    public void close()
+    {
+        try {
+            if (started)
+            {
+                started = false;
+                ss.close(); 
+            }
+        }
+        catch (IOException ioe)
+        {
+        }
+    }
+    public void run()
+    {
+        try
+        {
+            Socket socket = ss.accept();
+            try
+            {
+                InputStream in = socket.getInputStream();
+                OutputStream out = socket.getOutputStream();
+
+                byte[] buf = new byte[sizeOfMessage];
+                int red = in.read(buf, 0, sizeOfMessage);
+                // The content is so big because otherwise the test is too fast and
+                // could exhaust all operating system sockets causing the failure 
+                content = "Content-Type:   text/html;charset=iso-8859-1\n\n<html>\n<body>\n";
+                for (int l = 0; l < 2000; l++)
+                {
+                    content += "<p>Hello, Word!\n";
+                }
+                content += "</body>\n</html>\n";
+                out.write(content.getBytes());
+            }
+            catch (IOException e)
+            {
+                HttpConnectionTest.log.add("Server thread " + getId() + " could not get streams: " + e.getMessage());
+                e.printStackTrace();
+                HttpConnectionTest.failed = true;
+                return;
+            }
+            socket.close();
+        }
+        catch (IOException e)
+        {
+            HttpConnectionTest.log.add("Server thread " + getId() + " could not accept request: " + e.getMessage());
+            e.printStackTrace();
+            HttpConnectionTest.failed = true;
+            return;
+        }
+
+        try
+        {
+            ss.close();
+        }
+        catch (IOException e)
+        {
+            HttpConnectionTest.log.add("Failed to close ServerSocket on port " + port);
+            HttpConnectionTest.failed = true;
+            return;
+        }
+    }
+}
+