Re: Basic core testing infrastructure

2010-05-24 Thread Robert Muir
Hi Karl,

Just a question, I read all the warnings about how dependent LCF is on
postgres, but how much of this is really only about performance?

When I look at the code it seems like there is enough abstraction you
could add support for say, hsqldb or similar, even if its only for
testing purposes?

This way you could create a 'new world' for each test, rather than
worrying about cleaning up the database etc.

I admit I don't know if what I am saying is even close to practical as
far as how dependent things are on postgres, but it might be an idea
to make testing simpler.

On Mon, May 24, 2010 at 9:49 AM,  karl.wri...@nokia.com wrote:
 To all you lurking Solr committers out there,

 I would like to throw some cycles towards at least getting Solr-style unit 
 tests set up for LCF, running under Junit or something like it.  My thoughts 
 were as follows:

 (1)     We presume a blank, already-installed version of Postgresql, 
 configured to listen on port 5432, with a standard superuser name and 
 password;
 (2)     We do not attempt to test the UI at this time, because that would 
 involve presuming an app server was installed, and would also require me to 
 port my simple browser simulator from python to Java.  Or maybe we can do 
 this later?
 (3)     The filesystem connector only would be used by the core tests.

 The question is, does this fit well with the Solr testing infrastructure?  Is 
 there a document describing that infrastructure and how to most effectively 
 write tests for it?  What are the standard pre/post-test cleanup semantics 
 for the Solr tests, for instance?  (The MetaCarta tests do a preclean 
 stage, which removes any crap leftover from a previous failure of the same 
 test, for instance, and also always clean up after themselves upon success.)

 I know the projects are quite different, but if I understand the assumptions 
 and the how to's for Solr, it will help me enormously I think...

 Thanks,
 Karl







-- 
Robert Muir
rcm...@gmail.com


RE: Basic core testing infrastructure

2010-05-24 Thread karl.wright
Hi Robert,

The dependency on postgresql is indeed mainly performance, as you say, although 
there are a few kinds of queries that I am sure are somewhat 
postgresql-specific at this point.  These are mainly for the reporting 
features, though.  So your idea could work in a limited way.

Obviously an end-to-end test would be the best, though.  But something is 
better than nothing.

Karl


-Original Message-
From: ext Robert Muir [mailto:rcm...@gmail.com] 
Sent: Monday, May 24, 2010 3:43 PM
To: connectors-dev@incubator.apache.org
Subject: Re: Basic core testing infrastructure

Hi Karl,

Just a question, I read all the warnings about how dependent LCF is on
postgres, but how much of this is really only about performance?

When I look at the code it seems like there is enough abstraction you
could add support for say, hsqldb or similar, even if its only for
testing purposes?

This way you could create a 'new world' for each test, rather than
worrying about cleaning up the database etc.

I admit I don't know if what I am saying is even close to practical as
far as how dependent things are on postgres, but it might be an idea
to make testing simpler.

On Mon, May 24, 2010 at 9:49 AM,  karl.wri...@nokia.com wrote:
 To all you lurking Solr committers out there,

 I would like to throw some cycles towards at least getting Solr-style unit 
 tests set up for LCF, running under Junit or something like it.  My thoughts 
 were as follows:

 (1)     We presume a blank, already-installed version of Postgresql, 
 configured to listen on port 5432, with a standard superuser name and 
 password;
 (2)     We do not attempt to test the UI at this time, because that would 
 involve presuming an app server was installed, and would also require me to 
 port my simple browser simulator from python to Java.  Or maybe we can do 
 this later?
 (3)     The filesystem connector only would be used by the core tests.

 The question is, does this fit well with the Solr testing infrastructure?  Is 
 there a document describing that infrastructure and how to most effectively 
 write tests for it?  What are the standard pre/post-test cleanup semantics 
 for the Solr tests, for instance?  (The MetaCarta tests do a preclean 
 stage, which removes any crap leftover from a previous failure of the same 
 test, for instance, and also always clean up after themselves upon success.)

 I know the projects are quite different, but if I understand the assumptions 
 and the how to's for Solr, it will help me enormously I think...

 Thanks,
 Karl







-- 
Robert Muir
rcm...@gmail.com


Re: Basic core testing infrastructure

2010-05-24 Thread Simon Willnauer
I have to admit I don't know much about the connectors but this sounds
like connectors heavily rely on postgresql. Karl, is it somehow
feasible to abstract this out to work with more than just postgresql
in production? Maybe making different test-backends pluggable would be
a win-win for tests and the project itself. Correct me if I'm wrong
but I as a user would appreciate if I could start it up with a derby
DB by default without the hassle of installing postgres.

Self-contained testing is the way to go here or try mocking things out
if you can / want to.

simon

On Mon, May 24, 2010 at 9:54 PM,  karl.wri...@nokia.com wrote:
 Hi Robert,

 The dependency on postgresql is indeed mainly performance, as you say, 
 although there are a few kinds of queries that I am sure are somewhat 
 postgresql-specific at this point.  These are mainly for the reporting 
 features, though.  So your idea could work in a limited way.

 Obviously an end-to-end test would be the best, though.  But something is 
 better than nothing.

 Karl


 -Original Message-
 From: ext Robert Muir [mailto:rcm...@gmail.com]
 Sent: Monday, May 24, 2010 3:43 PM
 To: connectors-dev@incubator.apache.org
 Subject: Re: Basic core testing infrastructure

 Hi Karl,

 Just a question, I read all the warnings about how dependent LCF is on
 postgres, but how much of this is really only about performance?

 When I look at the code it seems like there is enough abstraction you
 could add support for say, hsqldb or similar, even if its only for
 testing purposes?

 This way you could create a 'new world' for each test, rather than
 worrying about cleaning up the database etc.

 I admit I don't know if what I am saying is even close to practical as
 far as how dependent things are on postgres, but it might be an idea
 to make testing simpler.

 On Mon, May 24, 2010 at 9:49 AM,  karl.wri...@nokia.com wrote:
 To all you lurking Solr committers out there,

 I would like to throw some cycles towards at least getting Solr-style unit 
 tests set up for LCF, running under Junit or something like it.  My thoughts 
 were as follows:

 (1)     We presume a blank, already-installed version of Postgresql, 
 configured to listen on port 5432, with a standard superuser name and 
 password;
 (2)     We do not attempt to test the UI at this time, because that would 
 involve presuming an app server was installed, and would also require me to 
 port my simple browser simulator from python to Java.  Or maybe we can do 
 this later?
 (3)     The filesystem connector only would be used by the core tests.

 The question is, does this fit well with the Solr testing infrastructure?  
 Is there a document describing that infrastructure and how to most 
 effectively write tests for it?  What are the standard pre/post-test cleanup 
 semantics for the Solr tests, for instance?  (The MetaCarta tests do a 
 preclean stage, which removes any crap leftover from a previous failure of 
 the same test, for instance, and also always clean up after themselves upon 
 success.)

 I know the projects are quite different, but if I understand the assumptions 
 and the how to's for Solr, it will help me enormously I think...

 Thanks,
 Karl







 --
 Robert Muir
 rcm...@gmail.com



Re: Basic core testing infrastructure

2010-05-24 Thread Robert Muir
On Mon, May 24, 2010 at 3:54 PM,  karl.wri...@nokia.com wrote:

 Obviously an end-to-end test would be the best, though.  But something is 
 better than nothing.

 Karl


I agree with this, but I think for unit tests, its best to have a very
simple new clean world for each test.

I think testing the postgres integration is not really unit tests at
all but something else, and we could make it a separate test module.

-- 
Robert Muir
rcm...@gmail.com


RE: Basic core testing infrastructure

2010-05-24 Thread karl.wright
There is an abstraction layer, and it is pretty solid, but (as you know), 
database abstraction subtleties are pretty significant.  The way a database 
gathers statistics, for example, will determine how often you can get away with 
doing an ANALYZE, and the sensitivity of the database's planner to small 
statistics differences might force a certain query design over another.

Thus, even if the abstraction layer fully supports a variety of databases, I 
would not feel confident in the performance of any given database backend under 
LCF without some fairly rigorous testing, on that specific database.  So if we 
are suggesting Postgresql, we should test on Postgresql, etc.

Other areas in which you might run into problems with something like Derby 
might be the completeness of its sql implementation.  I'll have to look into it 
further to see if that would likely be a problem.

Karl

-Original Message-
From: ext Simon Willnauer [mailto:simon.willna...@googlemail.com] 
Sent: Monday, May 24, 2010 4:03 PM
To: connectors-dev@incubator.apache.org
Subject: Re: Basic core testing infrastructure

I have to admit I don't know much about the connectors but this sounds
like connectors heavily rely on postgresql. Karl, is it somehow
feasible to abstract this out to work with more than just postgresql
in production? Maybe making different test-backends pluggable would be
a win-win for tests and the project itself. Correct me if I'm wrong
but I as a user would appreciate if I could start it up with a derby
DB by default without the hassle of installing postgres.

Self-contained testing is the way to go here or try mocking things out
if you can / want to.

simon

On Mon, May 24, 2010 at 9:54 PM,  karl.wri...@nokia.com wrote:
 Hi Robert,

 The dependency on postgresql is indeed mainly performance, as you say, 
 although there are a few kinds of queries that I am sure are somewhat 
 postgresql-specific at this point.  These are mainly for the reporting 
 features, though.  So your idea could work in a limited way.

 Obviously an end-to-end test would be the best, though.  But something is 
 better than nothing.

 Karl


 -Original Message-
 From: ext Robert Muir [mailto:rcm...@gmail.com]
 Sent: Monday, May 24, 2010 3:43 PM
 To: connectors-dev@incubator.apache.org
 Subject: Re: Basic core testing infrastructure

 Hi Karl,

 Just a question, I read all the warnings about how dependent LCF is on
 postgres, but how much of this is really only about performance?

 When I look at the code it seems like there is enough abstraction you
 could add support for say, hsqldb or similar, even if its only for
 testing purposes?

 This way you could create a 'new world' for each test, rather than
 worrying about cleaning up the database etc.

 I admit I don't know if what I am saying is even close to practical as
 far as how dependent things are on postgres, but it might be an idea
 to make testing simpler.

 On Mon, May 24, 2010 at 9:49 AM,  karl.wri...@nokia.com wrote:
 To all you lurking Solr committers out there,

 I would like to throw some cycles towards at least getting Solr-style unit 
 tests set up for LCF, running under Junit or something like it.  My thoughts 
 were as follows:

 (1)     We presume a blank, already-installed version of Postgresql, 
 configured to listen on port 5432, with a standard superuser name and 
 password;
 (2)     We do not attempt to test the UI at this time, because that would 
 involve presuming an app server was installed, and would also require me to 
 port my simple browser simulator from python to Java.  Or maybe we can do 
 this later?
 (3)     The filesystem connector only would be used by the core tests.

 The question is, does this fit well with the Solr testing infrastructure?  
 Is there a document describing that infrastructure and how to most 
 effectively write tests for it?  What are the standard pre/post-test cleanup 
 semantics for the Solr tests, for instance?  (The MetaCarta tests do a 
 preclean stage, which removes any crap leftover from a previous failure of 
 the same test, for instance, and also always clean up after themselves upon 
 success.)

 I know the projects are quite different, but if I understand the assumptions 
 and the how to's for Solr, it will help me enormously I think...

 Thanks,
 Karl







 --
 Robert Muir
 rcm...@gmail.com



RE: Basic core testing infrastructure

2010-05-24 Thread karl.wright


I agree with this, but I think for unit tests, its best to have a very
simple new clean world for each test.

I think testing the postgres integration is not really unit tests at
all but something else, and we could make it a separate test module.


I have no problem with supporting both some degree of unit testing, as well as 
some end-to-end testing.  I was thinking most about setting up the end-to-end 
testing infrastructure first with LCF, since I think that's where the biggest 
bang for the buck is.  Does Solr have any such tests, and how are they 
structured?

Karl