Stepan Mishura wrote:
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
Hi Stepan,
Sounds good to me.
Best regards,
George
IBM UK
On 2/23/06, *George Harley* <george.c.harley <at> googlemail.com
<http://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]
<mailto:[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 <http://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
<http://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]
<mailto:[EMAIL PROTECTED]>)
>>>>>>>>>> IBM Java technology centre, UK.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>> --
>>>>>> Thanks,
>>>>>> Stepan Mishura
>>>>>> Intel Middleware Products Division
>>>>>>
>>>>>>
>>>>
>>
>
>
--
Thanks,
Stepan Mishura
Intel Middleware Products Division