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
,AbstractDigestZkACLAndCredentialsProvidersTestBase
,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 theinitCore(String, String, String, String)
method.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SolrTestCaseJ4.BVal
static class
SolrTestCaseJ4.Doc
static class
SolrTestCaseJ4.Fld
protected static class
SolrTestCaseJ4.FldType
static class
SolrTestCaseJ4.FVal
static class
SolrTestCaseJ4.IRange
static class
SolrTestCaseJ4.IVals
static class
SolrTestCaseJ4.IValsPercent
static class
SolrTestCaseJ4.RandomizingCloudHttp2SolrClientBuilder
A variant ofCloudHttp2SolrClient.Builder
that will randomize some internal settings.static class
SolrTestCaseJ4.RandomizingCloudSolrClientBuilder
Deprecated.static interface
SolrTestCaseJ4.SuppressPointFields
Annotation for test classes that want to disable PointFields.static interface
SolrTestCaseJ4.SuppressSSL
Annotation for test classes that want to disable SSLstatic class
SolrTestCaseJ4.SVal
static class
SolrTestCaseJ4.Vals
static class
SolrTestCaseJ4.XmlDoc
Necessary to make method signatures un-ambiguous-
Nested classes/interfaces inherited from class org.apache.lucene.tests.util.LuceneTestCase
org.apache.lucene.tests.util.LuceneTestCase.AwaitsFix, org.apache.lucene.tests.util.LuceneTestCase.BadApple, org.apache.lucene.tests.util.LuceneTestCase.Monster, org.apache.lucene.tests.util.LuceneTestCase.Nightly, org.apache.lucene.tests.util.LuceneTestCase.SuppressCodecs, org.apache.lucene.tests.util.LuceneTestCase.SuppressFileSystems, org.apache.lucene.tests.util.LuceneTestCase.SuppressFsync, org.apache.lucene.tests.util.LuceneTestCase.SuppressReproduceLine, org.apache.lucene.tests.util.LuceneTestCase.SuppressSysoutChecks, org.apache.lucene.tests.util.LuceneTestCase.SuppressTempFileChecks, org.apache.lucene.tests.util.LuceneTestCase.ThrowingConsumer<T extends Object>, org.apache.lucene.tests.util.LuceneTestCase.ThrowingRunnable, org.apache.lucene.tests.util.LuceneTestCase.Weekly
-
-
Field Summary
Fields Modifier and Type Field Description protected static String
configString
protected static String
CORE_PROPERTIES_FILENAME
protected static String
coreName
static 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 failurestatic 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 failurestatic 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 failurestatic int
DEFAULT_CONNECTION_TIMEOUT
static String
DEFAULT_TEST_COLLECTION_NAME
static String
DEFAULT_TEST_CORENAME
protected static TestHarness
h
Harness initialized by create[Default]Core[Container].protected static String
hdfsDataDir
protected static File
initCoreDataDir
Deprecated.use initAndGetDataDir instead of directly accessing this variableprotected static TestHarness.LocalRequestFactory
lrf
LocalRequestFactory initialized by create[Default]Core[Container] using sensible defaults.static String
NUMERIC_DOCVALUES_SYSPROP
The name of a sysprop that will be eithertrue
orfalse
indicating if docValues should be used on a numeric field.static String
NUMERIC_POINTS_SYSPROP
The name of a sysprop that will eithertrue
orfalse
indicating if numeric points fields are currently in use, depending on the user specified value ofUSE_NUMERIC_POINTS_SYSPROP
and/or theSolrTestCaseJ4.SuppressPointFields
annotation and/or randomization.static SolrTestCaseJ4.IRange
ONE_ONE
protected static Map<Class<?>,String>
RANDOMIZED_NUMERIC_FIELDTYPES
A Map of "primitive" java "numeric" types and the string name of theclass
used in the corresponding schema fieldType declaration.protected static String
schemaString
protected static org.apache.solr.core.SolrConfig
solrConfig
org.junit.rules.TestRule
solrTestRules
static SSLTestConfig
sslConfig
static String
SYSTEM_PROPERTY_SOLR_TESTS_MERGEPOLICYFACTORY
static String
TEST_URL_ALLOW_LIST
protected static ExecutorService
testExecutor
protected static Path
testSolrHome
static String
UPDATELOG_SYSPROP
static 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 theSolrTestCaseJ4.SuppressPointFields
annotation: If unset, then a random variable will be used to decide the type of numerics.static SolrTestCaseJ4.IRange
ZERO_ONE
static SolrTestCaseJ4.IRange
ZERO_TWO
-
Fields inherited from class org.apache.solr.SolrTestCase
solrClassRules
-
Fields inherited from class org.apache.lucene.tests.util.LuceneTestCase
assertsAreEnabled, classRules, DEFAULT_LINE_DOCS_FILE, INFOSTREAM, JENKINS_LARGE_LINE_DOCS_FILE, LEAVE_TEMPORARY, MAYBE_CACHE_POLICY, RANDOM_MULTIPLIER, ruleChain, suiteFailureMarker, SYSPROP_AWAITSFIX, SYSPROP_BADAPPLES, SYSPROP_FAILFAST, SYSPROP_MAXFAILURES, SYSPROP_MONSTER, SYSPROP_NIGHTLY, SYSPROP_WEEKLY, TEST_ASSERTS_ENABLED, TEST_AWAITSFIX, TEST_BADAPPLES, TEST_CODEC, TEST_DIRECTORY, TEST_DOCVALUESFORMAT, TEST_LINE_DOCS_FILE, TEST_MONSTER, TEST_NIGHTLY, TEST_POSTINGSFORMAT, TEST_THROTTLING, TEST_WEEKLY, VERBOSE
-
-
Constructor Summary
Constructors Constructor Description SolrTestCaseJ4()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static String
add(SolrTestCaseJ4.XmlDoc doc, String... args)
Generates an <add><doc>...static Long
addAndGetVersion(org.apache.solr.common.SolrInputDocument sdoc, org.apache.solr.common.params.SolrParams params)
static void
addDoc(String doc, String updateRequestProcessorChain)
static String
adoc(String... fieldsAndValues)
Generates a simple <add><doc>...static String
adoc(org.apache.solr.common.SolrInputDocument sdoc)
Generates a simple <add><doc>...protected void
assertExceptionThrownWithMessageContaining(Class<? extends Throwable> expectedType, List<String> expectedStrings, org.apache.lucene.tests.util.LuceneTestCase.ThrowingRunnable runnable)
static void
assertFailedU(String update)
Validates an update XML String failedstatic void
assertFailedU(String message, String update)
Validates an update XML String failedstatic 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.static String
assertJQ(org.apache.solr.request.SolrQueryRequest req, double delta, String... tests)
Validates a query matches some JSON test expressions and closes the query.static String
assertJQ(org.apache.solr.request.SolrQueryRequest req, String... tests)
Validates a query matches some JSON test expressions using the default double delta tolerance.static void
assertNonBlockingRandomGeneratorAvailable()
static void
assertQ(String message, org.apache.solr.request.SolrQueryRequest req, String... tests)
Validates a query matches some XPath test expressions and closes the querystatic void
assertQ(org.apache.solr.request.SolrQueryRequest req, String... tests)
Validates a query matches some XPath test expressions and closes the querystatic 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 messagestatic void
assertQEx(String message, org.apache.solr.request.SolrQueryRequest req, int code)
Makes sure a query throws a SolrException with the listed response codestatic void
assertQEx(String message, org.apache.solr.request.SolrQueryRequest req, org.apache.solr.common.SolrException.ErrorCode code)
static void
assertResponseValues(org.apache.solr.client.solrj.response.SolrResponseBase rsp, Object... assertions)
boolean
assertSolrInputFieldEquals(Object expected, Object actual)
static void
assertU(String update)
Validates an update XML String is successfulstatic void
assertU(String message, String update)
Validates an update XML String is successfulstatic void
assertXmlFile(File file, String... xpath)
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).protected static JettyConfig
buildJettyConfig(String context)
protected static String
buildUrl(int port, String context)
void
clearIndex()
Does a low level delete of all docs in the index.static String
commit(String... args)
boolean
compareSolrDocument(Object expected, Object actual)
boolean
compareSolrDocumentList(Object expected, Object actual)
boolean
compareSolrInputDocument(Object expected, Object actual)
static Path
configset(String name)
static void
copyMinConf(File dstRoot)
static void
copyMinConf(File dstRoot, String propertiesContent)
static void
copyMinConf(File dstRoot, String propertiesContent, String solrconfigXmlName)
static void
copyMinFullSetup(File dstRoot)
static void
copySolrHomeToTemp(File dstRoot, String collection)
static void
copyXmlToHome(File dstRoot, String fromFile)
static Comparator<SolrTestCaseJ4.Doc>
createComparator(String field, boolean asc, boolean sortMissingLast, boolean sortMissingFirst, boolean sortMissingAsZero)
static Comparator<SolrTestCaseJ4.Doc>
createComparator(List<Comparator<SolrTestCaseJ4.Doc>> comparators)
static void
createCore()
static org.apache.solr.core.CoreContainer
createCoreContainer(String coreName, String dataDir, String solrConfig, String schema)
static org.apache.solr.core.CoreContainer
createCoreContainer(Path solrHome, String solrXML)
static org.apache.solr.core.CoreContainer
createCoreContainer(org.apache.solr.core.NodeConfig config, org.apache.solr.core.CoresLocator locator)
static org.apache.solr.core.CoreContainer
createDefaultCoreContainer(Path solrHome)
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)
static SolrTestCaseJ4.Doc
createDoc(List<SolrTestCaseJ4.FldType> descriptor)
static Comparator<SolrTestCaseJ4.Doc>
createSort(org.apache.solr.schema.IndexSchema schema, List<SolrTestCaseJ4.FldType> fieldTypes, String[] out)
static Long
deleteAndGetVersion(String id, org.apache.solr.common.params.SolrParams params)
static Long
deleteByQueryAndGetVersion(String q, org.apache.solr.common.params.SolrParams params)
static void
deleteCore()
Shuts down the test harness and nulls out the values setup byinitCore(java.lang.String, java.lang.String)
static String
delI(String id)
Generates a <delete>...static String
delQ(String q)
Generates a <delete>...static SolrTestCaseJ4.XmlDoc
doc(String... fieldsAndValues)
Generates a simple <doc>...protected static String
getClassName()
static File
getFile(String name)
Gets a resource from the context classloader asFile
.static org.apache.http.client.HttpClient
getHttpClient(String url)
Deprecated.static org.apache.solr.client.solrj.impl.HttpSolrClient
getHttpSolrClient(String url)
This method creates a basic HttpSolrClient.static Throwable
getRootCause(Throwable t)
protected String
getSaferTestName()
static String
getSchemaFile()
Subclasses must define this method to return the name of the schema.xml they wish to use.protected static String
getSimpleClassName()
static String
getSolrConfigFile()
Subclasses must define this method to return the name of the solrconfig.xml they wish to use.static Throwable
getWrappedException(Throwable e)
static boolean
hasInitException(Class<? extends Exception> exceptionType)
static boolean
hasInitException(String message)
static void
ignoreException(String pattern)
Deprecated.use aErrorLogMuter
insteadMap<Comparable,SolrTestCaseJ4.Doc>
indexDocs(List<SolrTestCaseJ4.FldType> descriptor, Map<Comparable,SolrTestCaseJ4.Doc> model, int nDocs)
protected static File
initAndGetDataDir()
Subclasses may call this method to access the "dataDir" that will be used byinitCore(java.lang.String, java.lang.String)
(either prior to or after the core is created).static void
initClassLogLevels()
static void
initCore()
static void
initCore(String config, String schema)
Call initCore in @BeforeClass to instantiate a solr core in your test class.static void
initCore(String config, String schema, String solrHome)
Call initCore in @BeforeClass to instantiate a solr core in your test class.static void
initCore(String config, String schema, String solrHome, String pCoreName)
Call initCore in @BeforeClass to instantiate a solr core in your test class.void
initMethodLogLevels()
Map<Comparable,List<Comparable>>
invertField(Map<Comparable,SolrTestCaseJ4.Doc> model, String field)
Return a Map from field value to a list of document idsprotected static boolean
isSSLMode()
static String
JQ(org.apache.solr.request.SolrQueryRequest req)
Makes a query request and returns the JSON string responsestatic String
json(String testJSON)
Converts "test JSON" strings into JSON parseable by our JSON parser.static String
json(org.apache.solr.common.SolrInputDocument doc)
Creates JSON from a SolrInputDocument.static void
json(org.apache.solr.common.SolrInputDocument doc, org.noggit.CharArr out)
Appends to theout
array with JSON from thedoc
.static String
jsonAdd(org.apache.solr.common.SolrInputDocument... docs)
Creates a JSON add command from a SolrInputDocument list.static String
jsonDelId(Object... ids)
Creates a JSON delete command from an id liststatic String
jsonDelQ(String... queries)
Creates a JSON deleteByQuery commandstatic Map<String,Object>
map(Object... params)
static Map<String,String>
map(String... params)
static void
newRandomConfig()
Sets system properties to allow generation of random configurations of solrconfig.xml and schema.xml.static String
optimize(String... args)
static org.apache.solr.common.params.ModifiableSolrParams
params(String... params)
Generates the correct SolrParams from an even list of strings.protected static <T> T
pickRandom(T... options)
void
postSetUp()
Subclasses that override setUp can optionally call this method to log the fact that their setUp process has ended.void
preTearDown()
Subclasses that override tearDown can optionally call this method to log the fact that the tearDown process has started.static String
randomDate()
Returns a randomly generated Date in the appropriate Solr external (input) formatstatic 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.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.static org.apache.solr.request.SolrQueryRequest
req(String... q)
Generates a SolrQueryRequest using the LocalRequestFactorystatic org.apache.solr.request.SolrQueryRequest
req(String[] params, String... moreParams)
Generates a SolrQueryRequest using the LocalRequestFactorystatic org.apache.solr.request.SolrQueryRequest
req(org.apache.solr.common.params.SolrParams params, String... moreParams)
Generates a SolrQueryRequeststatic void
resetExceptionIgnores()
Deprecated.use aErrorLogMuter
insteadstatic void
resetFactory()
static void
resetGlobalTracer()
GlobalTracer is initialized by org.apache.solr.core.TracerConfigurator by org.apache.solr.core.CoreContainer.void
restoreMethodLogLevels()
static org.apache.solr.common.SolrInputDocument
sdoc(Object... fieldsAndValues)
static List<org.apache.solr.common.SolrInputDocument>
sdocs(org.apache.solr.common.SolrInputDocument... docs)
org.apache.solr.common.SolrInputDocument
sdocWithChildren(Integer id, String version, int childCount)
org.apache.solr.common.SolrInputDocument
sdocWithChildren(String id, String version)
org.apache.solr.common.SolrInputDocument
sdocWithChildren(String id, String version, int childCount)
void
setUp()
static void
setupNoCoreTest(Path solrHome, String xmlStr)
Call this from @BeforeClass to set up the test harness and update handler with no cores.static void
setupTestCases()
static Object
skewed(Object likely, Object unlikely)
Returnslikely
most (1/10) of the time, otherwiseunlikely
static void
startTrackingSearchers()
protected static void
systemClearPropertySolrDisableUrlAllowList()
Deprecated.protected static void
systemClearPropertySolrTestsMergePolicyFactory()
protected static void
systemSetPropertySolrDisableUrlAllowList(String value)
Deprecated.protected static void
systemSetPropertySolrTestsMergePolicyFactory(String value)
void
tearDown()
static void
teardownTestCases()
static Path
TEST_COLL1_CONF()
static String
TEST_HOME()
static Path
TEST_PATH()
static String
toJSON(SolrTestCaseJ4.Doc doc)
static void
unIgnoreException(String pattern)
Deprecated.use aErrorLogMuter
insteadstatic String
updateJ(String json, org.apache.solr.common.params.SolrParams args)
Send JSON update commandsstatic void
useFactory(String factory)
Use a different directory factory.protected void
waitForWarming()
protected static void
waitForWarming(org.apache.solr.core.SolrCore core)
protected static org.apache.lucene.tests.analysis.MockTokenizer
whitespaceMockTokenizer(Reader input)
protected static org.apache.lucene.tests.analysis.MockTokenizer
whitespaceMockTokenizer(String input)
protected void
writeCoreProperties(Path coreDirectory, String coreName)
static void
writeCoreProperties(Path coreDirectory, Properties properties, String testname)
-
Methods inherited from class org.apache.solr.SolrTestCase
assertJSONEquals, beforeSolrTestCase, checkSyspropForceBeforeAssumptionFailure, checkSyspropForceBeforeClassAssumptionFailure
-
Methods inherited from class org.apache.lucene.tests.util.LuceneTestCase
addVirusChecker, assertDeletedDocsEquals, assertDocsAndPositionsEnumEquals, assertDocsEnumEquals, assertDocsSkippingEquals, assertDocValuesEquals, assertDocValuesEquals, assertFieldInfosEquals, assertNormsEquals, assertPointsEquals, assertPositionsSkippingEquals, assertReaderEquals, assertReaderStatisticsEquals, assertStoredFieldEquals, assertStoredFieldsEquals, assertTermsEnumEquals, assertTermsEquals, assertTermsEquals, assertTermsStatisticsEquals, assertTermStatsEquals, assertTermVectorsEquals, asSet, assumeFalse, assumeNoException, assumeTrue, assumeWorkingMMapOnWindows, atLeast, atLeast, callStackContains, callStackContains, callStackContainsAnyOf, closeAfterSuite, closeAfterTest, collate, createTempDir, createTempDir, createTempFile, createTempFile, dumpArray, dumpIterator, ensureSaneIWCOnNightly, expectThrows, expectThrows, expectThrows, expectThrowsAnyOf, expectThrowsAnyOf, getDataInputStream, getDataPath, getJvmForkArguments, getOnlyLeafReader, getTestClass, getTestName, hasWorkingMMapOnWindows, isTestThread, localeForLanguageTag, maybeChangeLiveIndexWriterConfig, maybeWrapReader, newAlcoholicMergePolicy, newAlcoholicMergePolicy, newBytesRef, newBytesRef, newBytesRef, newBytesRef, newBytesRef, newBytesRef, newDirectory, newDirectory, newDirectory, newDirectory, newDirectory, newField, newField, newFSDirectory, newFSDirectory, newIndexWriterConfig, newIndexWriterConfig, newIndexWriterConfig, newIOContext, newIOContext, newLogMergePolicy, newLogMergePolicy, newLogMergePolicy, newLogMergePolicy, newLogMergePolicy, newMaybeVirusCheckingDirectory, newMaybeVirusCheckingFSDirectory, newMergePolicy, newMergePolicy, newMergePolicy, newMockDirectory, newMockDirectory, newMockDirectory, newMockFSDirectory, newMockFSDirectory, newSearcher, newSearcher, newSearcher, newSearcher, newStringField, newStringField, newStringField, newStringField, newTextField, newTextField, newTieredMergePolicy, newTieredMergePolicy, overrideDefaultQueryCache, overrideTestDefaultQueryCache, random, randomLocale, randomTimeZone, rarely, rarely, replaceMaxFailureRule, resetDefaultQueryCache, restoreCPUCoreCount, restoreIndexWriterMaxDocs, runWithRestrictedPermissions, setIndexWriterMaxDocs, setupCPUCoreCount, slowFileExists, usually, usually, wrapReader
-
Methods inherited from class org.junit.Assert
assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertThat, assertThat, assertThrows, assertThrows, assertTrue, assertTrue, fail, fail
-
-
-
-
Field Detail
-
DEFAULT_TEST_COLLECTION_NAME
public static final String DEFAULT_TEST_COLLECTION_NAME
- See Also:
- Constant Field Values
-
DEFAULT_TEST_CORENAME
public static final String DEFAULT_TEST_CORENAME
- See Also:
- Constant Field Values
-
CORE_PROPERTIES_FILENAME
protected static final String CORE_PROPERTIES_FILENAME
- See Also:
- Constant Field Values
-
SYSTEM_PROPERTY_SOLR_TESTS_MERGEPOLICYFACTORY
public static final String SYSTEM_PROPERTY_SOLR_TESTS_MERGEPOLICYFACTORY
- See Also:
- Constant Field Values
-
TEST_URL_ALLOW_LIST
public static final String TEST_URL_ALLOW_LIST
- See Also:
- Constant Field Values
-
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:
- Constant Field Values
-
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:
- Constant Field Values
-
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:
- Constant Field Values
-
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.
-
initCoreDataDir
@Deprecated protected static volatile File initCoreDataDir
Deprecated.use initAndGetDataDir instead of directly accessing this variableThe directory used as thedataDir
for the TestHarness unlesshdfsDataDir
is non null.Will be set to null by
deleteCore()
and re-initialized as needed bycreateCore()
. In the event of a test failure, the contents will be left on disk.- See Also:
LuceneTestCase.createTempDir(String)
,initAndGetDataDir()
-
hdfsDataDir
protected static String hdfsDataDir
-
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 theSolrTestCaseJ4.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
, Constant Field Values
-
NUMERIC_POINTS_SYSPROP
public static final String NUMERIC_POINTS_SYSPROP
The name of a sysprop that will eithertrue
orfalse
indicating if numeric points fields are currently in use, depending on the user specified value ofUSE_NUMERIC_POINTS_SYSPROP
and/or theSolrTestCaseJ4.SuppressPointFields
annotation and/or randomization. Tests can useBoolean.getBoolean(NUMERIC_POINTS_SYSPROP)
.
-
NUMERIC_DOCVALUES_SYSPROP
public static final String NUMERIC_DOCVALUES_SYSPROP
The name of a sysprop that will be eithertrue
orfalse
indicating if docValues should be used on a numeric field. This property string should be used in thedocValues
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 useSystem.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true")
to override the default randomization.
-
UPDATELOG_SYSPROP
public static final String UPDATELOG_SYSPROP
- See Also:
- Constant Field Values
-
RANDOMIZED_NUMERIC_FIELDTYPES
protected static final Map<Class<?>,String> RANDOMIZED_NUMERIC_FIELDTYPES
A Map of "primitive" java "numeric" types and the string name of theclass
used in the corresponding schema fieldType declaration.Example:
java.util.Date => "solr.DatePointField"
- See Also:
randomizeNumericTypesProperties()
-
-
Method Detail
-
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()
-
resetGlobalTracer
public static void resetGlobalTracer()
GlobalTracer is initialized by org.apache.solr.core.TracerConfigurator by org.apache.solr.core.CoreContainer. Tests may need to reset it in the beginning of a test if it might have differing configuration from other tests in the same suite. It's also important to callExecutorUtil.resetThreadLocalProviders()
.
-
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).
-
initClassLogLevels
public static void initClassLogLevels()
-
initMethodLogLevels
public void initMethodLogLevels()
-
restoreMethodLogLevels
public void restoreMethodLogLevels()
-
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
-
buildJettyConfig
protected static JettyConfig buildJettyConfig(String context)
-
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 onLuceneTestCase.newIndexWriterConfig(org.apache.lucene.analysis.Analyzer)
and base schema.xml (Point Fields)
-
setUp
public void setUp() throws Exception
- Overrides:
setUp
in classorg.apache.lucene.tests.util.LuceneTestCase
- Throws:
Exception
-
tearDown
public void tearDown() throws Exception
- Overrides:
tearDown
in classorg.apache.lucene.tests.util.LuceneTestCase
- Throws:
Exception
-
initAndGetDataDir
protected static File initAndGetDataDir()
Subclasses may call this method to access the "dataDir" that will be used byinitCore(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 perLuceneTestCase.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 usingLuceneTestCase.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, String 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, String 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 aErrorLogMuter
insteadCauses any ERROR log messages matching with a substring matching the regex pattern to be filtered out by the ROOT logger- See Also:
resetExceptionIgnores()
-
unIgnoreException
@Deprecated public static void unIgnoreException(String pattern)
Deprecated.use aErrorLogMuter
instead- See Also:
ignoreException(java.lang.String)
-
resetExceptionIgnores
@Deprecated public static void resetExceptionIgnores()
Deprecated.use aErrorLogMuter
insteadClears all exception patterns, immediately re-registering"ignore_exception"
.SolrTestCaseJ4
calls this in bothBeforeClass
AfterClass
so usually tests don't need to call this.- See Also:
ignoreException(java.lang.String)
-
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.
-
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)
-
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 byinitCore(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:
JSONTestUtil.DEFAULT_DELTA
,assertJQ(SolrQueryRequest,double,String...)
-
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 executedelta
- tolerance allowed in comparing float/double valuestests
- JSON path expression + '==' + expected value- Returns:
- The request response as a JSON String if all test patterns pass
- 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 exceptionexceptionMessage
- A substring of the message expected in the exceptionreq
- Solr requestcode
- expected error code for the query
-
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:
add(org.apache.solr.SolrTestCaseJ4.XmlDoc, java.lang.String...)
,doc(java.lang.String...)
-
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 addargs
- 0th and Even numbered args are param names, Odds are param values.- See Also:
add(org.apache.solr.SolrTestCaseJ4.XmlDoc, java.lang.String...)
,doc(java.lang.String...)
-
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:
BaseTestHarness.makeSimpleDoc(java.lang.String...)
-
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.
-
req
public static org.apache.solr.request.SolrQueryRequest req(String... q)
Generates a SolrQueryRequest using the LocalRequestFactory- See Also:
lrf
-
req
public static org.apache.solr.request.SolrQueryRequest req(String[] params, String... moreParams)
Generates a SolrQueryRequest using the LocalRequestFactory- See Also:
lrf
-
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.
-
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(SolrInputDocument,CharArr)
-
json
public static void json(org.apache.solr.common.SolrInputDocument doc, org.noggit.CharArr out)
Appends to theout
array with JSON from thedoc
. 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
-
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 File getFile(String name)
Gets a resource from the context classloader asFile
. This method should only be used, if a real file is needed. To get a stream, code should preferClass.getResourceAsStream(java.lang.String)
usingthis.getClass()
.
-
TEST_HOME
public static String TEST_HOME()
-
TEST_PATH
public static Path TEST_PATH()
-
TEST_COLL1_CONF
public static Path TEST_COLL1_CONF()
-
assertXmlFile
public static void assertXmlFile(File 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(File dstRoot) throws IOException
- Throws:
IOException
-
copyMinConf
public static void copyMinConf(File dstRoot, String propertiesContent) throws IOException
- Throws:
IOException
-
copyMinConf
public static void copyMinConf(File dstRoot, String propertiesContent, String solrconfigXmlName) throws IOException
- Throws:
IOException
-
copyMinFullSetup
public static void copyMinFullSetup(File dstRoot) throws IOException
- Throws:
IOException
-
copyXmlToHome
public static void copyXmlToHome(File dstRoot, String fromFile) throws IOException
- Throws:
IOException
-
copySolrHomeToTemp
public static void copySolrHomeToTemp(File dstRoot, String collection) throws IOException
- Throws:
IOException
-
assertSolrInputFieldEquals
public boolean assertSolrInputFieldEquals(Object expected, Object actual)
-
skewed
public static Object skewed(Object likely, Object unlikely)
Returnslikely
most (1/10) of the time, otherwiseunlikely
-
getHttpClient
@Deprecated public static org.apache.http.client.HttpClient getHttpClient(String url)
Deprecated.This method creates a HttpClient from a URL.
-
getHttpSolrClient
public static org.apache.solr.client.solrj.impl.HttpSolrClient getHttpSolrClient(String url)
This method creates a basic HttpSolrClient. Tests that want to control the creation process should use theHttp2SolrClient.Builder
class directly
-
randomDate
public static String randomDate()
Returns a randomly generated Date in the appropriate Solr external (input) format- See Also:
randomSkewedDate()
-
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:
randomDate()
-
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()
-
systemSetPropertySolrDisableUrlAllowList
@Deprecated protected static void systemSetPropertySolrDisableUrlAllowList(String value)
Deprecated.
-
systemClearPropertySolrDisableUrlAllowList
@Deprecated protected static void systemClearPropertySolrDisableUrlAllowList()
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)
-
-