I feel that I need to study more details about net testing. Also to made
discussion more concrete and constructive I'll to try to provide 'a proof of
concept'.  I believe that this won't be a wasted effort and it won't take
too much time. I'm going to select a number of 'common testing scenarios',
for example, I will try to "force a server to send a chunked response"
without creating a special resource to be requested. And demonstrate that it
is possible to run them without external server or sophisticated internal
server.
Anyway I was going to continue to work with Kerberos server stub (because
I'm not delighted with configuring external Kerberos server in order to run
unit tests) and this is a good change for me to review this issue from
another angle.

Thanks,
Stepan Mishura
Intel Middleware Products Division


On 2/23/06, George Harley <george.c.harley <at> googlemail.com> wrote:
>
>
> Tim Ellison wrote:
> > George Harley wrote:
> >
> >> Geir Magnusson Jr wrote:
> >>
> >>> George Harley wrote:
> >>>
> >>>> Geir Magnusson Jr wrote:
> >>>>
> >>>>> So, does this summarize to :
> >>>>>
> >>>>> 1) We need a new server or we should enahnce the current one?
> >>>>>
> >>>>> 2) We need instructions on how to do this.
> >>>>>
> >>>>> ?
> >>>>>
> >>>>> (I hope we don't need httpd to test Harmony...)
> >>>>>
> >>>> Could you remind me what the "current one" is ?
> >>>>
> >>> The one in the pending JIRA
> >>>
> >> There is no server in the pending JIRA.
> >>
> >
> > (psst) take a look at
> >
> <HARMONY-57>\Harmony\Harmony_Tests\src\test\java\tests\support\Support_HttpServer.java
> >
> > Regards,
> > Tim
> >
>
> Hi Tim,
>
> Funny. That's a test support class that is used to mock up an HTTP
> server for one, admittedly large, test case method (test_getInputStream
> in tests.api.java.net.URLConnectionTest).
>
> It is not "the server".
>
> There are a significantly larger number of test case methods that rely
> on using the configured external HTTP/FTP/SOCKS servers to test out
> their functionality.
>
> Best regards,
> George
> IBM UK
>
>
> >
> >> As briefly mentioned somewhere
> >> else in this thread, the submitted zip for that JIRA contains
> >> configuration code and properties files that permits the tester to use
> >> any server in any location (including localhost) and test resources for
> >> deploying on those servers.
> >>
> >>
> >>>> What is the problem with using httpd to test Harmony ?
> >>>>
> >>> It's a rather large external dependency.  Reminds me of the time we
> >>> got the TCK for JavaMail (a story in itself) and the only practical
> >>> way to use it was to get Sun's IMAP server which only ran on Solaris.
> >>>
> >>> So what I was getting at is can we use something smaller/lighter that
> >>> we can include in the project for this?  What is it required to do?
> >>>
> >> The tests require an HTTP server, an FTP server and a SOCKS server to
> be
> >> listening on certain (configurable) ports. The respective servers need
> >> to have certain resources - text files, jars etc - deployed on them as
> a
> >> number of the java.net.* tests try and access them from the configured
> >> locations. The tests check that the expected content is available, that
> >> it is the expected size, contains the expected data etc etc.
> >>
> >> There are a number of mature, stable, freely available HTTP/FTP/SOCKS
> >> servers out there that will do just great for satisfying the demands of
> >> these tests so I don't propose to recommend anything in particular
> >> (although I have had no problems running Apache HTTPD on my local
> >> Windows machine). I don't see any justification for someone to spend
> >> time developing a "new server" to run these tests. But, hey, it's not
> my
> >> time that will be wasted...
> >>
> >>
> >>> geir
> >>>
> >>>
> >>>
> >>>>
> >>>>> Stepan Mishura wrote:
> >>>>>
> >>>>>> Hi Richard,
> >>>>>>
> >>>>>> Yes, I'm always for simplifying testing routine. And creating a
> >>>>>> detail guide
> >>>>>> for configuring some testing server is a possible way to do it.
> >>>>>> However I'd
> >>>>>> prefer to try to develop a simple local test server that is easy to
> >>>>>> configure. I believe that it will cover most of cases.
> >>>>>>
> >>>>>> And I assume that there may be a number of sophisticated test cases
> >>>>>> that
> >>>>>> requires a special server set up. But I'd place them separately
> >>>>>> this was
> >>>>>> discussed in '[testing] code for exotic configurations' topic.
> >>>>>>
> >>>>>> Otherwise there is a chance to get the following detailed
> >>>>>> instructions:
> >>>>>> 1) Download http server from http://www.apache.org
> >>>>>> ...
> >>>>>> 50) Do this and that
> >>>>>> ...
> >>>>>> 100) Now you can run net tests
> >>>>>>
> >>>>>> Thanks,
> >>>>>> Stepan
> >>>>>>
> >>>>>>
> >>>>>> On 2/22/06, Richard Liang <[EMAIL PROTECTED]> wrote:
> >>>>>>
> >>>>>>> Dears,
> >>>>>>> Agree that server (maybe not local) is required for some
> >>>>>>> sophisticated
> >>>>>>> test cases. To make thing simply, we may provide more detail guide
> >>>>>>> (step-by-step) on how to setup/configure a typical testing server.
> Or
> >>>>>>> shall we setup a test server and allow user to share our testing
> >>>>>>> server?
> >>>>>>>
> >>>>>>> Richard Liang
> >>>>>>> China Software Development Lab, IBM
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> Tim Ellison 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?
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>> 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?
> >>>>>>>> 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.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>> --
> >>>>>> Thanks,
> >>>>>> Stepan Mishura
> >>>>>> Intel Middleware Products Division
> >>>>>>
> >>>>>>
> >>>>
> >>
> >
> >
>
>


--
Thanks,
Stepan Mishura
Intel Middleware Products Division

Reply via email to