You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Hoss Man (JIRA)" <ji...@apache.org> on 2013/05/30 03:22:20 UTC

[jira] [Updated] (SOLR-4853) SolrJettyTestBase can no longer be reused by end users

     [ https://issues.apache.org/jira/browse/SOLR-4853?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hoss Man updated SOLR-4853:
---------------------------

    Attachment: SOLR-4853.patch

Thanks for opening this John,

I don't remember seeing Ludovic's comment in SOLR-4394 after that issue was resolved, but even looking at it now i couldn't understand how my change caused a problem in that code since: a) i didn't modify anything in ExternalPaths; b) SolrJettyTestBase already had a compile time dependency on ExternalPaths.  It's only because of your stack trace that i was able to understand his comment about overriding getSolrHome() and how my change introducing TEST_KEYSTORE introduced a problem for people subclassing SolrjettyTestBase in their external tests.

I'm attaching a patch that i think resolves this issue.  SolrJettyTestBase now skips the SSL randomization logic (instead of a hard fail) if the example configs can't be found, and i also tried to improve ExternalPaths.SOURCE_HOME (and determineSourceHome()) have cleaner behavior in the event that they get used inadvertently by a client test.

I experimenting with this changes in a little one off external test i created and it seemed to work, but i'd appreciate feedback from an end user who got burned by this bug to e sure it really resolves things for you.

                
> SolrJettyTestBase can no longer be reused by end users
> ------------------------------------------------------
>
>                 Key: SOLR-4853
>                 URL: https://issues.apache.org/jira/browse/SOLR-4853
>             Project: Solr
>          Issue Type: Bug
>          Components: Tests
>    Affects Versions: 4.3, 4.2.1
>         Environment: Java 1.7.0_21, Maven 3.0.3, OS X 10.7.5
>            Reporter: John Gibson
>              Labels: junit, test
>         Attachments: SOLR-4853.patch
>
>
> While trying to use SolrJettyTestBase to build some unit tests for my project I ran into an NPE:
> {code}
> java.lang.NullPointerException
>         at org.apache.solr.util.ExternalPaths.determineSourceHome(ExternalPaths.java:50)
>         at org.apache.solr.util.ExternalPaths.<clinit>(ExternalPaths.java:28)
>         at org.apache.solr.SolrJettyTestBase.<clinit>(SolrJettyTestBase.java:53)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:266)
>         at com.carrotsearch.randomizedtesting.RandomizedRunner$1.run(RandomizedRunner.java:486)
> {code}
> Apparently some changes to SolrJettyTestBase's https support caused it to require the keystore that's distributed with the Solr examples.  Specifically the TEST_KEYSTORE static variable triggers a search for SOURCE_HOME in ExternalPaths which throws an NPE if the folder isn't found.
> According to Steve Molloy this [used to work in Solr 4.1|http://lucene.472066.n3.nabble.com/Test-framework-question-td4060123.html] and Chris Hostetter confirmed that this is a bug.  Ludovic Boutros also reported this [in SOLR-4394|https://issues.apache.org/jira/browse/SOLR-4394?focusedCommentId=13610991&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13610991].

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org