Class RandomizedTest

java.lang.Object
com.carrotsearch.randomizedtesting.RandomizedTest

public class RandomizedTest extends Object
Common scaffolding for subclassing randomized tests.
See Also:
  • Field Details

  • Constructor Details

    • RandomizedTest

      public RandomizedTest()
  • Method Details

    • getContext

      public static RandomizedContext getContext()
    • isNightly

      public static boolean isNightly()
      Returns true if Nightly test group is enabled.
      See Also:
    • getRandom

      public static Random getRandom()
      Shortcut for RandomizedContext.getRandom(). Even though this method is static, it returns per-thread Random instance, so no race conditions can occur.

      It is recommended that specific methods are used to pick random values.

    • randomBoolean

      public static boolean randomBoolean()
    • randomByte

      public static byte randomByte()
    • randomShort

      public static short randomShort()
    • randomInt

      public static int randomInt()
    • randomFloat

      public static float randomFloat()
    • randomDouble

      public static double randomDouble()
    • randomLong

      public static long randomLong()
    • randomGaussian

      public static double randomGaussian()
      See Also:
    • biasedFloatBetween

      public static float biasedFloatBetween(float min, float max)
      A biased "evil" random float between min and max (inclusive).
      See Also:
    • biasedDoubleBetween

      public static double biasedDoubleBetween(double min, double max)
      A biased "evil" random double between min and max (inclusive).
      See Also:
    • randomBytesOfLength

      public static byte[] randomBytesOfLength(int length)
      Returns a byte array with random content.
      Parameters:
      length - The length of the byte array. Can be zero.
      Returns:
      Returns a byte array with random content.
    • randomBytesOfLength

      public static byte[] randomBytesOfLength(int minLength, int maxLength)
      Returns a byte array with random content.
      Parameters:
      minLength - The minimum length of the byte array. Can be zero.
      maxLength - The maximum length of the byte array. Can be zero.
      Returns:
      Returns a byte array with random content.
    • randomInt

      public static int randomInt(int max)
      A random integer from 0..max (inclusive).
    • randomLong

      public static long randomLong(long max)
      A random long from 0..max (inclusive).
    • randomIntBetween

      public static int randomIntBetween(int min, int max)
      A random integer from min to max (inclusive).
      See Also:
    • between

      public static int between(int min, int max)
      See Also:
    • randomLongBetween

      public static long randomLongBetween(long min, long max)
      A random long from min to max (inclusive).
    • between

      public static long between(long min, long max)
    • atLeast

      public static int atLeast(int min)
      Returns a random value greater or equal to min. The value picked is affected by isNightly() and multiplier().
      See Also:
    • atMost

      public static int atMost(int max)
      Returns a non-negative random value smaller or equal max. The value picked is affected by isNightly() and multiplier().

      This method is effectively an alias to:

       scaledRandomIntBetween(0, max)
       
      See Also:
    • rarely

      public static boolean rarely()
      Rarely returns true in about 10% of all calls (regardless of the isNightly() mode).
    • frequently

      public static boolean frequently()
      The exact opposite of rarely().
    • randomFrom

      public static <T> T randomFrom(T[] array)
      Pick a random object from the given array. The array must not be empty.
    • randomFrom

      public static <T> T randomFrom(List<T> list)
      Pick a random object from the given list.
    • randomFrom

      public static byte randomFrom(byte[] array)
    • randomFrom

      public static short randomFrom(short[] array)
    • randomFrom

      public static int randomFrom(int[] array)
    • randomFrom

      public static char randomFrom(char[] array)
    • randomFrom

      public static float randomFrom(float[] array)
    • randomFrom

      public static long randomFrom(long[] array)
    • randomFrom

      public static double randomFrom(double[] array)
    • multiplier

      public static double multiplier()
      A multiplier can be used to linearly scale certain values. It can be used to make data or iterations of certain tests "heavier" for nightly runs, for example.

      The default multiplier value is 1.

      See Also:
    • iterations

      public static int iterations(int min, int max)
      Returns a "scaled" number of iterations for loops which can have a variable iteration count. This method is effectively an alias to scaledRandomIntBetween(int, int).
    • scaledRandomIntBetween

      public static int scaledRandomIntBetween(int min, int max)
      Returns a "scaled" random number between min and max (inclusive). The number of iterations will fall between [min, max], but the selection will also try to achieve the points below:
      • the multiplier can be used to move the number of iterations closer to min (if it is smaller than 1) or closer to max (if it is larger than 1). Setting the multiplier to 0 will always result in picking min.
      • on normal runs, the number will be closer to min than to max.
      • on nightly runs, the number will be closer to max than to min.
      Parameters:
      min - Minimum (inclusive).
      max - Maximum (inclusive).
      Returns:
      Returns a random number between min and max.
      See Also:
    • globalTempDir

      public static Path globalTempDir() throws IOException
      Global temporary directory created for the duration of this class's lifespan. If multiple class loaders are used, there may be more global temp dirs, but it shouldn't really be the case in practice.
      Throws:
      IOException
    • newTempDir

      public Path newTempDir() throws IOException
      Creates a new temporary directory for the LifecycleScope.TEST duration.
      Throws:
      IOException
      See Also:
    • newTempDir

      public static Path newTempDir(LifecycleScope scope) throws IOException
      Creates a temporary directory, deleted after the given lifecycle phase. Temporary directory is created relative to a globally picked temporary directory.
      Throws:
      IOException
    • closeAfterTest

      public <T extends Closeable> T closeAfterTest(T resource)
      Registers a Closeable resource that should be closed after the test completes.
      Returns:
      resource (for call chaining).
    • closeAfterSuite

      public static <T extends Closeable> T closeAfterSuite(T resource)
      Registers a Closeable resource that should be closed after the suite completes.
      Returns:
      resource (for call chaining).
    • newTempFile

      public Path newTempFile() throws IOException
      Creates a new temporary file for the LifecycleScope.TEST duration.
      Throws:
      IOException
    • newTempFile

      public static Path newTempFile(LifecycleScope scope) throws IOException
      Creates a new temporary file deleted after the given lifecycle phase completes. The file is physically created on disk, but is not locked or opened.
      Throws:
      IOException
    • nextTempName

      protected static String nextTempName()
      Next temporary filename.
    • rmDir

      public static void rmDir(Path path) throws IOException
      Recursively delete a folder. Throws an exception if any failure occurs.
      Parameters:
      path - Path to the folder to be (recursively) deleted. The folder must exist.
      Throws:
      IOException
    • newServerSocket

      public static ServerSocket newServerSocket(LifecycleScope scope) throws IOException
      Assign a temporary server socket. If you need a temporary port one can assign a server socket and close it immediately, just to acquire its port number.
      Parameters:
      scope - The lifecycle scope to close the socket after. If the socket is closed earlier, nothing happens (silently dropped).
      Throws:
      IOException
    • randomLocale

      public static Locale randomLocale()
      Return a random Locale from the available locales on the system.

      Warning: This test assumes the returned array of locales is repeatable from jvm execution to jvm execution. It _may_ be different from jvm to jvm and as such, it can render tests execute in a different way.

    • randomTimeZone

      public static TimeZone randomTimeZone()
      Return a random TimeZone from the available timezones on the system.

      Warning: This test assumes the returned array of time zones is repeatable from jvm execution to jvm execution. It _may_ be different from jvm to jvm and as such, it can render tests execute in a different way.

    • randomAsciiOfLengthBetween

      @Deprecated public static String randomAsciiOfLengthBetween(int minCodeUnits, int maxCodeUnits)
    • randomAsciiOfLength

      @Deprecated public static String randomAsciiOfLength(int codeUnits)
      Deprecated.
    • randomAsciiLettersOfLengthBetween

      public static String randomAsciiLettersOfLengthBetween(int minLetters, int maxLetters)
      See Also:
    • randomAsciiLettersOfLength

      public static String randomAsciiLettersOfLength(int codeUnits)
      See Also:
    • randomAsciiAlphanumOfLengthBetween

      public static String randomAsciiAlphanumOfLengthBetween(int minCodeUnits, int maxCodeUnits)
      See Also:
    • randomAsciiAlphanumOfLength

      public static String randomAsciiAlphanumOfLength(int codeUnits)
      See Also:
    • randomUnicodeOfLengthBetween

      public static String randomUnicodeOfLengthBetween(int minCodeUnits, int maxCodeUnits)
      See Also:
    • randomUnicodeOfLength

      public static String randomUnicodeOfLength(int codeUnits)
      See Also:
    • randomUnicodeOfCodepointLengthBetween

      public static String randomUnicodeOfCodepointLengthBetween(int minCodePoints, int maxCodePoints)
      See Also:
    • randomUnicodeOfCodepointLength

      public static String randomUnicodeOfCodepointLength(int codePoints)
      See Also:
    • randomRealisticUnicodeOfLengthBetween

      public static String randomRealisticUnicodeOfLengthBetween(int minCodeUnits, int maxCodeUnits)
      See Also:
    • randomRealisticUnicodeOfLength

      public static String randomRealisticUnicodeOfLength(int codeUnits)
      See Also:
    • randomRealisticUnicodeOfCodepointLengthBetween

      public static String randomRealisticUnicodeOfCodepointLengthBetween(int minCodePoints, int maxCodePoints)
      See Also:
    • randomRealisticUnicodeOfCodepointLength

      public static String randomRealisticUnicodeOfCodepointLength(int codePoints)
      See Also:
    • $

      public static Object[] $(Object... objects)
      This is an absolutely hacky utility to take a vararg as input and return the array of arguments as output. The name is a dollar for brevity, idea borrowed from http://code.google.com/p/junitparams/.
    • $$

      public static Object[][] $$(Object[]... objects)
      See Also:
    • sleep

      public static void sleep(long millis)
    • assumeTrue

      public static void assumeTrue(boolean condition)
      Making Assume.assumeTrue(boolean) directly available.
    • assumeFalse

      public static void assumeFalse(boolean condition)
    • assumeNotNull

      public static void assumeNotNull(Object... objects)
      Making Assume.assumeNotNull(Object...) directly available.
    • assumeTrue

      public static void assumeTrue(String message, boolean condition)
      Parameters:
      message - Message to be included in the exception's string.
      condition - If false an InternalAssumptionViolatedException is thrown by this method and the test case (should be) ignored (or rather technically, flagged as a failure not passing a certain assumption). Tests that are assumption-failures do not break builds (again: typically).
    • assumeFalse

      public static void assumeFalse(String message, boolean condition)
    • assumeNoException

      public static void assumeNoException(String msg, Throwable t)
      Assume t is null.
    • assumeNoException

      public static void assumeNoException(Throwable t)
      Making Assume.assumeNoException(Throwable) directly available.
    • systemPropertyAsDouble

      public static double systemPropertyAsDouble(String propertyName, double defaultValue)
      Get a system property and convert it to a double, if defined. Otherwise, return the default value.
    • systemPropertyAsFloat

      public static float systemPropertyAsFloat(String propertyName, float defaultValue)
      Get a system property and convert it to a float, if defined. Otherwise, return the default value.
    • systemPropertyAsInt

      public static int systemPropertyAsInt(String propertyName, int defaultValue)
      Get a system property and convert it to an int, if defined. Otherwise, return the default value.
    • systemPropertyAsLong

      public static float systemPropertyAsLong(String propertyName, int defaultValue)
      Get a system property and convert it to a long, if defined. Otherwise, return the default value.
    • systemPropertyAsBoolean

      public static boolean systemPropertyAsBoolean(String propertyName, boolean defaultValue)
      Get a system property and convert it to a boolean, if defined. This method returns true if the property exists an is set to any of the following strings (case-insensitive): true, on, yes, enabled.

      false is returned if the property exists and is set to any of the following strings (case-insensitive): false, off, no, disabled.

    • checkContext

      private static void checkContext()
      Ensures we're running with an initialized RandomizedContext.