Something is needed.

I think unit tests should allow use of a single embedded Solr server (not
Jetty and thus not SolrCloud either).  Whatever we choose, we should
document this in Javadocs on the annotation so we can point ourselves &
contributors to correct use of these annotations.

We could even have MiniSolrCloudCluster or Jetty Solr runner thing do a
test runtime look to see if the current test is classified as an
integration test, and fail otherwise.  Just an idea to help us enforce use
of this correctly.

~ David Smiley
Apache Lucene/Solr Search Developer
http://www.linkedin.com/in/davidwsmiley


On Fri, Jan 14, 2022 at 10:47 AM Jan Høydahl <jan....@cominvent.com> wrote:

> Created https://issues.apache.org/jira/browse/SOLR-15925 for this
> Feel free to continue the concept discussion here and tech discussion in
> the JIRA.
> PS: I'm not planning to assign myself to this JIRA, so up for grabs.
>
> Jan
>
> 14. jan. 2022 kl. 15:06 skrev Uwe Schindler <u...@thetaphi.de>:
>
> +1
>
> On Jenkins we would enable those.
>
> Am 14. Januar 2022 12:53:21 UTC schrieb "Jan Høydahl" <
> jan....@cominvent.com>:
>>
>> Tests take forever to run, and we have totally intermingled unit tests
>> (testing one class or with mocks) with integration tests (spinning up solr
>> clusters, indexing etc), which is not good project hygiene imo.
>> Can we start tagging integration tests in a way so we can choose to leave
>> them out for the quick dev iterations? We already have these properties for
>> test filtering:
>>
>> // filtering
>> [propName: 'tests.filter', value: null, description: "Applies a test filter 
>> (see :helpTests)."],
>> [propName: 'tests.slow', value: true, description: "Enables or disables 
>> @Slow tests."],
>> [propName: 'tests.nightly', value: false, description: "Enables or disables 
>> @Nightly tests."],
>> [propName: 'tests.weekly', value: false, description: "Enables or disables 
>> @Weekly tests."],
>> [propName: 'tests.monster', value: false, description: "Enables or disables 
>> @Monster tests."],
>> [propName: 'tests.awaitsfix', value: null, description: "Enables or disables 
>> @AwaitsFix tests."],
>> [propName: 'tests.badapples', value: null, description: "Enables or disables 
>> @BadApple tests."],
>>
>> So perhaps add an @Ingtegrationtest annotation and a
>> -Ptests.integrationtest=true/false flag. Then we don't need to move test
>> files to other folder, enough to annotate them. For a start,
>> all SolrCloudTestCase tests could be annotated (are annotations inherited?)
>> Then I imagine I'd run unit tests frequently and the whole suite
>> occationally right before merging a large feature.
>> It would also be interesting to run only unit tests and then have a look
>> at the JaCoco test coverage stats. I have a suspicion we have not been good
>> enough writing basic unit tests, including for failure and corner cases.
>>
>> Don't get me wrong. I think it is crucial to test real, live clusters for
>> a project like Solr, and we should keep the tests (and stabilize them). But
>> we cannot focus only on integration. It is developer hostile :)
>> I'd like a "gradlew test" to take 3-5 minutes, at most. Perhaps "gradlew
>> check" could include integration tests while "test" don't?
>> I also know that Mark Miller could write 24 e-mails on this topic and how
>> fast our tests could be. In fact, lightning fast I'm told. But let's not go
>> there in this thread :) Progress over perfection.
>>
>> Jan
>>
>> --
> Uwe Schindler
> Achterdiek 19, 28357 Bremen
> https://www.thetaphi.de
>
>
>

Reply via email to