: I'm upgrading a plugin and use the AbstractSolrTestCase for tests. My tests
: work fine in 5.X but when I upgraded to 6.X the tests sometimes throw an
: error during initialization. Basically it says,
: "org.apache.solr.common.SolrException: Error instantiating
: shardHandlerFactory class
: [org.apache.solr.handler.component.HttpShardHandlerFactory]: Unable to
: build KeyStore from file: null"

Ugh.  and of course there are no other details to troubleshoot that 
because the stupid error handling doesn't wrap the original exception -- 
it just throws it away.

I'm pretty sure the problem you are seeing (unfortunately manifested in 
a really confusing way) is that SolrTestCaseJ4 (and AbstractSolrTestCase 
which subclasses it) has randomized the use of SSL for a while, but at 
some point it also started randomizing the use of client auth -- but this 
randomization happens very infrequently.

(for details, check out the SSLTestConfig and it's usage in 
SolrTestCaseJ4)

The bottom line is, in order for the (randomized) clientAuth stuff to 
work, SolrTestCaseJ4 assumes it can find an 
"../etc/test/solrtest.keystore" realtive to ExternalPaths.SERVER_HOME.

If you don't have that in your test setup, bad things happen.

I believe the quickest way for you to resolve this failure in your own 
usage of AbstractSolrTestCase is to just add the @SupressSSL annotation to 
your tests -- assuming you don't care about randomly testing your plugin 
with SSL authentication (for 99.999% of solr plugins, wether solr is being 
used over http or https shouldn't matter for test purposes)

If you do want to include randomized SSL testing, then you need to make 
sure your that when/how you run your tests, ExternalPaths.SERVER_HOME 
resolves to the correct place, and "../etc/test/solrtest.keystore" 
resolves to a real file solr can use as the keystore.

I'll file some Jiras to try and improve the error handline in these 
situations.



-Hoss
http://www.lucidworks.com/

Reply via email to