mirror of https://github.com/apache/lucene.git
SOLR-10338: Configure SecureRandom non blocking for tests.
This commit is contained in:
parent
bdd0c7e320
commit
0445f8200e
|
@ -2,7 +2,7 @@
|
|||
<project version="4">
|
||||
<component name="RunManager" selected="JUnit.Lucene core">
|
||||
<configuration default="true" type="JUnit" factoryName="JUnit">
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="VM_PARAMETERS" value="-ea -Djava.security.egd=file:/dev/./urandom" />
|
||||
</configuration>
|
||||
<configuration default="false" name="Lucene core" type="JUnit" factoryName="JUnit">
|
||||
<module name="lucene-core-tests" />
|
||||
|
|
|
@ -277,6 +277,7 @@
|
|||
<tests.postingsformat>${tests.postingsformat}</tests.postingsformat>
|
||||
<tests.timezone>${tests.timezone}</tests.timezone>
|
||||
<tests.verbose>${tests.verbose}</tests.verbose>
|
||||
<java.security.egd>file:/dev/./urandom</java.security.egd>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
|
|
@ -1062,6 +1062,9 @@
|
|||
|
||||
<sysproperty key="tests.src.home" value="${user.dir}" />
|
||||
|
||||
<!-- replaces default random source to the nonblocking variant -->
|
||||
<sysproperty key="java.security.egd" value="file:/dev/./urandom"/>
|
||||
|
||||
<!-- Only pass these to the test JVMs if defined in ANT. -->
|
||||
<syspropertyset>
|
||||
<propertyref prefix="tests.maxfailures" />
|
||||
|
|
|
@ -176,6 +176,8 @@ Other Changes
|
|||
|
||||
* SOLR-10147: Admin UI -> Cloud -> Graph: Impossible to see shard state (Amrit Sarkar, janhoy)
|
||||
|
||||
* SOLR-10338: Configure SecureRandom non blocking for tests. (Mihaly Toth, hossman, Ishan Chattopadhyaya, via Mark Miller)
|
||||
|
||||
================== 6.5.0 ==================
|
||||
|
||||
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.SecureRandom;
|
||||
|
||||
public class SecureRandomAlgorithmTesterApp {
|
||||
public static void main(String[] args) throws NoSuchAlgorithmException {
|
||||
String algorithm = args[0];
|
||||
String method = args[1];
|
||||
int amount = Integer.valueOf(args[2]);
|
||||
SecureRandom secureRandom;
|
||||
if(algorithm.equals("default"))
|
||||
secureRandom = new SecureRandom();
|
||||
else
|
||||
secureRandom = SecureRandom.getInstance(algorithm);
|
||||
System.out.println("Algorithm:" + secureRandom.getAlgorithm());
|
||||
switch(method) {
|
||||
case "seed": secureRandom.generateSeed(amount); break;
|
||||
case "bytes": secureRandom.nextBytes(new byte[amount]); break;
|
||||
case "long": secureRandom.nextLong(); break;
|
||||
case "int": secureRandom.nextInt(); break;
|
||||
default: throw new IllegalArgumentException("Not supported random function: " + method);
|
||||
}
|
||||
System.out.println("SecureRandom function invoked");
|
||||
}
|
||||
}
|
|
@ -39,6 +39,7 @@ import java.nio.charset.StandardCharsets;
|
|||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.security.SecureRandom;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
@ -2431,6 +2432,14 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void assertNonBlockingRandomGeneratorAvailable() {
|
||||
if(Boolean.parseBoolean(System.getProperty("test.solr.allow.any.securerandom","false")))
|
||||
return;
|
||||
// Use -Djava.security.egd=file:/dev/./urandom VM option if you hit this
|
||||
assertEquals("SHA1PRNG", new SecureRandom().getAlgorithm());
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void unchooseMPForMP() {
|
||||
System.clearProperty(SYSTEM_PROPERTY_SOLR_TESTS_USEMERGEPOLICYFACTORY);
|
||||
|
|
Loading…
Reference in New Issue