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">
|
<project version="4">
|
||||||
<component name="RunManager" selected="JUnit.Lucene core">
|
<component name="RunManager" selected="JUnit.Lucene core">
|
||||||
<configuration default="true" type="JUnit" factoryName="JUnit">
|
<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>
|
||||||
<configuration default="false" name="Lucene core" type="JUnit" factoryName="JUnit">
|
<configuration default="false" name="Lucene core" type="JUnit" factoryName="JUnit">
|
||||||
<module name="lucene-core-tests" />
|
<module name="lucene-core-tests" />
|
||||||
|
|
|
@ -277,6 +277,7 @@
|
||||||
<tests.postingsformat>${tests.postingsformat}</tests.postingsformat>
|
<tests.postingsformat>${tests.postingsformat}</tests.postingsformat>
|
||||||
<tests.timezone>${tests.timezone}</tests.timezone>
|
<tests.timezone>${tests.timezone}</tests.timezone>
|
||||||
<tests.verbose>${tests.verbose}</tests.verbose>
|
<tests.verbose>${tests.verbose}</tests.verbose>
|
||||||
|
<java.security.egd>file:/dev/./urandom</java.security.egd>
|
||||||
</systemPropertyVariables>
|
</systemPropertyVariables>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
|
@ -1062,6 +1062,9 @@
|
||||||
|
|
||||||
<sysproperty key="tests.src.home" value="${user.dir}" />
|
<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. -->
|
<!-- Only pass these to the test JVMs if defined in ANT. -->
|
||||||
<syspropertyset>
|
<syspropertyset>
|
||||||
<propertyref prefix="tests.maxfailures" />
|
<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-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 ==================
|
================== 6.5.0 ==================
|
||||||
|
|
||||||
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
|
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.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
import java.security.SecureRandom;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
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
|
@AfterClass
|
||||||
public static void unchooseMPForMP() {
|
public static void unchooseMPForMP() {
|
||||||
System.clearProperty(SYSTEM_PROPERTY_SOLR_TESTS_USEMERGEPOLICYFACTORY);
|
System.clearProperty(SYSTEM_PROPERTY_SOLR_TESTS_USEMERGEPOLICYFACTORY);
|
||||||
|
|
Loading…
Reference in New Issue