< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.test/src/org/graalvm/compiler/test/GraalTest.java

Print this page
rev 52509 : [mq]: graal


  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 
  25 package org.graalvm.compiler.test;
  26 
  27 import static org.graalvm.compiler.debug.DebugContext.DEFAULT_LOG_STREAM;
  28 import static org.graalvm.compiler.debug.DebugContext.NO_DESCRIPTION;
  29 
  30 import java.io.PrintStream;
  31 import java.io.PrintWriter;
  32 import java.lang.reflect.Field;
  33 import java.lang.reflect.Method;
  34 import java.util.ArrayList;
  35 import java.util.Arrays;
  36 import java.util.Collection;
  37 import java.util.Collections;
  38 import java.util.concurrent.TimeUnit;
  39 import java.util.List;

  40 
  41 import org.graalvm.compiler.debug.DebugContext;
  42 import org.graalvm.compiler.debug.DebugDumpHandler;
  43 import org.graalvm.compiler.debug.DebugHandlersFactory;
  44 import org.graalvm.compiler.debug.GlobalMetrics;
  45 import org.graalvm.compiler.options.OptionValues;
  46 import org.graalvm.compiler.serviceprovider.GraalServices;
  47 import org.junit.After;
  48 import org.junit.Assert;

  49 import org.junit.internal.ComparisonCriteria;
  50 import org.junit.internal.ExactComparisonCriteria;
  51 import org.junit.rules.DisableOnDebug;
  52 import org.junit.rules.TestRule;
  53 import org.junit.rules.Timeout;
  54 
  55 import jdk.vm.ci.meta.ResolvedJavaMethod;
  56 import sun.misc.Unsafe;
  57 
  58 /**
  59  * Base class that contains common utility methods and classes useful in unit tests.
  60  */
  61 public class GraalTest {
  62 
  63     public static final Unsafe UNSAFE;
  64     static {
  65         try {
  66             Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
  67             theUnsafe.setAccessible(true);
  68             UNSAFE = (Unsafe) theUnsafe.get(Unsafe.class);


 220             Class<?> actualClass = actual.getClass();
 221             if (expectedClass.isArray()) {
 222                 Assert.assertEquals(message, expectedClass, actualClass);
 223                 if (expected instanceof double[] || expected instanceof Object[]) {
 224                     doubleUlpsDeltaCriteria.arrayEquals(message, expected, actual);
 225                     return;
 226                 } else if (expected instanceof float[] || expected instanceof Object[]) {
 227                     floatUlpsDeltaCriteria.arrayEquals(message, expected, actual);
 228                     return;
 229                 }
 230             } else if (expectedClass.equals(double.class) && actualClass.equals(double.class)) {
 231                 doubleUlpsDeltaCriteria.arrayEquals(message, expected, actual);
 232                 return;
 233             } else if (expectedClass.equals(float.class) && actualClass.equals(float.class)) {
 234                 floatUlpsDeltaCriteria.arrayEquals(message, expected, actual);
 235                 return;
 236             }
 237         }
 238         // anything else just use the non-ulps version
 239         assertDeepEquals(message, expected, actual, equalFloatsOrDoublesDelta());










 240     }
 241 
 242     /**
 243      * Gets the value used by {@link #assertDeepEquals(Object, Object)} and
 244      * {@link #assertDeepEquals(String, Object, Object)} for the maximum delta between two doubles
 245      * or floats for which both numbers are still considered equal.
 246      */
 247     protected double equalFloatsOrDoublesDelta() {
 248         return 0.0D;
 249     }
 250 
 251     // unless overridden ulpsDelta is not used
 252     protected int ulpsDelta() {
 253         return 0;
 254     }
 255 
 256     @SuppressWarnings("serial")
 257     public static class MultiCauseAssertionError extends AssertionError {
 258 
 259         private Throwable[] causes;




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 
  25 package org.graalvm.compiler.test;
  26 
  27 import static org.graalvm.compiler.debug.DebugContext.DEFAULT_LOG_STREAM;
  28 import static org.graalvm.compiler.debug.DebugContext.NO_DESCRIPTION;
  29 
  30 import java.io.PrintStream;
  31 import java.io.PrintWriter;
  32 import java.lang.reflect.Field;
  33 import java.lang.reflect.Method;
  34 import java.util.ArrayList;
  35 import java.util.Arrays;
  36 import java.util.Collection;
  37 import java.util.Collections;

  38 import java.util.List;
  39 import java.util.concurrent.TimeUnit;
  40 
  41 import org.graalvm.compiler.debug.DebugContext;
  42 import org.graalvm.compiler.debug.DebugDumpHandler;
  43 import org.graalvm.compiler.debug.DebugHandlersFactory;
  44 import org.graalvm.compiler.debug.GlobalMetrics;
  45 import org.graalvm.compiler.options.OptionValues;
  46 import org.graalvm.compiler.serviceprovider.GraalServices;
  47 import org.junit.After;
  48 import org.junit.Assert;
  49 import org.junit.AssumptionViolatedException;
  50 import org.junit.internal.ComparisonCriteria;
  51 import org.junit.internal.ExactComparisonCriteria;
  52 import org.junit.rules.DisableOnDebug;
  53 import org.junit.rules.TestRule;
  54 import org.junit.rules.Timeout;
  55 
  56 import jdk.vm.ci.meta.ResolvedJavaMethod;
  57 import sun.misc.Unsafe;
  58 
  59 /**
  60  * Base class that contains common utility methods and classes useful in unit tests.
  61  */
  62 public class GraalTest {
  63 
  64     public static final Unsafe UNSAFE;
  65     static {
  66         try {
  67             Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
  68             theUnsafe.setAccessible(true);
  69             UNSAFE = (Unsafe) theUnsafe.get(Unsafe.class);


 221             Class<?> actualClass = actual.getClass();
 222             if (expectedClass.isArray()) {
 223                 Assert.assertEquals(message, expectedClass, actualClass);
 224                 if (expected instanceof double[] || expected instanceof Object[]) {
 225                     doubleUlpsDeltaCriteria.arrayEquals(message, expected, actual);
 226                     return;
 227                 } else if (expected instanceof float[] || expected instanceof Object[]) {
 228                     floatUlpsDeltaCriteria.arrayEquals(message, expected, actual);
 229                     return;
 230                 }
 231             } else if (expectedClass.equals(double.class) && actualClass.equals(double.class)) {
 232                 doubleUlpsDeltaCriteria.arrayEquals(message, expected, actual);
 233                 return;
 234             } else if (expectedClass.equals(float.class) && actualClass.equals(float.class)) {
 235                 floatUlpsDeltaCriteria.arrayEquals(message, expected, actual);
 236                 return;
 237             }
 238         }
 239         // anything else just use the non-ulps version
 240         assertDeepEquals(message, expected, actual, equalFloatsOrDoublesDelta());
 241     }
 242 
 243     /** @see <a href="https://bugs.openjdk.java.net/browse/JDK-8076557">JDK-8076557</a> */
 244     protected static void assumeManagementLibraryIsLoadable() {
 245         try {
 246             /* Trigger loading of the management library using the bootstrap class loader. */
 247             GraalServices.getCurrentThreadAllocatedBytes();
 248         } catch (UnsatisfiedLinkError | NoClassDefFoundError | UnsupportedOperationException e) {
 249             throw new AssumptionViolatedException("Management interface is unavailable: " + e);
 250         }
 251     }
 252 
 253     /**
 254      * Gets the value used by {@link #assertDeepEquals(Object, Object)} and
 255      * {@link #assertDeepEquals(String, Object, Object)} for the maximum delta between two doubles
 256      * or floats for which both numbers are still considered equal.
 257      */
 258     protected double equalFloatsOrDoublesDelta() {
 259         return 0.0D;
 260     }
 261 
 262     // unless overridden ulpsDelta is not used
 263     protected int ulpsDelta() {
 264         return 0;
 265     }
 266 
 267     @SuppressWarnings("serial")
 268     public static class MultiCauseAssertionError extends AssertionError {
 269 
 270         private Throwable[] causes;


< prev index next >