Ok, thanks both. That makes a lot of sense. I'll just use  beasting for
most anything SolrCloud related.


On Thu, Jan 11, 2018 at 4:56 PM, Chris Hostetter <hossman_luc...@fucit.org>
wrote:

> : (I had left the comment in question)
> : I think a test shouldn't have to explicitly clean up after itself, except
> : perhaps intra-method as-needed; test-infrastructure should do the class
> : (test suite).
>
> All test code should always be expected to clean up their messes at
> whatever "ending" stage corrisponds with the stage where the mess was
> made.
>
> how the mess is cleaned up, and wether infrastructure/scaffolding code
> helps do that dpeends on the specifics of the infrastucture/scaffolding in
> question -- if you make a mess in a test method that the general purpose
> infrastructure doesn't expect, then the burden is on you
> to add the level of infrastructure (either in your specific test class, or
> in a new abstract base class depending on how you think it might be
> re-usable) to do so.
>
> In the abstract: Assume AbstractParentTest class that creates some
> "parentMess" in @BeforeClass, and deletes "parentMess" in an
> @AfterClass....
>
> 1) if you want all of your tests methods to have access to a
> shiny new/unique instance of "childMess" in every test method, then burden
> is on you to create/destroy childMess in your own @Before and @After
> methods
>
> 2) If you want test methods that are going to mutate "parentMess" then the
> burden is on you to ensure (ideally via @After methods that "do the right
> thing" even if the test method fails) that "parentMess" is correctly reset
> so that all the test methods depending on "parentMess" can run in any
> order (or run multiple times in a single instance) ... either that, or you
> shouldn't use AbstractParentTest -- you should create/destroy
> a "parentMess" instance yourself in your @Before & @After methods
>
> Concretely...
>
> : > The assumption was that everything would be cleaned up between runs
> : > doesn't appear to be true for SolrCloud tests. I think one of two
> things is
> : > happening:
> : >
> : > 1> collections (and perhaps aliases) are simply not cleaned up
> : >
> : > 2> there is a timing issue, we have waitForCollectionToDisappear in
> test
> : > code after all.
>
> ...these are vague statements ("everything", "SolrCloud tests", "not
> cleaned up") and not being intimately familiar with the test class in
> question it's not clear exactly is happening or what expectations various
> people have -- BUT -- assuming this is in regards to
> SolrCloudTestCase, that base class has very explicit docs about
> how it's intended to be used: you are expected to configure & init a
> MiniSolrCloudCluster instance in an @BeforeClass method -- it has helper
> code for this -- and that cluster lives for the lifespan of the class at
> which point an @AfterClass in SolrCloudTestCase will ensure it gets torn
> down.
>
> Tests which subclass SolrCloudTestCase should be initializing the cluster
> only in @BeforeClass.  Most tests should only be creating collections in
> @BeforeClass -- allthough you are certainly free to do things like
> create/destroy collections on a per test method basis in @Before/@After
> methods if you have a need for that sort of thing.
>
> If that's not the lifecycle you want -- if you want a lifecycle where ever
> individual test method gets it's own pristine new MiniSolrCloudCluster
> instance w/o any pre-existing collections, then you shouldn't use
> SolrCloudTestCase -- you should just create/destroy
> unique MiniSolrCloudCluster instances in your own @Before/@After methods.
>
>
> Bottom Line: there is no one size fits all test scaffolding -- not when we
> have some tests classes where we want to create a collection once, fill it
> with lots of docs, and then re-use it in 100s of test methods, but other
> classes want to test the very operation of creating/deleting collections.
>
> Use the tools that make sense for the test you're writting.
>
>
>
>
> -Hoss
> http://www.lucidworks.com/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
> For additional commands, e-mail: dev-h...@lucene.apache.org
>
>

Reply via email to