Small number of test fixes (#220)
* Workaround for apache solr RNG algorithm enforcement in tests Signed-off-by: AlexDBlack <blacka101@gmail.com> * DeepWalk gradient check spam reduction Signed-off-by: AlexDBlack <blacka101@gmail.com> * Timeout increase Signed-off-by: AlexDBlack <blacka101@gmail.com>
This commit is contained in:
		
							parent
							
								
									ce6848c9fe
								
							
						
					
					
						commit
						937a27ae27
					
				@ -18,6 +18,8 @@ package org.deeplearning4j.nn.dataimport.solr.client.solrj.io.stream;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
 | 
					import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
 | 
				
			||||||
import com.carrotsearch.randomizedtesting.ThreadFilter;
 | 
					import com.carrotsearch.randomizedtesting.ThreadFilter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.security.SecureRandom;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.Collections;
 | 
					import java.util.Collections;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
@ -44,6 +46,18 @@ import org.nd4j.rng.deallocator.NativeRandomDeallocator;
 | 
				
			|||||||
})
 | 
					})
 | 
				
			||||||
public class TupleStreamDataSetIteratorTest extends SolrCloudTestCase {
 | 
					public class TupleStreamDataSetIteratorTest extends SolrCloudTestCase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static {
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					    This is a hack around the backend-dependent nature of secure random implementations
 | 
				
			||||||
 | 
					    though we can set the secure random algorithm in our pom.xml files (via maven surefire and test.solr.allowed.securerandom)
 | 
				
			||||||
 | 
					    there isn't a mechanism that is completely platform independent.
 | 
				
			||||||
 | 
					    By setting it there (for example, to NativePRNG) that makes it pass on some platforms like Linux but fails on some JVMs on Windows
 | 
				
			||||||
 | 
					    For testing purposes, we don't need strict guarantees around RNG, hence we don't want to enforce the RNG algorithm
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    String algorithm = new SecureRandom().getAlgorithm();
 | 
				
			||||||
 | 
					    System.setProperty("test.solr.allowed.securerandom", algorithm);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public static class PrivateDeallocatorThreadsFilter implements ThreadFilter {
 | 
					  public static class PrivateDeallocatorThreadsFilter implements ThreadFilter {
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Reject deallocator threads over whose cleanup this test has no control.
 | 
					     * Reject deallocator threads over whose cleanup this test has no control.
 | 
				
			||||||
 | 
				
			|||||||
@ -66,7 +66,7 @@ public class DeepWalkGradientCheck extends BaseDL4JTest {
 | 
				
			|||||||
        for (int i = 0; i < 7; i++) {
 | 
					        for (int i = 0; i < 7; i++) {
 | 
				
			||||||
            INDArray vector = deepWalk.getVertexVector(i);
 | 
					            INDArray vector = deepWalk.getVertexVector(i);
 | 
				
			||||||
            assertArrayEquals(new long[] {vectorSize}, vector.shape());
 | 
					            assertArrayEquals(new long[] {vectorSize}, vector.shape());
 | 
				
			||||||
            System.out.println(Arrays.toString(vector.dup().data().asFloat()));
 | 
					//            System.out.println(Arrays.toString(vector.dup().data().asFloat()));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        GraphWalkIterator<String> iter = new RandomWalkIterator<>(graph, 8);
 | 
					        GraphWalkIterator<String> iter = new RandomWalkIterator<>(graph, 8);
 | 
				
			||||||
@ -182,10 +182,10 @@ public class DeepWalkGradientCheck extends BaseDL4JTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    if (relError > MAX_REL_ERROR && absErr > MIN_ABS_ERROR)
 | 
					                    if (relError > MAX_REL_ERROR && absErr > MIN_ABS_ERROR)
 | 
				
			||||||
                        fail(msg);
 | 
					                        fail(msg);
 | 
				
			||||||
                    else
 | 
					//                    else
 | 
				
			||||||
                        System.out.println(msg);
 | 
					//                        System.out.println(msg);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                System.out.println();
 | 
					//                System.out.println();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -216,7 +216,7 @@ public class DeepWalkGradientCheck extends BaseDL4JTest {
 | 
				
			|||||||
        for (int i = 0; i < nVertices; i++) {
 | 
					        for (int i = 0; i < nVertices; i++) {
 | 
				
			||||||
            INDArray vector = deepWalk.getVertexVector(i);
 | 
					            INDArray vector = deepWalk.getVertexVector(i);
 | 
				
			||||||
            assertArrayEquals(new long[] {vectorSize}, vector.shape());
 | 
					            assertArrayEquals(new long[] {vectorSize}, vector.shape());
 | 
				
			||||||
            System.out.println(Arrays.toString(vector.dup().data().asFloat()));
 | 
					//            System.out.println(Arrays.toString(vector.dup().data().asFloat()));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        GraphWalkIterator<String> iter = new RandomWalkIterator<>(graph, 10);
 | 
					        GraphWalkIterator<String> iter = new RandomWalkIterator<>(graph, 10);
 | 
				
			||||||
@ -295,8 +295,8 @@ public class DeepWalkGradientCheck extends BaseDL4JTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        if (relError > MAX_REL_ERROR && absErr > minAbsError)
 | 
					                        if (relError > MAX_REL_ERROR && absErr > minAbsError)
 | 
				
			||||||
                            fail(msg);
 | 
					                            fail(msg);
 | 
				
			||||||
                        else
 | 
					//                        else
 | 
				
			||||||
                            System.out.println(msg);
 | 
					//                            System.out.println(msg);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -18,6 +18,7 @@ package org.deeplearning4j.nn.modelexport.solr.handler;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.io.File;
 | 
					import java.io.File;
 | 
				
			||||||
import java.nio.file.Path;
 | 
					import java.nio.file.Path;
 | 
				
			||||||
 | 
					import java.security.SecureRandom;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.carrotsearch.randomizedtesting.ThreadFilter;
 | 
					import com.carrotsearch.randomizedtesting.ThreadFilter;
 | 
				
			||||||
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
 | 
					import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
 | 
				
			||||||
@ -49,6 +50,19 @@ import org.nd4j.rng.deallocator.NativeRandomDeallocator;
 | 
				
			|||||||
})
 | 
					})
 | 
				
			||||||
public class ModelTupleStreamIntegrationTest extends SolrCloudTestCase {
 | 
					public class ModelTupleStreamIntegrationTest extends SolrCloudTestCase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static {
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					    This is a hack around the backend-dependent nature of secure random implementations
 | 
				
			||||||
 | 
					    though we can set the secure random algorithm in our pom.xml files (via maven surefire and test.solr.allowed.securerandom)
 | 
				
			||||||
 | 
					    there isn't a mechanism that is completely platform independent.
 | 
				
			||||||
 | 
					    By setting it there (for example, to NativePRNG) that makes it pass on some platforms like Linux but fails on some JVMs on Windows
 | 
				
			||||||
 | 
					    For testing purposes, we don't need strict guarantees around RNG, hence we don't want to enforce the RNG algorithm
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    String algorithm = new SecureRandom().getAlgorithm();
 | 
				
			||||||
 | 
					    System.setProperty("test.solr.allowed.securerandom", algorithm);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public static class PrivateDeallocatorThreadsFilter implements ThreadFilter {
 | 
					  public static class PrivateDeallocatorThreadsFilter implements ThreadFilter {
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Reject deallocator threads over whose cleanup this test has no control.
 | 
					     * Reject deallocator threads over whose cleanup this test has no control.
 | 
				
			||||||
 | 
				
			|||||||
@ -19,6 +19,7 @@ package org.deeplearning4j.nn.modelexport.solr.handler;
 | 
				
			|||||||
import java.io.File;
 | 
					import java.io.File;
 | 
				
			||||||
import java.nio.file.Files;
 | 
					import java.nio.file.Files;
 | 
				
			||||||
import java.nio.file.Path;
 | 
					import java.nio.file.Path;
 | 
				
			||||||
 | 
					import java.security.SecureRandom;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
@ -58,6 +59,18 @@ import org.nd4j.linalg.lossfunctions.LossFunctions;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public class ModelTupleStreamTest {
 | 
					public class ModelTupleStreamTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static {
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					    This is a hack around the backend-dependent nature of secure random implementations
 | 
				
			||||||
 | 
					    though we can set the secure random algorithm in our pom.xml files (via maven surefire and test.solr.allowed.securerandom)
 | 
				
			||||||
 | 
					    there isn't a mechanism that is completely platform independent.
 | 
				
			||||||
 | 
					    By setting it there (for example, to NativePRNG) that makes it pass on some platforms like Linux but fails on some JVMs on Windows
 | 
				
			||||||
 | 
					    For testing purposes, we don't need strict guarantees around RNG, hence we don't want to enforce the RNG algorithm
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    String algorithm = new SecureRandom().getAlgorithm();
 | 
				
			||||||
 | 
					    System.setProperty("test.solr.allowed.securerandom", algorithm);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected List<float[]> floatsList(int numFloats) {
 | 
					  protected List<float[]> floatsList(int numFloats) {
 | 
				
			||||||
    final List<float[]> floatsList = new ArrayList<float[]>();
 | 
					    final List<float[]> floatsList = new ArrayList<float[]>();
 | 
				
			||||||
    final float[] floats0 = new float[numFloats];
 | 
					    final float[] floats0 = new float[numFloats];
 | 
				
			||||||
 | 
				
			|||||||
@ -34,7 +34,7 @@ public class MiscTests extends BaseDL4JTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public long getTimeoutMilliseconds() {
 | 
					    public long getTimeoutMilliseconds() {
 | 
				
			||||||
        return 120000L;
 | 
					        return 240000L;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user