You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/04/03 18:45:34 UTC

[28/52] [abbrv] lucene-solr:jira/solr-9959: SOLR-10338: Configure SecureRandom non blocking for tests.

SOLR-10338: Configure SecureRandom non blocking for tests.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/0445f820
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/0445f820
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/0445f820

Branch: refs/heads/jira/solr-9959
Commit: 0445f8200e0630e1bb8b7117f200529ed1259747
Parents: bdd0c7e
Author: markrmiller <ma...@apache.org>
Authored: Fri Mar 31 10:53:20 2017 -0400
Committer: markrmiller <ma...@apache.org>
Committed: Fri Mar 31 10:53:20 2017 -0400

----------------------------------------------------------------------
 dev-tools/idea/.idea/workspace.xml              |  2 +-
 dev-tools/maven/pom.xml.template                |  1 +
 lucene/common-build.xml                         |  3 ++
 solr/CHANGES.txt                                |  2 +
 .../test/SecureRandomAlgorithmTesterApp.java    | 41 ++++++++++++++++++++
 .../java/org/apache/solr/SolrTestCaseJ4.java    |  9 +++++
 6 files changed, 57 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0445f820/dev-tools/idea/.idea/workspace.xml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/.idea/workspace.xml b/dev-tools/idea/.idea/workspace.xml
index 0ca7f0c..e22108f 100644
--- a/dev-tools/idea/.idea/workspace.xml
+++ b/dev-tools/idea/.idea/workspace.xml
@@ -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" />

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0445f820/dev-tools/maven/pom.xml.template
----------------------------------------------------------------------
diff --git a/dev-tools/maven/pom.xml.template b/dev-tools/maven/pom.xml.template
index cd8d6b8..6b7f915 100644
--- a/dev-tools/maven/pom.xml.template
+++ b/dev-tools/maven/pom.xml.template
@@ -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>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0445f820/lucene/common-build.xml
----------------------------------------------------------------------
diff --git a/lucene/common-build.xml b/lucene/common-build.xml
index 327a01d..aee7899 100644
--- a/lucene/common-build.xml
+++ b/lucene/common-build.xml
@@ -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" />

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0445f820/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 840de48..097ee2b 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0445f820/solr/core/src/test/SecureRandomAlgorithmTesterApp.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/SecureRandomAlgorithmTesterApp.java b/solr/core/src/test/SecureRandomAlgorithmTesterApp.java
new file mode 100644
index 0000000..44f79e9
--- /dev/null
+++ b/solr/core/src/test/SecureRandomAlgorithmTesterApp.java
@@ -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");
+  }
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0445f820/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
index f82ccc6..be8e96d 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -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);