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.

Reply via email to