Package org.elasticsearch.test
Class InternalAggregationTestCase<T extends org.elasticsearch.search.aggregations.InternalAggregation>
java.lang.Object
org.junit.Assert
org.apache.lucene.util.LuceneTestCase
org.elasticsearch.test.ESTestCase
org.elasticsearch.test.AbstractWireTestCase<T>
org.elasticsearch.test.AbstractNamedWriteableTestCase<T>
org.elasticsearch.test.InternalAggregationTestCase<T>
- Direct Known Subclasses:
InternalMultiBucketAggregationTestCase
,InternalSingleBucketAggregationTestCase
public abstract class InternalAggregationTestCase<T extends org.elasticsearch.search.aggregations.InternalAggregation>
extends AbstractNamedWriteableTestCase<T>
Implementors of this test case should be aware that the aggregation under test needs to be registered
in the test's namedWriteableRegistry. Core aggregations are registered already, but non-core
aggs should override
registerPlugin()
so that the NamedWriteables
can be extracted from the AggregatorSpecs in the plugin (as well as any other custom NamedWriteables)-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final record
Nested classes/interfaces inherited from class org.elasticsearch.test.ESTestCase
ESTestCase.DeprecationWarning, ESTestCase.GeohashGenerator, ESTestCase.TestAnalysis
Nested classes/interfaces inherited from class org.apache.lucene.util.LuceneTestCase
org.apache.lucene.util.LuceneTestCase.AwaitsFix, org.apache.lucene.util.LuceneTestCase.BadApple, org.apache.lucene.util.LuceneTestCase.Monster, org.apache.lucene.util.LuceneTestCase.Nightly, org.apache.lucene.util.LuceneTestCase.Slow, org.apache.lucene.util.LuceneTestCase.SuppressCodecs, org.apache.lucene.util.LuceneTestCase.SuppressFileSystems, org.apache.lucene.util.LuceneTestCase.SuppressFsync, org.apache.lucene.util.LuceneTestCase.SuppressReproduceLine, org.apache.lucene.util.LuceneTestCase.SuppressSysoutChecks, org.apache.lucene.util.LuceneTestCase.SuppressTempFileChecks, org.apache.lucene.util.LuceneTestCase.ThrowingRunnable, org.apache.lucene.util.LuceneTestCase.Weekly
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
protected static final double
Fields inherited from class org.elasticsearch.test.AbstractWireTestCase
NUMBER_OF_TEST_RUNS
Fields inherited from class org.elasticsearch.test.ESTestCase
checkIndexFailures, DEFAULT_TEST_WORKER_ID, failureAndSuccessEvents, FIPS_SYSPROP, JAVA_TIMEZONE_IDS, JAVA_ZONE_IDS, logger, MIN_PRIVATE_PORT, TEST_WORKER_SYS_PROPERTY, TEST_WORKER_VM_ID
Fields inherited from class org.apache.lucene.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_SLOW, 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_SLOW, TEST_THROTTLING, TEST_WEEKLY, VERBOSE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
assertFromXContent
(T aggregation, org.elasticsearch.search.aggregations.ParsedAggregation parsedAggregation) static void
assertMultiBucketConsumer
(org.elasticsearch.search.aggregations.Aggregation agg, org.elasticsearch.search.aggregations.MultiBucketConsumerService.MultiBucketConsumer bucketConsumer) protected abstract void
assertReduced
(T reduced, List<T> inputs) The type ofNamedWriteable
to read.final T
Creates a random test instance to use in the tests.protected abstract T
createTestInstance
(String name, Map<String, Object> metadata) protected final T
createUnmappedInstance
(String name) Return an instance on an unmapped field.protected T
createUnmappedInstance
(String name, Map<String, Object> metadata) Return an instance on an unmapped field.protected void
doAssertReducedMultiBucketConsumer
(org.elasticsearch.search.aggregations.Aggregation agg, org.elasticsearch.search.aggregations.MultiBucketConsumerService.MultiBucketConsumer bucketConsumer) static org.elasticsearch.search.aggregations.AggregationReduceContext.Builder
Builds anAggregationReduceContext
that is valid but empty.static org.elasticsearch.search.aggregations.AggregationReduceContext.Builder
emptyReduceContextBuilder
(org.elasticsearch.search.aggregations.AggregatorFactories.Builder aggs) Builds anAggregationReduceContext
that is valid and nearly empty except that it contains the provided builders.Overwrite this in your test if other than the basic xContent paths should be excluded during insertion of random fieldsstatic List<org.elasticsearch.xcontent.NamedXContentRegistry.Entry>
protected final org.elasticsearch.common.io.stream.NamedWriteableRegistry
Get theNamedWriteableRegistry
to use when de-serializing the object.protected List<org.elasticsearch.common.io.stream.NamedWriteableRegistry.Entry>
Implementors can override this if they want to provide a custom list of namedWriteables.protected List<org.elasticsearch.xcontent.NamedXContentRegistry.Entry>
protected final org.elasticsearch.search.aggregations.AggregationBuilder
mockBuilder
(List<? extends org.elasticsearch.search.aggregations.InternalAggregation> results) static org.elasticsearch.search.aggregations.AggregationReduceContext.Builder
mockReduceContext
(org.elasticsearch.search.aggregations.AggregationBuilder agg) Builds anAggregationReduceContext
to reduce the provided aggregation.protected org.elasticsearch.script.ScriptService
overwrite in tests that need itprotected <P extends org.elasticsearch.search.aggregations.ParsedAggregation>
PparseAndAssert
(org.elasticsearch.search.aggregations.InternalAggregation aggregation, boolean shuffled, boolean addRandomFields) static org.elasticsearch.search.DocValueFormat
A randomDocValueFormat
that can be used in aggregations which compute dates.static org.elasticsearch.search.DocValueFormat
A randomDocValueFormat
that can be used in aggregations which compute numbers.protected InternalAggregationTestCase.BuilderAndToReduce<T>
randomResultsToReduce
(String name, int size) Generate a list of inputs to reduce.protected org.elasticsearch.plugins.SearchPlugin
If a test needs to register additional aggregation specs for namedWriteable, etc, this method can be overridden by the implementor.final void
CallsToXContent.toXContent(org.elasticsearch.xcontent.XContentBuilder, org.elasticsearch.xcontent.ToXContent.Params)
on many threads and verifies that they produce the same result.final void
final void
void
protected org.elasticsearch.xcontent.NamedXContentRegistry
TheNamedXContentRegistry
to use for this test.Methods inherited from class org.elasticsearch.test.AbstractNamedWriteableTestCase
copyInstance
Methods inherited from class org.elasticsearch.test.AbstractWireTestCase
assertEqualInstances, assertSerialization, assertSerialization, concurrentTest, copyInstance, mutateInstance, testConcurrentEquals, testConcurrentHashCode, testConcurrentSerialization, testEqualsAndHashcode, testSerialization
Methods inherited from class org.elasticsearch.test.ESTestCase
after, afterIfFailed, afterIfSuccessful, assertArrayEquals, assertBusy, assertBusy, assertCriticalWarnings, assertEquals, assertSettingDeprecationsAndWarnings, assertWarnings, assertWarnings, before, between, buildEnvSettings, buildNewFakeTransportAddress, checkStaticState, compatibleMediaType, copyInstance, copyNamedWriteable, copyNamedWriteable, copyWriteable, copyWriteable, createDefaultIndexAnalyzers, createParser, createParser, createParser, createParser, createParser, createParser, createParserWithCompatibilityFor, createTestAnalysis, createTestAnalysis, createTestAnalysis, enableWarningsCheck, ensureAllSearchContextsReleased, ensureCheckIndexPassed, ensureNoWarnings, ensureSupportedLocale, filteredWarnings, frequently, generateRandomStringArray, generateRandomStringArray, getBasePort, getDataPath, getPortRange, getSuiteFailureMarker, getTestTransportPlugin, getTestTransportType, inFipsJvm, iterations, maybeSet, mockScript, newEnvironment, newEnvironment, newNodeEnvironment, newNodeEnvironment, parserConfig, randomAlphaOfLength, randomAlphaOfLengthBetween, randomArray, randomArray, randomBigInteger, randomBoolean, randomByte, randomByteArrayOfLength, randomCompatibleMediaType, randomDateFormatterPattern, randomDouble, randomDoubleBetween, randomFloat, randomFrom, randomFrom, randomFrom, randomFrom, randomFrom, randomFrom, randomGeohash, randomInt, randomInt, randomIntBetween, randomIp, randomList, randomList, randomLong, randomLongBetween, randomMap, randomMillisUpToYear9999, randomNonNegativeByte, randomNonNegativeLong, randomPositiveTimeValue, randomRealisticUnicodeOfCodepointLength, randomRealisticUnicodeOfCodepointLengthBetween, randomRealisticUnicodeOfLength, randomRealisticUnicodeOfLengthBetween, randomShort, randomSubsetOf, randomSubsetOf, randomSubsetOf, randomTimeValue, randomTimeValue, randomTimeValue, randomTimeZone, randomUnicodeOfCodepointLength, randomUnicodeOfCodepointLengthBetween, randomUnicodeOfLength, randomUnicodeOfLengthBetween, randomUnique, randomValueOtherThan, randomValueOtherThanMany, randomVendorType, randomZone, removeHeaderWarningAppender, resetCheckIndexStatus, resetPortCounter, restoreContentType, restoreFileSystem, scaledRandomIntBetween, setContentType, setFileSystem, setHeaderWarningAppender, settings, shuffleMap, shuffleXContent, shuffleXContent, skipTestWaitingForLuceneFix, spinForAtLeastNMilliseconds, spinForAtLeastOneMillisecond, terminate, terminate, tmpPaths, toShuffledXContent, waitUntil, waitUntil, writableRegistry
Methods inherited from class org.apache.lucene.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, 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, setUp, setupCPUCoreCount, slowFileExists, tearDown, 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, assertTrue, assertTrue, fail, fail
-
Field Details
-
DEFAULT_MAX_BUCKETS
public static final int DEFAULT_MAX_BUCKETS- See Also:
-
TOLERANCE
protected static final double TOLERANCE- See Also:
-
-
Constructor Details
-
InternalAggregationTestCase
public InternalAggregationTestCase()
-
-
Method Details
-
emptyReduceContextBuilder
public static org.elasticsearch.search.aggregations.AggregationReduceContext.Builder emptyReduceContextBuilder()Builds anAggregationReduceContext
that is valid but empty. -
emptyReduceContextBuilder
public static org.elasticsearch.search.aggregations.AggregationReduceContext.Builder emptyReduceContextBuilder(org.elasticsearch.search.aggregations.AggregatorFactories.Builder aggs) Builds anAggregationReduceContext
that is valid and nearly empty except that it contains the provided builders. -
mockReduceContext
public static org.elasticsearch.search.aggregations.AggregationReduceContext.Builder mockReduceContext(org.elasticsearch.search.aggregations.AggregationBuilder agg) Builds anAggregationReduceContext
to reduce the provided aggregation. -
getDefaultNamedXContents
public static List<org.elasticsearch.xcontent.NamedXContentRegistry.Entry> getDefaultNamedXContents() -
getNamedXContents
-
xContentRegistry
protected org.elasticsearch.xcontent.NamedXContentRegistry xContentRegistry()Description copied from class:ESTestCase
TheNamedXContentRegistry
to use for this test. Subclasses should override and use liberally.- Overrides:
xContentRegistry
in classESTestCase
-
getNamedWriteableRegistry
protected final org.elasticsearch.common.io.stream.NamedWriteableRegistry getNamedWriteableRegistry()Description copied from class:AbstractWireTestCase
Get theNamedWriteableRegistry
to use when de-serializing the object. Override this method if you need to registerNamedWriteable
s for the test object to de-serialize. By default this will return aNamedWriteableRegistry
with no registeredNamedWriteable
s- Specified by:
getNamedWriteableRegistry
in classAbstractNamedWriteableTestCase<T extends org.elasticsearch.search.aggregations.InternalAggregation>
-
getNamedWriteables
protected List<org.elasticsearch.common.io.stream.NamedWriteableRegistry.Entry> getNamedWriteables()Implementors can override this if they want to provide a custom list of namedWriteables. If the implementor _just_ wants to register in namedWriteables provided by a plugin, prefer overridingregisterPlugin()
instead because that route handles the automatic conversion of AggSpecs into namedWriteables. -
registerPlugin
protected org.elasticsearch.plugins.SearchPlugin registerPlugin()If a test needs to register additional aggregation specs for namedWriteable, etc, this method can be overridden by the implementor. -
createTestInstance
-
createUnmappedInstance
Return an instance on an unmapped field. -
categoryClass
Description copied from class:AbstractNamedWriteableTestCase
The type ofNamedWriteable
to read.- Specified by:
categoryClass
in classAbstractNamedWriteableTestCase<T extends org.elasticsearch.search.aggregations.InternalAggregation>
-
randomResultsToReduce
protected InternalAggregationTestCase.BuilderAndToReduce<T> randomResultsToReduce(String name, int size) Generate a list of inputs to reduce. Defaults to callingcreateTestInstance(String)
andcreateUnmappedInstance(String)
andmockBuilder(List)
but should be overridden if it isn't realistic to reduce test instances against mocked builders. -
mockBuilder
protected final org.elasticsearch.search.aggregations.AggregationBuilder mockBuilder(List<? extends org.elasticsearch.search.aggregations.InternalAggregation> results) -
testReduceRandom
- Throws:
IOException
-
doAssertReducedMultiBucketConsumer
protected void doAssertReducedMultiBucketConsumer(org.elasticsearch.search.aggregations.Aggregation agg, org.elasticsearch.search.aggregations.MultiBucketConsumerService.MultiBucketConsumer bucketConsumer) -
mockScriptService
protected org.elasticsearch.script.ScriptService mockScriptService()overwrite in tests that need it -
assertReduced
-
createTestInstance
Description copied from class:AbstractWireTestCase
Creates a random test instance to use in the tests. This method will be called multiple times during test execution and should return a different random instance each time it is called.- Specified by:
createTestInstance
in classAbstractWireTestCase<T extends org.elasticsearch.search.aggregations.InternalAggregation>
-
createTestMetadata
-
createUnmappedInstance
Return an instance on an unmapped field. -
createTestInstanceForXContent
-
testFromXContent
- Throws:
IOException
-
testFromXContentWithRandomFields
- Throws:
IOException
-
assertFromXContent
protected abstract void assertFromXContent(T aggregation, org.elasticsearch.search.aggregations.ParsedAggregation parsedAggregation) throws IOException - Throws:
IOException
-
testConcurrentToXContent
public final void testConcurrentToXContent() throws IOException, InterruptedException, ExecutionExceptionCallsToXContent.toXContent(org.elasticsearch.xcontent.XContentBuilder, org.elasticsearch.xcontent.ToXContent.Params)
on many threads and verifies that they produce the same result. Async search sometimes does this to aggregation responses and, in general, we think it's reasonable for everything that can convert itself to json to be able to do so concurrently. -
parseAndAssert
protected <P extends org.elasticsearch.search.aggregations.ParsedAggregation> P parseAndAssert(org.elasticsearch.search.aggregations.InternalAggregation aggregation, boolean shuffled, boolean addRandomFields) throws IOException - Throws:
IOException
-
excludePathsFromXContentInsertion
Overwrite this in your test if other than the basic xContent paths should be excluded during insertion of random fields -
randomNumericDocValueFormat
public static org.elasticsearch.search.DocValueFormat randomNumericDocValueFormat()A randomDocValueFormat
that can be used in aggregations which compute numbers. -
randomDateDocValueFormat
public static org.elasticsearch.search.DocValueFormat randomDateDocValueFormat()A randomDocValueFormat
that can be used in aggregations which compute dates. -
assertMultiBucketConsumer
public static void assertMultiBucketConsumer(org.elasticsearch.search.aggregations.Aggregation agg, org.elasticsearch.search.aggregations.MultiBucketConsumerService.MultiBucketConsumer bucketConsumer)
-