On 2/21/06, Tim Ellison <[EMAIL PROTECTED]> wrote: > 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?
Support_HttpServer.java has the following code: class ServerThread implements Runnable { public void run() { .... // call the test function based on the requested resource if (resourceName.equals(CHUNKEDTEST)) chunkedTest(); <... lot of 'else if' ...> ... } private void chunkedTest() { <... construct server's respond and send it ...> } I'd prefer to avoid this and to have a server implementation that provides a way for unit test to check received request and to configure a server's respond. > > 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.netdevelopment > > 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? Sure, we have javax.security.auth.kerberos.KerberosTicket class that currently contains a stub. I was thinking about implementing the stub and how to test it. So I played a little bit with developing Kerberos stub server. When I saw that tests for URLConnection class failed because they need local stub server then I got interested how to solve this similar issue. Thanks, Stepan. 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.IllegalAccessErrorinstead, > >> 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. > -- Thanks, Stepan Mishura Intel Middleware Products Division