Stepan Mishura wrote: > I glanced through a local server code from HARMONY-57 contribution without > looking into implementation details and ... this made me think. I catch hold > of the following: > 1) The server contains some testing code that looks not good for me
Care to explain? > 2) It is not as simple as I expected - my impression was that a local server > implementation should be very simple because we are not going to test > whether it corresponds to http spec. or not. IMHO, it should only provide a > test case with: > - a port number to open communication > - access to a server's input/output streams to verify a request to a server > or to form a server's response. > Naive? Well, I'm aware that I'm not so experienced in java.net development > and testing and may be I'm wrong. The local server I referenced can be used for a number of the java.net tests, some of which do require more sophisticated behavior, like basic authentication, eTags, etc. I agree that the tests in HARMONY-71 only need something to accept their connection, but I was simply pointing out that there will be a local server we can use if that contribution is accepted into the project, so probably not worth writing another. > I'd like to start with the first issue (BTW, is it ok to discuss details of > contribution implementation if it is not accepted yet?). Sure -- I would expect people to be evaluating it thoroughly so that they can vote the code in/out. The PPMC will shout early if the paperwork implies a contribution is unacceptable. > Can we avoid adding > a code that is specific for some test case to a local server? Does it interfere with what you want to do? In some cases, the test case needs to know what is on the server a priori, so that it can test the client behavior correctly. Regards, Tim > On 2/16/06, Tim Ellison wrote: >> I would rather that you just opened a new JIRA issue for that as it >> doesn't relate to the original problem. >> >> FYI there is a local server incoming in the HARMONY-57 contribution, so >> don't spend any time on it, see: >> >> <HARMONY-57>\Harmony\Harmony_Tests\src\test\java\tests\support\Support_HttpServer.java >> >> Regards, >> Tim >> >> Stepan Mishura (JIRA) wrote: >>> [ >> http://issues.apache.org/jira/browse/HARMONY-71?page=comments#action_12366637] >>> Stepan Mishura commented on HARMONY-71: >>> --------------------------------------- >>> >>> Tim, >>> >>> Added test case (test_setUseCachesZ) depends on network and it fails if >> it can not create connection with apache.org. The same for HARMONY-72. I'm >> going to attach a patch file with a local server in it. Could you reopen >> this JIRA? >>> Thanks, >>> Stepan. >>> >>>> java.net.URLConnection.setUseCaches throws unspecified >> IllegalAccessError >> -------------------------------------------------------------------------- >>>> Key: HARMONY-71 >>>> URL: http://issues.apache.org/jira/browse/HARMONY-71 >>>> Project: Harmony >>>> Type: Bug >>>> Components: Classlib >>>> Reporter: Svetlana Samoilenko >>>> Assignee: Tim Ellison >>>> According to j2se 1.4.2 specification method >> java.net.URLConnection.setUseCaches(boolean) throws IllegalStateException, >> if already connected. Harmony throws java.lang.IllegalAccessError instead, >> that contradicts the specification. >>>> Code to reproduce: >>>> import java.io.IOException; >>>> import java.net.*; >>>> public class test2 { >>>> public static void main(String[] args) { >>>> HttpURLConnection u=null; >>>> try { >>>> u=(HttpURLConnection)(new URL("http://intel.com >> ").openConnection()); >>>> u.connect(); >>>> } catch (MalformedURLException e) { >>>> System.out.println("unexpected MalformedURLException"+e); >>>> } catch (IOException f) { >>>> System.out.println("unexpected IOException"+f); >>>> } >>>> try { >>>> u.setUseCaches(true); >>>> } catch (IllegalStateException e) { >>>> System.out.println("OK. Expected IllegalStateException"); >>>> e.printStackTrace(); >>>> }; >>>> } >>>> } >>>> Steps to Reproduce: >>>> 1. Build Harmony (check-out on 2006-01-30) j2se subset as described in >> README.txt. >>>> 2. Compile test2.java using BEA 1.4 javac >>>>> javac -d . test2.java >>>> 3. Run java using compatible VM (J9) >>>>> java -showversion test2 >>>> Output: >>>> C:\tmp>C:\jrockit-j2sdk1.4.2_04\bin\java.exe -showversion test2 >>>> java version "1.4.2_04" >>>> Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05) >>>> BEA WebLogic JRockit(TM) 1.4.2_04 JVM (build >> ari-31788-20040616-1132-win-ia32, Native Threads, GC strategy: parallel) >>>> OK. Expected IllegalStateException >>>> java.lang.IllegalStateException: Already connected >>>> at java.net.URLConnection.setUseCaches(Z)V(URLConnection.java >> :828) >>>> at test2.main([Ljava.lang.String;)V(test2.java:17) >>>> C:\tmp>C:\harmony\trunk\deploy\jre\bin\java -showversion test2 >>>> (c) Copyright 1991, 2005 The Apache Software Foundation or its >> licensors, as applicable. >>>> java.lang.IllegalAccessError: Connection already established >>>> at java.net.URLConnection.setUseCaches(URLConnection.java:923) >>>> at test2.main(test2.java:17) >>>> Suggested junit test case: >>>> ------------------------ >>>> URLConnectionTest.java------------------------------------------------- >>>> import java.io.IOException; >>>> import java.net.*; >>>> import junit.framework.*; >>>> public class URLConnectionTest extends TestCase { >>>> public static void main(String[] args) { >>>> junit.textui.TestRunner.run(URLConnectionTest.class); >>>> } >>>> public void test_setUseCaches () { >>>> HttpURLConnection u=null; >>>> try { >>>> u=(HttpURLConnection)(new URL("http://intel.com >> ").openConnection()); >>>> u.connect(); >>>> } catch (MalformedURLException e) { >>>> fail("unexpected MalformedURLException"+e); >>>> } catch (IOException f) { >>>> fail("unexpected IOException"+f); >>>> } >>>> try { >>>> u.setUseCaches(true); >>>> } catch (IllegalStateException e) { //expected >>>> }; >>>> } >>>> } >> -- >> >> Tim Ellison ([EMAIL PROTECTED]) >> IBM Java technology centre, UK. >> > -- Tim Ellison ([EMAIL PROTECTED]) IBM Java technology centre, UK.