Both org.apache.accumulo.core.security.crypto.CrypoTest & org.apache.accumulo.core.file.rfile.RFileTest have lots of failures due to calls to SEcureRandom with Random Number Generator Provider hard-coded as Sun. The IBM JVM has it's own built in RNG Provider called IBMJCE. 2 issues - hard-coded calls to SecureRandom.getInstance(<algo>,"SUN") and also default value in Property class is "SUN".
Options for proposals:
1. Add mechanism to override default Property through System property through new annotator in Property class. Only usage will be by Property.CRYPTO_SECURE_RNG_PROVIDER
The default is SUN, as coded in the Property class.
Some of the unit tests explicitly call SecureRandom.getInstance() with SUN as provider. Others rely on the default value, which is SUN (and do not rely on accumulo-site.xml in which this can be overridden). For the system tests, I propose adding an override through a System property. For regular execution of accumulo, accumulo-site.xml can include the adjusted default. However, system tests will also fall on same problem.
Another solution would be to have a factory class which supplies JVM specific behaviour, such as default NRG provider - this could be used by the Property class to retrieve this value based on the System.property for java.vendor etc.....