On 8/17/06, Stepan Mishura <[EMAIL PROTECTED]> wrote:

On 8/17/06, Andrew Zhang wrote:
>
> Hi folks,
>
> I'd like to say something more about jetty integration. We should reach
an
> agreement on how to integrate/use jetty in Harmony. There are some
> concerns
> I can image now:
>
> 1. Where to put jetty? support or luni module or somewhere else? It
> depends
> on question 2.


+1 for support

2. How to use jetty? How many jetty instances are there? Singleton or
> multiple instances? In other word, shall we start only one jetty server
at
> the beginning before running all tests? or will we start/destroy
embedded
> jetty server at will in any test case? Seems jetty supports both
options.


It should be possibile for a test dynamically configure testing server
(remember my favorite scenario with sending chunked response?). So a test
should be able to stat jetty.


Yes, I remember. :) Overriding AbstractHttpHandler should work for your
scenario. That's why I mentioned "setHandler" in the Support_JettyServer
API.
Of course, if we find something that can only be done by multiple jetty
instances, then I would agree that a test should be able to start jetty.
Otherwise, I'll vote for single jetty instance, for performance, and easy
maintenance consideration.

3. How to write jetty based test?. Multi-thread network test always is a
> problem to us. I found it's also hard to be theoretically.


I've expected that you know :-)  Are there any guidelines?


Not guidelines but some ideas. :) It's almost impossible to write
theoretically stable jetty test. (correct me if I'm wrong.) Because
server.accept and client.connect/read are both blocking operation so
synchronization(wait/notify/lock) doesn't work here. But it's possible to
write pratically stable tests. If there's only one jetty instance which is
started at the begining, things are simple. Just start jetty, wait a little
while (until we can connect to a sample page or be notified from jetty if
there's any callback method in jetty), and run all tests. No thread race
problem at all if we assume jetty really started and works well after "a
little while", and jetty thread can be scheduled normally by jvm. I think we
have to assume something, and believe the tests are pratically stable,
though not theoretically. Any fears for the potentially uncertain? :)  Any
suggestions/comments/objections? Thanks!

Thanks,
Stepan.

According to the description above, I suggest put jetty in support module,
> and encapsulate a class (i.e Support_JettyServer) with some public
methods
> for test writing (i.e getJettyPort(), setHandler(), set...). The
advantage
> of this approach hides all jetty details in support. Once jetty support
> class is ready, all modules can write http tests in the same way.
>
> Any suggestions are highly appreciated! Thanks!
>
> On 8/1/06, Andrew Zhang <[EMAIL PROTECTED]> wrote:
> >
> >  Hi folks,
> >
> > I volunteer to work on excluded tests in luni module, most of which
are
> > dependent on external servers(http server, socks proxy and etc.).
> >
> > As we discussed some months earlier, we'd integrate Jetty to Harmony
> test
> > framework for eliminating external http server, but seems no more
> progress.
> >
> > Any volunteer to do this job? :-)
> >
> > Thanks!
> >
> >
> > On 5/23/06, Stepan Mishura <[EMAIL PROTECTED] > wrote:
> > >
> > > Hi George, Paulex,
> > >
> > > Thanks for your answers. As a preliminary result - your convinced me
> and
> > > I'm
> > > going to be volunteer to evaluate jetty integration to classlib test
> > > suite.
> > >
> > > Do anybody work on integrating jetty http server to move net tests
out
> > > of
> > > exclude list?
> > >
> > > Thanks,
> > > Stepan.
> > >
> > > On 5/23/06, George Harley < [EMAIL PROTECTED] > wrote:
> > > >
> > > > Stepan Mishura wrote:
> > > > > Hi George, Tim
> > > > >
> > > > > I'd like to clarify the following questions:
> > > > > 1) Configuring
> > > > > As I understood we say that the server is 'embedded' when we can
> > > > > start/stop
> > > > > it within Ant without additional configuration steps. And all we
> > > need
> > > > > to do
> > > > > is just download required jars. Right?
> > > > >
> > > > > What about Eclipse users?
> > > >
> > > > Hi Stepan,
> > > >
> > > > In addition to be being start-able, stop-able and configurable
from
> > > Ant
> > > > and XML config files, Jetty can also be embedded into the Java
code
> of
> > > a
> > > > test case or test suite. Configuration, starting and stopping are
> all
> > > > possible. Eclipse users should not be disadvantaged.
> > > >
> > > >
> > > > >
> > > > > 2) Time to run test suite
> > > > > May be it is hard to estimate but anyway - will the test suite
run
> > > > > slow down
> > > > > if we'll use jetty instead of mock objects? How much?
> > > >
> > > > Depends on configuration. Configure and start the server in the
> > > setup()
> > > > of a JUnit TesCase (and stopping the server in the teardown())
would
> > > > obviously be slower than doing the equivalent in a JUnit TestSetup
> > > > descendent. Start up is a lot less than half a second on my
machine.
> > > >
> > > > Is there some performance benchmark for tests that is at risk here
?
> > > >
> > > >
> > > > >
> > > > > 3) Testing
> > > > > Quoting Tim from 'local server thread': "There is no way to
force
> a
> > > > > server
> > > > > to send you a chunked response using regular HTTP headers, so in
> > > this
> > > > > case
> > > > > the server and client have an understanding that when the client
> > > asks
> > > > > for a
> > > > > particular resource the server will send it back in chunks."
> > > > >
> > > > > With mock objects this can be done with no problems and
> HARMONY-164
> > > > > demonstrates the possible way. Also are we going to create
> negative
> > > > > tests,
> > > > > for example, for broken server response? I think yes. Can
> jettyserver
> > > > be
> > > > > used for negative testing?
> > > >
> > > > Yes. You can send back any error.
> > > >
> > > >
> > > > >
> > > > > See other comments below
> > > > >
> > > > > On 5/22/06, George Harley wrote:
> > > > >>
> > > > >> Stepan Mishura wrote:
> > > > >> > On 5/19/06, Tim Ellison wrote:
> > > > >> >>
> > > > >> >> Stepan Mishura wrote:
> > > > >> >> <snip>
> > > > >> >> > I'm OK only if we separate tests with Jetty from common
test
> > > suite
> > > > >> >> run.
> > > > >> >>
> > > > >> >> Why?
> > > > >> >
> > > > >> >
> > > > >> > Because each external dependency complicates 'normal' test
> suite
> > > > >> run ( I
> > > > >> > don't want to face with situation when to run Harmony test
> suite
> > > I
> > > > >> > have to
> > > > >> > configure and run 20 different external servers even they are
> > > easy
> > > > >> > configurable). As far as I remember we agreed to use mock
> objects
> > > -
> > > > so
> > > > >> > let's
> > > > >> > use them! For example, in this case there is no need in
> jettyserver.
> > > > >> >
> > > > >> > I'm not against 'jetty based tests' but I'd prefer to
separate
> > > such
> > > > >> > tests.
> > > > >> >
> > > > >> > Thanks,
> > > > >> > Stepan.
> > > > >> >
> > > > >>
> > > > >> Hi Stepan,
> > > > >>
> > > > >> Just seen this note and think that my previous append on the
"Re:
> > > svn
> > > > >> commit: r407752" thread sums up my thoughts. Allow me to quote
> > > myself:
> > > > >>
> > > > >> <paste>
> > > > >> Jetty or equivalent is a good basis for such local server
stubs.
> It
> > > is
> > > > >> fast, it is lightweight,
> > > > >
> > > > >
> > > > > Fast and lightweight as what?
> > > > > I saw sometimes ago java server that has jar size 4k. And
> > > > > jetty-6.0.0beta6.jar is 423k size.
> > > > >
> > > >
> > > >
> > > > Not sure of your point here. Is there some test file footprint
> > > benchmark
> > > > that is at risk here ? If there is a better, faster, more
> lightweight
> > > > server that would suit our purposes then let's hear about it so
that
> > > we
> > > > can investigate whether or not it may be used with our network
> tests.
> > > >
> > > > >
> > > > >> it can be started and stopped very simply from
> > > > >> within Ant (so that it only runs for the duration of a
specified
> > > batch
> > > > >> of unit tests) and may also be completely controlled from Java
> test
> > > > code
> > > > >> so that we can configure its behaviour for any test case from
> > > within
> > > > >> that test case.
> > > > >
> > > > >
> > > > > Good.
> > > > >
> > > > > It's architecture means that we do not have to run it as
> > > > >> a complete web server but can stub out any aspect of its
runtime
> > > > >> behaviour we wish in order to suit the purposes of the test(s).
> > > > >
> > > > >
> > > > > What about 'chunked response'? Can a testcase force jetty server
> to
> > > > > send it
> > > > > a chunked response?
> > > >
> > > > Yes. The API provides options to do this. Chunks are encoded as
per
> > > > RFC2616.
> > > >
> > > >
> > > > Best regards,
> > > > George
> > > >
> > > > >
> > > > > I don't really understand why such network tests making use of a
> > > small,
> > > > >> embedded server running locally would need to be considered as
> > > outside
> > > > >> of the "normal test flow".
> > > > >> </paste>
> > > > >
> > > > >
> > > > > Because I consider adding jetty server as precedent for adding
> other
> > > > > dependencies to the "normal test flow". I believe that "normal
> test
> > > > flow"
> > > > > should be fast and lightweight as much as possible. Each
> additional
> > > > > dependency or configuration step adds a brick(even it light) to
> > > > > developer's
> > > > > large. As the result classlib test suite may become very slow
and
> > > hard
> > > > to
> > > > > configure. All I want is to understand - do we really need
> jettyserver
> > > > > inside it.
> > > > >
> > > > > Thanks,
> > > > > Stepan.
> > > > >
> > > > > We are not talking about an external server here and we are not
> > > talking
> > > > >> about developers having to carry out complex configuration
> > > manoeuvres
> > > > >> when running the tests. That is something that nobody wants.
The
> > > > >> motivation here is purely to get more of the java.net tests out
> of
> > > the
> > > > >> "excludes" sin bin.
> > > > >>
> > > > >> Best regards,
> > > > >> George
> > > > >>
> > > > >>
> > > > >> > Regards,
> > > > >> >> Tim
> > > > >> >>
> > > > >> >> --
> > > > >> >>
> > > > >> >> Tim Ellison ([EMAIL PROTECTED])
> > > > >> >> IBM Java technology centre, UK.
> > > > >> >>
>
>

--
Thanks,
Stepan Mishura
Intel Middleware Products Division

------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Andrew Zhang
China Software Development Lab, IBM

Reply via email to