Package org.apache.solr.cloud
Class SolrCloudTestCase
- java.lang.Object
-
- org.junit.Assert
-
- org.apache.lucene.tests.util.LuceneTestCase
-
- org.apache.solr.SolrTestCase
-
- org.apache.solr.SolrTestCaseJ4
-
- org.apache.solr.cloud.SolrCloudTestCase
-
- Direct Known Subclasses:
AbstractCloudBackupRestoreTestCase
,AbstractCollectionsAPIDistributedZkTestBase
,AbstractIncrementalBackupTest
,AbstractInstallShardTest
,AbstractMoveReplicaTestBase
,AbstractRecoveryZkTestBase
,SolrCloudAuthTestCase
public class SolrCloudTestCase extends SolrTestCaseJ4
Base class for SolrCloud testsDerived tests should call
configureCluster(int)
in aBeforeClass
static method orBefore
setUp method. This configures and starts aMiniSolrCloudCluster
, available via thecluster
variable. Cluster shutdown is handled automatically if usingBeforeClass
.@BeforeClass public static void setupCluster() { configureCluster(NUM_NODES) .addConfig("configname", pathToConfig) .configure(); }
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.solr.SolrTestCaseJ4
SolrTestCaseJ4.BVal, SolrTestCaseJ4.Doc, SolrTestCaseJ4.Fld, SolrTestCaseJ4.FldType, SolrTestCaseJ4.FVal, SolrTestCaseJ4.IRange, SolrTestCaseJ4.IVals, SolrTestCaseJ4.IValsPercent, SolrTestCaseJ4.RandomizingCloudHttp2SolrClientBuilder, SolrTestCaseJ4.RandomizingCloudSolrClientBuilder, SolrTestCaseJ4.SuppressPointFields, SolrTestCaseJ4.SuppressSSL, SolrTestCaseJ4.SVal, SolrTestCaseJ4.Vals, SolrTestCaseJ4.XmlDoc
-
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 MiniSolrCloudCluster
cluster
The clusterstatic int
DEFAULT_TIMEOUT
static Boolean
USE_PER_REPLICA_STATE
-
Fields inherited from class org.apache.solr.SolrTestCaseJ4
configString, CORE_PROPERTIES_FILENAME, coreName, DEAD_HOST_1, DEAD_HOST_2, DEAD_HOST_3, DEFAULT_CONNECTION_TIMEOUT, DEFAULT_TEST_COLLECTION_NAME, DEFAULT_TEST_CORENAME, h, hdfsDataDir, initCoreDataDir, lrf, NUMERIC_DOCVALUES_SYSPROP, NUMERIC_POINTS_SYSPROP, ONE_ONE, RANDOMIZED_NUMERIC_FIELDTYPES, schemaString, solrConfig, solrTestRules, sslConfig, SYSTEM_PROPERTY_SOLR_TESTS_MERGEPOLICYFACTORY, TEST_URL_ALLOW_LIST, testExecutor, testSolrHome, UPDATELOG_SYSPROP, USE_NUMERIC_POINTS_SYSPROP, ZERO_ONE, 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 SolrCloudTestCase()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static org.apache.solr.common.cloud.CollectionStatePredicate
activeClusterShape(int expectedShards, int expectedReplicas)
Return aCollectionStatePredicate
that returns true if a collection has the expected number of active shards and active replicasvoid
checkClusterConfiguration()
static org.apache.solr.common.cloud.CollectionStatePredicate
clusterShape(int expectedShards, int expectedReplicas)
Return aCollectionStatePredicate
that returns true if a collection has the expected number of shards and active replicasprotected static MiniSolrCloudCluster.Builder
configureCluster(int nodeCount)
Call this to configure a cluster of n nodes.static org.apache.solr.common.cloud.LiveNodesPredicate
containsLiveNode(String node)
static void
ensureRunningJettys(int nodeCount, int timeoutSeconds)
Ensure that the given number of solr instances are running.protected static org.apache.solr.common.cloud.DocCollection
getCollectionState(String collectionName)
Get the collection state for a particular collectionprotected static org.apache.solr.client.solrj.request.CoreStatus
getCoreStatus(org.apache.solr.common.cloud.Replica replica)
Get theCoreStatus
data for aReplica
protected static org.apache.solr.common.cloud.Replica
getRandomReplica(org.apache.solr.common.cloud.Slice slice)
Get a (reproducibly) random replica from aSlice
protected static org.apache.solr.common.cloud.Replica
getRandomReplica(org.apache.solr.common.cloud.Slice slice, Predicate<org.apache.solr.common.cloud.Replica> matchPredicate)
Get a (reproducibly) random replica from aSlice
matching a predicateprotected static org.apache.solr.common.cloud.Slice
getRandomShard(org.apache.solr.common.cloud.DocCollection collection)
Get a (reproducibly) random shard from aDocCollection
static Map<String,String>
mapReplicasToReplicaType(org.apache.solr.common.cloud.DocCollection collection)
static org.apache.solr.common.cloud.LiveNodesPredicate
missingLiveNode(String node)
static org.apache.solr.common.cloud.LiveNodesPredicate
missingLiveNodes(List<String> nodes)
static void
shutdownCluster()
protected org.apache.solr.common.util.NamedList
waitForResponse(Predicate<org.apache.solr.common.util.NamedList> predicate, org.apache.solr.client.solrj.SolrRequest request, int intervalInMillis, int numRetries, String messageOnFail)
protected static void
waitForState(String message, String collection, org.apache.solr.common.cloud.CollectionStatePredicate predicate)
protected static void
waitForState(String message, String collection, org.apache.solr.common.cloud.CollectionStatePredicate predicate, int timeout, TimeUnit timeUnit)
Wait for a particular collection state to appear in the cluster client's state readerprotected static org.apache.solr.common.cloud.SolrZkClient
zkClient()
-
Methods inherited from class org.apache.solr.SolrTestCaseJ4
add, addAndGetVersion, addDoc, adoc, adoc, assertExceptionThrownWithMessageContaining, assertFailedU, assertFailedU, assertFieldValues, assertJQ, assertJQ, assertNonBlockingRandomGeneratorAvailable, assertQ, assertQ, assertQEx, assertQEx, assertQEx, assertResponseValues, assertSolrInputFieldEquals, assertU, assertU, assertXmlFile, assumeWorkingMockito, buildJettyConfig, buildUrl, clearIndex, commit, compareSolrDocument, compareSolrDocumentList, compareSolrInputDocument, configset, copyMinConf, copyMinConf, copyMinConf, copyMinFullSetup, copySolrHomeToTemp, copyXmlToHome, createComparator, createComparator, createCore, createCoreContainer, createCoreContainer, createCoreContainer, createDefaultCoreContainer, createDistributedUpdateProcessor, createDoc, createSort, deleteAndGetVersion, deleteByQueryAndGetVersion, deleteCore, delI, delQ, doc, getClassName, getFile, getHttpClient, getHttpSolrClient, getRootCause, getSaferTestName, getSchemaFile, getSimpleClassName, getSolrConfigFile, getWrappedException, hasInitException, hasInitException, ignoreException, indexDocs, initAndGetDataDir, initClassLogLevels, initCore, initCore, initCore, initCore, initMethodLogLevels, invertField, isSSLMode, JQ, json, json, json, jsonAdd, jsonDelId, jsonDelQ, legacyExampleCollection1SolrHome, map, map, newRandomConfig, optimize, params, pickRandom, postSetUp, preTearDown, randomDate, randomSkewedDate, randomXmlUsableUnicodeString, req, req, req, resetExceptionIgnores, resetFactory, resetGlobalTracer, restoreMethodLogLevels, sdoc, sdocs, sdocWithChildren, sdocWithChildren, sdocWithChildren, setUp, setupNoCoreTest, setupTestCases, skewed, startTrackingSearchers, systemClearPropertySolrDisableUrlAllowList, systemClearPropertySolrTestsMergePolicyFactory, systemSetPropertySolrDisableUrlAllowList, systemSetPropertySolrTestsMergePolicyFactory, tearDown, teardownTestCases, TEST_COLL1_CONF, TEST_HOME, TEST_PATH, toJSON, unIgnoreException, updateJ, useFactory, waitForWarming, waitForWarming, whitespaceMockTokenizer, whitespaceMockTokenizer, writeCoreProperties, writeCoreProperties
-
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
-
USE_PER_REPLICA_STATE
public static final Boolean USE_PER_REPLICA_STATE
-
DEFAULT_TIMEOUT
public static final int DEFAULT_TIMEOUT
- See Also:
- Constant Field Values
-
cluster
protected static volatile MiniSolrCloudCluster cluster
The cluster
-
-
Method Detail
-
zkClient
protected static org.apache.solr.common.cloud.SolrZkClient zkClient()
-
configureCluster
protected static MiniSolrCloudCluster.Builder configureCluster(int nodeCount)
Call this to configure a cluster of n nodes. It will be shut down automatically after the tests.NB you must call
MiniSolrCloudCluster.Builder.configure()
to start the cluster- Parameters:
nodeCount
- the number of nodes
-
checkClusterConfiguration
public void checkClusterConfiguration()
-
getCollectionState
protected static org.apache.solr.common.cloud.DocCollection getCollectionState(String collectionName)
Get the collection state for a particular collection
-
waitForState
protected static void waitForState(String message, String collection, org.apache.solr.common.cloud.CollectionStatePredicate predicate)
-
waitForState
protected static void waitForState(String message, String collection, org.apache.solr.common.cloud.CollectionStatePredicate predicate, int timeout, TimeUnit timeUnit)
Wait for a particular collection state to appear in the cluster client's state readerThis is a convenience method using the
DEFAULT_TIMEOUT
- Parameters:
message
- a message to report on failurecollection
- the collection to watchpredicate
- a predicate to match against the collection state
-
clusterShape
public static org.apache.solr.common.cloud.CollectionStatePredicate clusterShape(int expectedShards, int expectedReplicas)
Return aCollectionStatePredicate
that returns true if a collection has the expected number of shards and active replicas
-
activeClusterShape
public static org.apache.solr.common.cloud.CollectionStatePredicate activeClusterShape(int expectedShards, int expectedReplicas)
Return aCollectionStatePredicate
that returns true if a collection has the expected number of active shards and active replicas
-
containsLiveNode
public static org.apache.solr.common.cloud.LiveNodesPredicate containsLiveNode(String node)
-
missingLiveNode
public static org.apache.solr.common.cloud.LiveNodesPredicate missingLiveNode(String node)
-
missingLiveNodes
public static org.apache.solr.common.cloud.LiveNodesPredicate missingLiveNodes(List<String> nodes)
-
getRandomShard
protected static org.apache.solr.common.cloud.Slice getRandomShard(org.apache.solr.common.cloud.DocCollection collection)
Get a (reproducibly) random shard from aDocCollection
-
getRandomReplica
protected static org.apache.solr.common.cloud.Replica getRandomReplica(org.apache.solr.common.cloud.Slice slice)
Get a (reproducibly) random replica from aSlice
-
getRandomReplica
protected static org.apache.solr.common.cloud.Replica getRandomReplica(org.apache.solr.common.cloud.Slice slice, Predicate<org.apache.solr.common.cloud.Replica> matchPredicate)
Get a (reproducibly) random replica from aSlice
matching a predicate
-
getCoreStatus
protected static org.apache.solr.client.solrj.request.CoreStatus getCoreStatus(org.apache.solr.common.cloud.Replica replica) throws IOException, org.apache.solr.client.solrj.SolrServerException
Get theCoreStatus
data for aReplica
This assumes that the replica is hosted on a live node.
- Throws:
IOException
org.apache.solr.client.solrj.SolrServerException
-
waitForResponse
protected org.apache.solr.common.util.NamedList waitForResponse(Predicate<org.apache.solr.common.util.NamedList> predicate, org.apache.solr.client.solrj.SolrRequest request, int intervalInMillis, int numRetries, String messageOnFail)
-
ensureRunningJettys
public static void ensureRunningJettys(int nodeCount, int timeoutSeconds) throws Exception
Ensure that the given number of solr instances are running. If less instances are found then new instances are started. If extra instances are found then they are stopped.- Parameters:
nodeCount
- the number of Solr instances that should be running at the end of this method- Throws:
Exception
- on error
-
-