You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-dev@lucene.apache.org by Grant Ingersoll <gs...@apache.org> on 2008/04/16 18:59:26 UTC

Testing, Test Coverage, etc. was Re: Adding Clover to hudson

OK, Clover should be hooked in and hopefully doesn't have to go  
through many hoops.  You can see reports on the latest at: http://hudson.zones.apache.org/hudson/job/Solr-trunk/clover/

Too bad we didn't put in a Google Summer of Code option to write test  
cases like the Derby folks did.  :-)

I think we may want to consider, similarly to what we do in Lucene- 
Java, is introducing a code freeze before official release, and one of  
the things we do is tackle the fact that a pretty sizable chunk of  
Solr code is not ever tested.  Typically, in Lucene land we freeze for  
7 to 10 days and the only allowed commits in that time are blockers  
and documentation.  We probably could add to that test cases.

I also find the BasicFunctionalityTest to be a bit annoying from a  
purist Unit Testing standpoint.  For instance, today I was looking at  
the Date Faceting patch as applied to SimpleFacets and instinctively  
went to look for TestSimpleFacets (or, SimpleFacetsTest) which doesn't  
exist.  Then, later, discovered that the Faceting test stuff is in the  
BFT class, which is a bit harder to remember and I think causes people  
to wonder where tests are located for a given class.

Anyway, just my two cents on how we can improve testing in Solr.

-Grant


On Apr 16, 2008, at 12:21 PM, Chris Hostetter wrote:

>
> : I'm testing adding clover to hudson builds, so please disregard  
> any failure
> : notices.
>
> Oh yeah ... i've been meaning to get to that.
>
> FWIW: I'm not sure how far you've gotten, but i don't think we need to
> jump through as many hoops as Lucene does to build with clover, then  
> build
> again without -- we don't advertise the artifacts from Hudson  
> because we
> also still have nightly.sh.   Having both is a nice little bit of  
> sanity
> check, and I think it would be fine to make the hudson build have no
> artifacts, just verify the tests and run the metrics.
>
>
> -Hoss
>


Re: Testing, Test Coverage, etc. was Re: Adding Clover to hudson

Posted by Grant Ingersoll <gs...@apache.org>.
+1

On Apr 17, 2008, at 1:15 AM, Chris Hostetter wrote:

>
> : I think we may want to consider, similarly to what we do in Lucene- 
> Java, is
> : introducing a code freeze before official release, and one of the  
> things we do
> : is tackle the fact that a pretty sizable chunk of Solr code is not  
> ever
> : tested.  Typically, in Lucene land we freeze for 7 to 10 days and  
> the only
> : allowed commits in that time are blockers and documentation.  We  
> probably
> : could add to that test cases.
>
> Agreed ... we have some TODOs on the "How To Release" page about  
> trying to
> include the process *arround* the actual release creation as well
> (preperation, and post release tasks) that we can beef up with stuff  
> like
> this, but like most documentation: it's fallen through the cracks...
> 	http://wiki.apache.org/solr/HowToRelease
>
> : I also find the BasicFunctionalityTest to be a bit annoying from a  
> purist Unit
> : Testing standpoint.  For instance, today I was looking at the Date  
> Faceting
> : patch as applied to SimpleFacets and instinctively went to look for
> : TestSimpleFacets (or, SimpleFacetsTest) which doesn't exist.   
> Then, later,
> : discovered that the Faceting test stuff is in the BFT class, which  
> is a bit
> : harder to remember and I think causes people to wonder where tests  
> are located
> : for a given class.
>
> I take full responsibility for the mess that is  
> BasicFunctionalityTest ...
> it started out as exactly what the name implies, but little by  
> little it
> was easier to add more stuff to that one class then to create new  
> classes.
> I agree it should be refactored, but writing new tests is probably a
> bigger win ... the general strategy that would probably make the most
> sense is: when writing some new test cases, if part of the  
> functionality
> is already covered in BFT, refactor the existing stuff inot a new  
> class,
> and add your new tests.  we keep refactoring until BFT is empty, and  
> then
> add some redundent tests for truly basic stuff back in and leave the  
> test
> as what it should have been: an example of the way to write simple
> "functionality" tests without needing to know a lot about the internal
> APIs.
>
>
>
> -Hoss
>

--------------------------
Grant Ingersoll

Lucene Helpful Hints:
http://wiki.apache.org/lucene-java/BasicsOfPerformance
http://wiki.apache.org/lucene-java/LuceneFAQ







Re: Testing, Test Coverage, etc. was Re: Adding Clover to hudson

Posted by Chris Hostetter <ho...@fucit.org>.
: I think we may want to consider, similarly to what we do in Lucene-Java, is
: introducing a code freeze before official release, and one of the things we do
: is tackle the fact that a pretty sizable chunk of Solr code is not ever
: tested.  Typically, in Lucene land we freeze for 7 to 10 days and the only
: allowed commits in that time are blockers and documentation.  We probably
: could add to that test cases.

Agreed ... we have some TODOs on the "How To Release" page about trying to 
include the process *arround* the actual release creation as well 
(preperation, and post release tasks) that we can beef up with stuff like 
this, but like most documentation: it's fallen through the cracks...
	http://wiki.apache.org/solr/HowToRelease

: I also find the BasicFunctionalityTest to be a bit annoying from a purist Unit
: Testing standpoint.  For instance, today I was looking at the Date Faceting
: patch as applied to SimpleFacets and instinctively went to look for
: TestSimpleFacets (or, SimpleFacetsTest) which doesn't exist.  Then, later,
: discovered that the Faceting test stuff is in the BFT class, which is a bit
: harder to remember and I think causes people to wonder where tests are located
: for a given class.

I take full responsibility for the mess that is BasicFunctionalityTest ... 
it started out as exactly what the name implies, but little by little it 
was easier to add more stuff to that one class then to create new classes.  
I agree it should be refactored, but writing new tests is probably a 
bigger win ... the general strategy that would probably make the most 
sense is: when writing some new test cases, if part of the functionality 
is already covered in BFT, refactor the existing stuff inot a new class, 
and add your new tests.  we keep refactoring until BFT is empty, and then 
add some redundent tests for truly basic stuff back in and leave the test 
as what it should have been: an example of the way to write simple 
"functionality" tests without needing to know a lot about the internal 
APIs.



-Hoss