Class SolrTestCaseJ4

java.lang.Object
org.junit.Assert
org.apache.lucene.tests.util.LuceneTestCase
org.apache.solr.SolrTestCase
org.apache.solr.SolrTestCaseJ4
Direct Known Subclasses:
AbstractBackupRepositoryTest, AbstractBadConfigTestBase, AbstractZkTestCase, BaseDistributedSearchTestCase, MultiSolrCloudTestCase, SolrCloudTestCase, SolrJettyTestBase, SolrTestCaseHS, UpdateProcessorTestBase

@SuppressFileSystems("ExtrasFS") @RandomizeSSL public abstract class SolrTestCaseJ4 extends SolrTestCase
A junit4 Solr test harness that extends SolrTestCase and, by extension, LuceneTestCase. To change which core is used when loading the schema and solrconfig.xml, simply invoke the initCore(String, String, Path, String) method.
  • Field Details

    • DEFAULT_TEST_COLLECTION_NAME

      public static final String DEFAULT_TEST_COLLECTION_NAME
      See Also:
    • DEFAULT_TEST_CORENAME

      public static final String DEFAULT_TEST_CORENAME
      See Also:
    • CORE_PROPERTIES_FILENAME

      protected static final String CORE_PROPERTIES_FILENAME
      See Also:
    • SYSTEM_PROPERTY_SOLR_TESTS_MERGEPOLICYFACTORY

      public static final String SYSTEM_PROPERTY_SOLR_TESTS_MERGEPOLICYFACTORY
      See Also:
    • TEST_URL_ALLOW_LIST

      public static final String TEST_URL_ALLOW_LIST
      See Also:
    • coreName

      protected static String coreName
    • DEFAULT_CONNECTION_TIMEOUT

      public static int DEFAULT_CONNECTION_TIMEOUT
    • testExecutor

      protected static volatile ExecutorService testExecutor
    • sslConfig

      public static volatile SSLTestConfig sslConfig
    • solrTestRules

      public org.junit.rules.TestRule solrTestRules
    • DEAD_HOST_1

      public static final String DEAD_HOST_1
      a "dead" host, if you try to connect to it, it will likely fail fast please consider using mocks and not real networking to simulate failure
      See Also:
    • DEAD_HOST_2

      public static final String DEAD_HOST_2
      a "dead" host, if you try to connect to it, it will likely fail fast please consider using mocks and not real networking to simulate failure
      See Also:
    • DEAD_HOST_3

      public static final String DEAD_HOST_3
      a "dead" host, if you try to connect to it, it will likely fail fast please consider using mocks and not real networking to simulate failure
      See Also:
    • configString

      protected static String configString
    • schemaString

      protected static String schemaString
    • testSolrHome

      protected static Path testSolrHome
    • solrConfig

      protected static org.apache.solr.core.SolrConfig solrConfig
    • h

      protected static TestHarness h
      Harness initialized by create[Default]Core[Container].

      For use in test methods as needed.

    • lrf

      protected static TestHarness.LocalRequestFactory lrf
      LocalRequestFactory initialized by create[Default]Core[Container] using sensible defaults.

      For use in test methods as needed.

    • ZERO_ONE

      public static final SolrTestCaseJ4.IRange ZERO_ONE
    • ZERO_TWO

      public static final SolrTestCaseJ4.IRange ZERO_TWO
    • ONE_ONE

      public static final SolrTestCaseJ4.IRange ONE_ONE
    • USE_NUMERIC_POINTS_SYSPROP

      public static final String USE_NUMERIC_POINTS_SYSPROP
      The name of a sysprop that can be set by users when running tests to force the types of numerics used for test classes that do not have the SolrTestCaseJ4.SuppressPointFields annotation:
      • If unset, then a random variable will be used to decide the type of numerics.
      • If set to true then Points based numerics will be used.
      • If set to false (or any other string) then Trie based numerics will be used.
      See Also:
    • NUMERIC_POINTS_SYSPROP

      public static final String NUMERIC_POINTS_SYSPROP
      The name of a sysprop that will either true or false indicating if numeric points fields are currently in use, depending on the user specified value of USE_NUMERIC_POINTS_SYSPROP and/or the SolrTestCaseJ4.SuppressPointFields annotation and/or randomization. Tests can use Boolean.getBoolean(NUMERIC_POINTS_SYSPROP).
      See Also:
    • NUMERIC_DOCVALUES_SYSPROP

      public static final String NUMERIC_DOCVALUES_SYSPROP
      The name of a sysprop that will be either true or false indicating if docValues should be used on a numeric field. This property string should be used in the docValues attribute of (most) numeric fieldTypes in schemas, and by default will be randomized by this class in a @BeforeClass. Subclasses that need to force specific behavior can use System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true") to override the default randomization.
      See Also:
    • UPDATELOG_SYSPROP

      public static final String UPDATELOG_SYSPROP
      See Also:
    • RANDOMIZED_NUMERIC_FIELDTYPES

      protected static final Map<Class<?>,String> RANDOMIZED_NUMERIC_FIELDTYPES
      A Map of "primitive" java "numeric" types and the string name of the class used in the corresponding schema fieldType declaration.

      Example: java.util.Date => "solr.DatePointField"

      See Also:
      • randomizeNumericTypesProperties()
  • Constructor Details

    • SolrTestCaseJ4

      public SolrTestCaseJ4()
  • Method Details

    • writeCoreProperties

      protected void writeCoreProperties(Path coreDirectory, String coreName) throws IOException
      Throws:
      IOException
    • writeCoreProperties

      public static void writeCoreProperties(Path coreDirectory, Properties properties, String testname) throws IOException
      Throws:
      IOException
    • assertExceptionThrownWithMessageContaining

      protected void assertExceptionThrownWithMessageContaining(Class<? extends Throwable> expectedType, List<String> expectedStrings, org.apache.lucene.tests.util.LuceneTestCase.ThrowingRunnable runnable)
    • setupTestCases

      public static void setupTestCases()
    • teardownTestCases

      public static void teardownTestCases() throws Exception
      Throws:
      Exception
    • assumeWorkingMockito

      public static void assumeWorkingMockito()
      Assumes that Mockito/Bytebuddy is available and can be used to mock classes (e.g., fails if Java version is too new).
    • isSSLMode

      protected static boolean isSSLMode()
    • useFactory

      public static void useFactory(String factory) throws Exception
      Use a different directory factory. Passing "null" sets to an FS-based factory
      Throws:
      Exception
    • resetFactory

      public static void resetFactory() throws Exception
      Throws:
      Exception
    • buildUrl

      protected static String buildUrl(int port)
    • whitespaceMockTokenizer

      protected static org.apache.lucene.tests.analysis.MockTokenizer whitespaceMockTokenizer(Reader input) throws IOException
      Throws:
      IOException
    • whitespaceMockTokenizer

      protected static org.apache.lucene.tests.analysis.MockTokenizer whitespaceMockTokenizer(String input) throws IOException
      Throws:
      IOException
    • setupNoCoreTest

      public static void setupNoCoreTest(Path solrHome, String xmlStr) throws Exception
      Call this from @BeforeClass to set up the test harness and update handler with no cores.
      Parameters:
      solrHome - The solr home directory.
      xmlStr - - the text of an XML file to use. If null, use the what's the absolute minimal file.
      Throws:
      Exception - Lost of file-type things can go wrong.
    • newRandomConfig

      public static void newRandomConfig()
      Sets system properties to allow generation of random configurations of solrconfig.xml and schema.xml. Sets properties used on LuceneTestCase.newIndexWriterConfig(org.apache.lucene.analysis.Analyzer) and base schema.xml (Point Fields)
    • getWrappedException

      public static Throwable getWrappedException(Throwable e)
    • setUp

      public void setUp() throws Exception
      Overrides:
      setUp in class org.apache.lucene.tests.util.LuceneTestCase
      Throws:
      Exception
    • tearDown

      public void tearDown() throws Exception
      Overrides:
      tearDown in class org.apache.lucene.tests.util.LuceneTestCase
      Throws:
      Exception
    • initAndGetDataDir

      protected static Path initAndGetDataDir()
      Subclasses may call this method to access the "dataDir" that will be used by initCore(java.lang.String, java.lang.String) (either prior to or after the core is created).

      If the dataDir has not yet been initialized when this method is called, this method will do so. Calling deleteCore() will "reset" the value, such that subsequent calls will re-initialize a new value. All directories returned by any calls to this method will automatically be cleaned up per LuceneTestCase.createTempDir()

      NOTE: calling this method is not requried, it will be implicitly called as needed when initializing cores. Callers that don't care about using initCore(java.lang.String, java.lang.String) and just want a temporary directory to put data in sould instead be using LuceneTestCase.createTempDir() directly.

      See Also:
      • initCoreDataDir
    • initCore

      public static void initCore(String config, String schema) throws Exception
      Call initCore in @BeforeClass to instantiate a solr core in your test class. deleteCore will be called for you via SolrTestCaseJ4 @AfterClass
      Throws:
      Exception
    • initCore

      public static void initCore(String config, String schema, Path solrHome) throws Exception
      Call initCore in @BeforeClass to instantiate a solr core in your test class. deleteCore will be called for you via SolrTestCaseJ4 @AfterClass
      Throws:
      Exception
    • initCore

      public static void initCore(String config, String schema, Path solrHome, String pCoreName) throws Exception
      Call initCore in @BeforeClass to instantiate a solr core in your test class. deleteCore will be called for you via SolrTestCaseJ4 @AfterClass
      Throws:
      Exception
    • startTrackingSearchers

      public static void startTrackingSearchers()
    • ignoreException

      @Deprecated public static void ignoreException(String pattern)
      Deprecated.
      use a ErrorLogMuter instead
      Causes any ERROR log messages matching with a substring matching the regex pattern to be filtered out by the ROOT logger
      See Also:
    • unIgnoreException

      @Deprecated public static void unIgnoreException(String pattern)
      Deprecated.
      use a ErrorLogMuter instead
      See Also:
    • resetExceptionIgnores

      @Deprecated public static void resetExceptionIgnores()
      Deprecated.
      use a ErrorLogMuter instead
      Clears all exception patterns, immediately re-registering "ignore_exception". SolrTestCaseJ4 calls this in both BeforeClass AfterClass so usually tests don't need to call this.
      See Also:
    • getClassName

      protected static String getClassName()
    • getSimpleClassName

      protected static String getSimpleClassName()
    • getSchemaFile

      public static String getSchemaFile()
      Subclasses must define this method to return the name of the schema.xml they wish to use.
    • getSolrConfigFile

      public static String getSolrConfigFile()
      Subclasses must define this method to return the name of the solrconfig.xml they wish to use.
    • initCore

      public static void initCore() throws Exception
      Throws:
      Exception
    • createCore

      public static void createCore()
    • createCoreContainer

      public static org.apache.solr.core.CoreContainer createCoreContainer(Path solrHome, String solrXML)
    • createCoreContainer

      public static org.apache.solr.core.CoreContainer createCoreContainer(org.apache.solr.core.NodeConfig config, org.apache.solr.core.CoresLocator locator)
    • createCoreContainer

      public static org.apache.solr.core.CoreContainer createCoreContainer(String coreName, String dataDir, String solrConfig, String schema)
    • createDefaultCoreContainer

      public static org.apache.solr.core.CoreContainer createDefaultCoreContainer(Path solrHome)
    • hasInitException

      public static boolean hasInitException(String message)
    • hasInitException

      public static boolean hasInitException(Class<? extends Exception> exceptionType)
    • postSetUp

      public void postSetUp()
      Subclasses that override setUp can optionally call this method to log the fact that their setUp process has ended.
    • preTearDown

      public void preTearDown()
      Subclasses that override tearDown can optionally call this method to log the fact that the tearDown process has started. This is necessary since subclasses will want to call super.tearDown() at the *end* of their tearDown method.
    • deleteCore

      public static void deleteCore()
      Shuts down the test harness and nulls out the values setup by initCore(java.lang.String, java.lang.String)
    • assertU

      public static void assertU(String update)
      Validates an update XML String is successful
    • assertU

      public static void assertU(String message, String update)
      Validates an update XML String is successful
    • assertFailedU

      public static void assertFailedU(String update)
      Validates an update XML String failed
    • assertFailedU

      public static void assertFailedU(String message, String update)
      Validates an update XML String failed
    • assertQ

      public static void assertQ(org.apache.solr.request.SolrQueryRequest req, String... tests)
      Validates a query matches some XPath test expressions and closes the query
    • assertQ

      public static void assertQ(String message, org.apache.solr.request.SolrQueryRequest req, String... tests)
      Validates a query matches some XPath test expressions and closes the query
    • JQ

      public static String JQ(org.apache.solr.request.SolrQueryRequest req) throws Exception
      Makes a query request and returns the JSON string response
      Throws:
      Exception
    • assertJQ

      public static String assertJQ(org.apache.solr.request.SolrQueryRequest req, String... tests) throws Exception
      Validates a query matches some JSON test expressions using the default double delta tolerance.
      Returns:
      The request response as a JSON String if all test patterns pass
      Throws:
      Exception
      See Also:
    • assertJQ

      public static String assertJQ(org.apache.solr.request.SolrQueryRequest req, double delta, String... tests) throws Exception
      Validates a query matches some JSON test expressions and closes the query. The text expression is of the form path:JSON. The Noggit JSON parser used accepts single quoted strings and bare strings to allow easy embedding in Java Strings.

      Please use this with care: this makes it easy to match complete structures, but doing so can result in fragile tests if you are matching more than what you want to test.

      Parameters:
      req - Solr request to execute
      delta - tolerance allowed in comparing float/double values
      tests - JSON path expression + '==' + expected value
      Returns:
      The request response as a JSON String if all test patterns pass
      Throws:
      Exception
    • assertThatJQ

      public static <T> String assertThatJQ(org.apache.solr.request.SolrQueryRequest req, org.hamcrest.Matcher<T> test) throws Exception
      Throws:
      Exception
    • assertThatJQ

      public static <T> String assertThatJQ(org.apache.solr.request.SolrQueryRequest req, String message, org.hamcrest.Matcher<T> test) throws Exception
      Validates a query completes and, using JSON deserialization, returns an object that passes the given Matcher test.

      Please use this with care: this makes it easy to match complete structures, but doing so can result in fragile tests if you are matching more than what you want to test.

      Parameters:
      req - Solr request to execute
      message - Failure message for test
      test - Matcher for the given object returned from deserializing the response
      Returns:
      The request response as a JSON String if the test matcher passes
      Throws:
      Exception
    • assertQEx

      public static void assertQEx(String message, org.apache.solr.request.SolrQueryRequest req, int code)
      Makes sure a query throws a SolrException with the listed response code
    • assertQEx

      public static void assertQEx(String message, org.apache.solr.request.SolrQueryRequest req, org.apache.solr.common.SolrException.ErrorCode code)
    • assertQEx

      public static void assertQEx(String failMessage, String exceptionMessage, org.apache.solr.request.SolrQueryRequest req, org.apache.solr.common.SolrException.ErrorCode code)
      Makes sure a query throws a SolrException with the listed response code and expected message
      Parameters:
      failMessage - The assert message to show when the query doesn't throw the expected exception
      exceptionMessage - A substring of the message expected in the exception
      req - Solr request
      code - expected error code for the query
    • optimize

      public static String optimize(String... args)
      See Also:
    • commit

      public static String commit(String... args)
      See Also:
    • adoc

      public static String adoc(String... fieldsAndValues)
      Generates a simple <add><doc>... XML String with no options
      Parameters:
      fieldsAndValues - 0th and Even numbered args are fields names odds are field values.
      See Also:
    • adoc

      public static String adoc(org.apache.solr.common.SolrInputDocument sdoc)
      Generates a simple <add><doc>... XML String with no options
    • addDoc

      public static void addDoc(String doc, String updateRequestProcessorChain) throws Exception
      Throws:
      Exception
    • add

      public static String add(SolrTestCaseJ4.XmlDoc doc, String... args)
      Generates an <add><doc>... XML String with options on the add.
      Parameters:
      doc - the Document to add
      args - 0th and Even numbered args are param names, Odds are param values.
      See Also:
    • delI

      public static String delI(String id)
      Generates a <delete>... XML string for an ID
      See Also:
    • delQ

      public static String delQ(String q)
      Generates a <delete>... XML string for an query
      See Also:
    • doc

      public static SolrTestCaseJ4.XmlDoc doc(String... fieldsAndValues)
      Generates a simple <doc>... XML String with no options
      Parameters:
      fieldsAndValues - 0th and Even numbered args are fields names, Odds are field values.
      See Also:
    • params

      public static org.apache.solr.common.params.ModifiableSolrParams params(String... params)
      Generates the correct SolrParams from an even list of strings. A string in an even position will represent the name of a parameter, while the following string at position (i+1) will be the assigned value.
      Parameters:
      params - an even list of strings
      Returns:
      the ModifiableSolrParams generated from the given list of strings.
    • map

      public static Map<String,String> map(String... params)
    • map

      public static Map<String,Object> map(Object... params)
    • req

      public static org.apache.solr.request.SolrQueryRequest req(String... q)
      Generates a SolrQueryRequest using the LocalRequestFactory
      See Also:
    • req

      public static org.apache.solr.request.SolrQueryRequest req(String[] params, String... moreParams)
      Generates a SolrQueryRequest using the LocalRequestFactory
      See Also:
    • req

      public static org.apache.solr.request.SolrQueryRequest req(org.apache.solr.common.params.SolrParams params, String... moreParams)
      Generates a SolrQueryRequest
    • clearIndex

      public void clearIndex()
      Does a low level delete of all docs in the index.

      The behavior of this method is slightly different then doing a normal *:* DBQ because it takes advantage of internal methods to ensure all index data is wiped, regardless of optimistic concurrency version constraints -- making it suitable for tests that create synthetic versions, and/or require a completely pristine index w/o any field metdata.

      See Also:
    • updateJ

      public static String updateJ(String json, org.apache.solr.common.params.SolrParams args) throws Exception
      Send JSON update commands
      Throws:
      Exception
    • sdoc

      public static org.apache.solr.common.SolrInputDocument sdoc(Object... fieldsAndValues)
    • sdocWithChildren

      public org.apache.solr.common.SolrInputDocument sdocWithChildren(String id, String version)
    • sdocWithChildren

      public org.apache.solr.common.SolrInputDocument sdocWithChildren(String id, String version, int childCount)
    • sdocWithChildren

      public org.apache.solr.common.SolrInputDocument sdocWithChildren(Integer id, String version, int childCount)
    • sdocs

      public static List<org.apache.solr.common.SolrInputDocument> sdocs(org.apache.solr.common.SolrInputDocument... docs)
    • json

      public static String json(String testJSON)
      Converts "test JSON" strings into JSON parseable by our JSON parser. For example, this method changed single quoted strings into double quoted strings before the parser could natively handle them.

      This transformation is automatically applied to JSON test strings (like assertJQ).

    • json

      public static String json(org.apache.solr.common.SolrInputDocument doc)
      Creates JSON from a SolrInputDocument. Doesn't currently handle boosts.
      See Also:
    • json

      public static void json(org.apache.solr.common.SolrInputDocument doc, org.noggit.CharArr out)
      Appends to the out array with JSON from the doc. Doesn't currently handle boosts, but does recursively handle child documents
    • jsonAdd

      public static String jsonAdd(org.apache.solr.common.SolrInputDocument... docs)
      Creates a JSON add command from a SolrInputDocument list. Doesn't currently handle boosts.
    • jsonDelId

      public static String jsonDelId(Object... ids)
      Creates a JSON delete command from an id list
    • jsonDelQ

      public static String jsonDelQ(String... queries)
      Creates a JSON deleteByQuery command
    • addAndGetVersion

      public static Long addAndGetVersion(org.apache.solr.common.SolrInputDocument sdoc, org.apache.solr.common.params.SolrParams params) throws Exception
      Throws:
      Exception
    • deleteAndGetVersion

      public static Long deleteAndGetVersion(String id, org.apache.solr.common.params.SolrParams params) throws Exception
      Throws:
      Exception
    • deleteByQueryAndGetVersion

      public static Long deleteByQueryAndGetVersion(String q, org.apache.solr.common.params.SolrParams params) throws Exception
      Throws:
      Exception
    • assertResponseValues

      public static void assertResponseValues(org.apache.solr.client.solrj.response.SolrResponseBase rsp, Object... assertions)
    • indexDocs

      public Map<Comparable,SolrTestCaseJ4.Doc> indexDocs(List<SolrTestCaseJ4.FldType> descriptor, Map<Comparable,SolrTestCaseJ4.Doc> model, int nDocs) throws Exception
      Throws:
      Exception
    • createDoc

      public static SolrTestCaseJ4.Doc createDoc(List<SolrTestCaseJ4.FldType> descriptor)
    • createSort

      public static Comparator<SolrTestCaseJ4.Doc> createSort(org.apache.solr.schema.IndexSchema schema, List<SolrTestCaseJ4.FldType> fieldTypes, String[] out)
    • createComparator

      public static Comparator<SolrTestCaseJ4.Doc> createComparator(String field, boolean asc, boolean sortMissingLast, boolean sortMissingFirst, boolean sortMissingAsZero)
    • createComparator

      public static Comparator<SolrTestCaseJ4.Doc> createComparator(List<Comparator<SolrTestCaseJ4.Doc>> comparators)
    • toJSON

      public static String toJSON(SolrTestCaseJ4.Doc doc)
    • invertField

      public Map<Comparable,List<Comparable>> invertField(Map<Comparable,SolrTestCaseJ4.Doc> model, String field)
      Return a Map from field value to a list of document ids
    • getFile

      public static Path getFile(String name)
      Gets a resource from the context classloader as Path. This method should only be used, if a real file is needed. To get a stream, code should prefer Class.getResourceAsStream(java.lang.String) using this.getClass().
    • TEST_HOME

      public static Path TEST_HOME()
    • TEST_PATH

      public static Path TEST_PATH()
    • TEST_COLL1_CONF

      public static Path TEST_COLL1_CONF()
    • configset

      public static Path configset(String name)
    • getRootCause

      public static Throwable getRootCause(Throwable t)
    • assertXmlFile

      public static void assertXmlFile(Path file, String... xpath) throws IOException, SAXException
      Throws:
      IOException
      SAXException
    • assertFieldValues

      public static void assertFieldValues(org.apache.solr.common.SolrDocumentList documents, String fieldName, Object... expectedValues)
      Fails if the number of documents in the given SolrDocumentList differs from the given number of expected values, or if any of the values in the given field don't match the expected values in the same order.
    • copyMinConf

      public static void copyMinConf(Path dstRoot) throws IOException
      Throws:
      IOException
    • copyMinConf

      public static void copyMinConf(Path dstRoot, String propertiesContent) throws IOException
      Throws:
      IOException
    • copyMinConf

      public static void copyMinConf(Path dstRoot, String propertiesContent, String solrconfigXmlName) throws IOException
      Throws:
      IOException
    • copyMinFullSetup

      public static void copyMinFullSetup(Path dstRoot) throws IOException
      Throws:
      IOException
    • copyXmlToHome

      public static void copyXmlToHome(Path dstRoot, String fromFile) throws IOException
      Throws:
      IOException
    • copySolrHomeToTemp

      @Deprecated public static void copySolrHomeToTemp(Path dstRoot, String collection) throws IOException
      Deprecated.
      Copies the test collection1 config into dstRoot/collection/conf
      Throws:
      IOException
    • legacyExampleCollection1SolrHome

      @Deprecated public static Path legacyExampleCollection1SolrHome()
      Deprecated.
      Creates a temp solr home using sample_techproducts_configs. Returns the home path.
    • compareSolrDocument

      public boolean compareSolrDocument(Object expected, Object actual)
    • compareSolrDocumentList

      public boolean compareSolrDocumentList(Object expected, Object actual)
    • compareSolrInputDocument

      public boolean compareSolrInputDocument(Object expected, Object actual)
    • assertSolrInputFieldEquals

      public boolean assertSolrInputFieldEquals(Object expected, Object actual)
    • skewed

      public static Object skewed(Object likely, Object unlikely)
      Returns likely most (1/10) of the time, otherwise unlikely
    • getHttpClient

      @Deprecated public static org.apache.http.client.HttpClient getHttpClient(String url)
      Deprecated.
      This method creates a HttpClient from a URL.

      WARNING: if you use this method, the HttpClient returned is tracked by ObjectReleaseTracker. Your test will fail if you do not pass the HttpClient to HttpClientUtil.close(HttpClient) when you are done with it.

    • getHttpSolrClient

      public static HttpSolrClient getHttpSolrClient(String url)
      This method creates a basic HttpSolrClient. Tests that want to control the creation process should use the HttpJettySolrClient.Builder class directly
      Parameters:
      url - the base URL for a Solr node. Should not contain a core or collection name.
    • getHttpSolrClient

      public static HttpSolrClient getHttpSolrClient(org.apache.solr.common.cloud.Replica replica)
      Create a basic HttpSolrClient pointed at the specified replica
    • getHttpSolrClient

      public static HttpSolrClient getHttpSolrClient(String url, String defaultCoreName)
      This method creates a basic HttpSolrClient. Tests that want to control the creation process should use the HttpJettySolrClient.Builder class directly
      Parameters:
      url - the base URL of a Solr node. Should not include a collection or core name.
      defaultCoreName - the name of a core that the created client should default to when making core-aware requests
    • randomDate

      public static String randomDate()
      Returns a randomly generated Date in the appropriate Solr external (input) format
      See Also:
    • randomSkewedDate

      public static String randomSkewedDate()
      Returns a Date such that all results from this method always have the same values for year+month+day+hour+minute but the seconds are randomized. This can be helpful for indexing documents with random date values that are biased for a narrow window (one day) to test collisions/overlaps
      See Also:
    • randomXmlUsableUnicodeString

      public static String randomXmlUsableUnicodeString()
      We want "realistic" unicode strings beyond simple ascii, but because our updates use XML we need to ensure we don't get "special" code block.
    • waitForWarming

      protected static void waitForWarming(org.apache.solr.core.SolrCore core) throws InterruptedException
      Throws:
      InterruptedException
    • waitForWarming

      protected void waitForWarming() throws InterruptedException
      Throws:
      InterruptedException
    • getSaferTestName

      protected String getSaferTestName()
    • assertNonBlockingRandomGeneratorAvailable

      public static void assertNonBlockingRandomGeneratorAvailable() throws InterruptedException
      Throws:
      InterruptedException
    • systemSetPropertySolrTestsMergePolicyFactory

      protected static void systemSetPropertySolrTestsMergePolicyFactory(String value)
    • systemClearPropertySolrTestsMergePolicyFactory

      protected static void systemClearPropertySolrTestsMergePolicyFactory()
    • systemSetPropertyEnableUrlAllowList

      @Deprecated protected static void systemSetPropertyEnableUrlAllowList(boolean value)
      Deprecated.
    • systemClearPropertySolrEnableUrlAllowList

      @Deprecated protected static void systemClearPropertySolrEnableUrlAllowList()
      Deprecated.
    • pickRandom

      @SafeVarargs protected static <T> T pickRandom(T... options)
    • createDistributedUpdateProcessor

      public static org.apache.solr.update.processor.DistributedUpdateProcessor createDistributedUpdateProcessor(org.apache.solr.request.SolrQueryRequest req, org.apache.solr.response.SolrQueryResponse rsp, org.apache.solr.update.processor.UpdateRequestProcessor next)