Package org.elasticsearch.index.mapper
Class MapperTestCase
java.lang.Object
org.junit.Assert
org.apache.lucene.util.LuceneTestCase
org.elasticsearch.test.ESTestCase
org.elasticsearch.index.mapper.MapperServiceTestCase
org.elasticsearch.index.mapper.MapperTestCase
- Direct Known Subclasses:
AbstractNumericFieldMapperTestCase
Base class for testing
Mappers.-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class org.elasticsearch.test.ESTestCase
ESTestCase.GeohashGenerator, ESTestCase.TestAnalysisNested 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
Fields inherited from class org.elasticsearch.index.mapper.MapperServiceTestCase
INCLUDE_DEFAULTS, SETTINGSFields inherited from class org.elasticsearch.test.ESTestCase
checkIndexFailures, DEFAULT_NAMED_WRITABLE_REGISTRY, DEFAULT_TEST_WORKER_ID, failureAndSuccessEvents, FIPS_SYSPROP, JAVA_TIMEZONE_IDS, JAVA_ZONE_IDS, JODA_TIMEZONE_IDS, logger, MIN_PRIVATE_PORT, TEST_WORKER_SYS_PROPERTY, TEST_WORKER_VM_IDFields 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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanprotected static voidassertDocValuesField(org.elasticsearch.index.mapper.LuceneDocument doc, String field)protected voidassertExistsQuery(org.elasticsearch.index.mapper.MappedFieldType fieldType, org.apache.lucene.search.Query query, org.elasticsearch.index.mapper.LuceneDocument fields)protected voidassertExistsQuery(org.elasticsearch.index.mapper.MapperService mapperService)protected voidassertFetch(org.elasticsearch.index.mapper.MapperService mapperService, String field, Object value, String format)Assert that fetching a value usingMappedFieldType.valueFetcher(org.elasticsearch.index.query.SearchExecutionContext, java.lang.String)produces the same value as fetching using doc values.protected static voidassertHasNorms(org.elasticsearch.index.mapper.LuceneDocument doc, String field)protected static voidassertNoDocValuesField(org.elasticsearch.index.mapper.LuceneDocument doc, String field)protected static voidassertNoFieldNamesField(org.elasticsearch.index.mapper.LuceneDocument fields)protected voidprotected voidprotected voidassertSearchable(org.elasticsearch.index.mapper.MappedFieldType fieldType)protected booleanA few field types (e.g.protected List<?>fetchFromDocValues(org.elasticsearch.index.mapper.MapperService mapperService, org.elasticsearch.index.mapper.MappedFieldType ft, org.elasticsearch.search.DocValueFormat format, Object sourceValue)Use a ValueFetcher to extract values from doc values.protected abstract ObjectgenerateRandomInputValue(org.elasticsearch.index.mapper.MappedFieldType ft)Create a random_sourcevalue for this field.protected String[]protected String[]protected abstract ObjectReturns a sample value for the field, to be used in a documentprotected ObjectReturns a sample value for the field, to be used when querying the field.protected voidmetaMapping(org.elasticsearch.common.xcontent.XContentBuilder b)protected abstract voidminimalMapping(org.elasticsearch.common.xcontent.XContentBuilder b)protected voidminimalStoreMapping(org.elasticsearch.common.xcontent.XContentBuilder b)protected voidrandomFetchTestFieldConfig(org.elasticsearch.common.xcontent.XContentBuilder b)Field configuration fortestFetch()andtestFetchMany().protected StringA random format to use when tripping intestFetch()andtestFetchMany().protected org.elasticsearch.index.mapper.MapperServiceprotected abstract voidprotected booleanOverride to disable testingmetain fields that don't support it.protected booleanprotected booleanvoidvoidvoidThis test verifies that the exists query created is the appropriate one, and aligns with the data structures being created for a document with a value for the field.voidAsserts that fetching a single value from doc values and from the nativeMappedFieldType.valueFetcher(org.elasticsearch.index.query.SearchExecutionContext, java.lang.String)produce the same results.voidAsserts that fetching many values from doc values and from the nativeMappedFieldType.valueFetcher(org.elasticsearch.index.query.SearchExecutionContext, java.lang.String)produce the same results.voidChecks that field data from this field produces the same values for query-time scripts and for index-time scriptsvoidChecks that loading stored fields for this field produces the same set of values for query time scripts and index time scriptsvoidtestMeta()voidvoidvoidvoidvoidprotected StringtypeName()protected voidwriteField(org.elasticsearch.common.xcontent.XContentBuilder builder)Writes the field and a sample value for it to the providedXContentBuilder.Methods inherited from class org.elasticsearch.index.mapper.MapperServiceTestCase
compileScript, createDocumentMapper, createDocumentMapper, createDocumentMapper, createDocumentMapper, createIndexAnalyzers, createIndexAnalyzers, createIndexSettings, createMapperService, createMapperService, createMapperService, createMapperService, createMapperService, createMapperService, createMapperService, createMapperService, createSearchExecutionContext, dynamicMapping, fieldMapping, getIndexSettings, getPlugins, mapping, merge, merge, merge, merge, randomIndexOptions, runtimeFieldMapping, runtimeMapping, source, source, source, source, topMapping, withAggregationContext, withAggregationContext, withLuceneIndexMethods inherited from class org.elasticsearch.test.ESTestCase
after, afterIfFailed, afterIfSuccessful, allowedWarnings, assertArrayEquals, assertBusy, assertBusy, assertEquals, assertSettingDeprecationsAndWarnings, assertSettingDeprecationsAndWarnings, assertWarnings, assertWarnings, before, between, buildEnvSettings, buildNewFakeTransportAddress, checkStaticState, clearAdditionalRoles, copyInstance, copyNamedWriteable, copyNamedWriteable, copyWriteable, copyWriteable, createDefaultIndexAnalyzers, createParser, createParser, createParser, createParser, createParser, createParser, createTestAnalysis, createTestAnalysis, createTestAnalysis, enableJodaDeprecationWarningsCheck, enableWarningsCheck, ensureAllSearchContextsReleased, ensureCheckIndexPassed, ensureSupportedLocale, filteredWarnings, frequently, generateRandomStringArray, generateRandomStringArray, getBasePort, getDataPath, getPortRange, getSuiteFailureMarker, getTestTransportPlugin, getTestTransportType, inFipsJvm, iterations, maybeSet, mockScript, newEnvironment, newEnvironment, newNodeEnvironment, newNodeEnvironment, randomAlphaOfLength, randomAlphaOfLengthBetween, randomArray, randomArray, randomBigInteger, randomBoolean, randomByte, randomByteArrayOfLength, randomDateFormatterPattern, randomDateTimeZone, randomDouble, randomDoubleBetween, randomFloat, 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, randomZone, removeHeaderWarningAppender, resetCheckIndexStatus, resetPortCounter, restoreContentType, restoreFileSystem, scaledRandomIntBetween, setContentType, setFileSystem, setHeaderWarningAppender, settings, shuffleMap, shuffleXContent, shuffleXContent, spinForAtLeastNMilliseconds, spinForAtLeastOneMillisecond, terminate, terminate, tmpPaths, toShuffledXContent, waitUntil, waitUntil, writableRegistry, xContentRegistryMethods 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, getBaseTempDirForTestClass, getDataInputStream, getOnlyLeafReader, getTestClass, getTestName, hasWorkingMMapOnWindows, isTestThread, localeForLanguageTag, maybeChangeLiveIndexWriterConfig, maybeWrapReader, newAlcoholicMergePolicy, newAlcoholicMergePolicy, 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, newStringField, newStringField, newStringField, newStringField, newTextField, newTextField, newTieredMergePolicy, newTieredMergePolicy, overrideDefaultQueryCache, overrideTestDefaultQueryCache, random, randomLocale, randomTimeZone, rarely, rarely, replaceMaxFailureRule, resetDefaultQueryCache, restoreCPUCoreCount, restoreIndexWriterMaxDocs, restoreSpins, runWithRestrictedPermissions, setIndexWriterMaxDocs, setUp, setupCPUCoreCount, setupSpins, slowFileExists, tearDown, usually, usually, wrapReaderMethods 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
-
Constructor Details
-
MapperTestCase
public MapperTestCase()
-
-
Method Details
-
minimalMapping
protected abstract void minimalMapping(org.elasticsearch.common.xcontent.XContentBuilder b) throws IOException- Throws:
IOException
-
writeField
protected void writeField(org.elasticsearch.common.xcontent.XContentBuilder builder) throws IOExceptionWrites the field and a sample value for it to the providedXContentBuilder. To be overridden in case the field should not be written at all in documents, like in the case of runtime fields.- Throws:
IOException
-
getSampleValueForDocument
Returns a sample value for the field, to be used in a document -
getSampleValueForQuery
Returns a sample value for the field, to be used when querying the field. Normally this is the same format as what is indexed as part of a document, and returned bygetSampleValueForDocument(), but there are cases where fields are queried differently frow how they are indexed e.g. token_count or runtime fields -
testExistsQueryMinimalMapping
This test verifies that the exists query created is the appropriate one, and aligns with the data structures being created for a document with a value for the field. This can only be verified for the minimal mapping. Field types that allow configurable doc_values or norms should write their own tests that creates the different mappings combinations and invokeassertExistsQuery(MapperService)to verify the behaviour.- Throws:
IOException
-
assertExistsQuery
protected void assertExistsQuery(org.elasticsearch.index.mapper.MapperService mapperService) throws IOException- Throws:
IOException
-
assertExistsQuery
protected void assertExistsQuery(org.elasticsearch.index.mapper.MappedFieldType fieldType, org.apache.lucene.search.Query query, org.elasticsearch.index.mapper.LuceneDocument fields) -
assertNoFieldNamesField
protected static void assertNoFieldNamesField(org.elasticsearch.index.mapper.LuceneDocument fields) -
assertHasNorms
protected static void assertHasNorms(org.elasticsearch.index.mapper.LuceneDocument doc, String field) -
assertDocValuesField
protected static void assertDocValuesField(org.elasticsearch.index.mapper.LuceneDocument doc, String field) -
assertNoDocValuesField
protected static void assertNoDocValuesField(org.elasticsearch.index.mapper.LuceneDocument doc, String field) -
testEmptyName
public final void testEmptyName() -
testMinimalSerializesToItself
- Throws:
IOException
-
testMinimalToMaximal
- Throws:
IOException
-
assertParseMinimalWarnings
protected final void assertParseMinimalWarnings() -
assertParseMaximalWarnings
protected final void assertParseMaximalWarnings() -
getParseMinimalWarnings
-
getParseMaximalWarnings
-
supportsMeta
protected boolean supportsMeta()Override to disable testingmetain fields that don't support it. -
metaMapping
- Throws:
IOException
-
testMeta
- Throws:
IOException
-
typeName
- Throws:
IOException
-
testDeprecatedBoost
- Throws:
IOException
-
fetchFromDocValues
protected final List<?> fetchFromDocValues(org.elasticsearch.index.mapper.MapperService mapperService, org.elasticsearch.index.mapper.MappedFieldType ft, org.elasticsearch.search.DocValueFormat format, Object sourceValue) throws IOExceptionUse a ValueFetcher to extract values from doc values.- Throws:
IOException
-
registerParameters
protected abstract void registerParameters(MapperTestCase.ParameterChecker checker) throws IOException- Throws:
IOException
-
testUpdates
- Throws:
IOException
-
testTextSearchInfoConsistency
- Throws:
IOException
-
assertSearchable
protected void assertSearchable(org.elasticsearch.index.mapper.MappedFieldType fieldType) -
testFetch
Asserts that fetching a single value from doc values and from the nativeMappedFieldType.valueFetcher(org.elasticsearch.index.query.SearchExecutionContext, java.lang.String)produce the same results.Generally this method covers many many random cases but rarely. So if it fails its generally a good idea to capture its randomized parameters into a new method so we can be sure we consistently test any unique and interesting failure case. See the tests for
DateFieldMapperfor some examples.- Throws:
IOException
-
testFetchMany
Asserts that fetching many values from doc values and from the nativeMappedFieldType.valueFetcher(org.elasticsearch.index.query.SearchExecutionContext, java.lang.String)produce the same results.Generally this method covers many many random cases but rarely. So if it fails its generally a good idea to capture its randomized parameters into a new method so we can be sure we consistently test any unique and interesting failure case. See the tests for
DateFieldMapperfor some examples.- Throws:
IOException
-
randomFetchTestMapper
protected final org.elasticsearch.index.mapper.MapperService randomFetchTestMapper() throws IOException- Throws:
IOException
-
randomFetchTestFieldConfig
protected void randomFetchTestFieldConfig(org.elasticsearch.common.xcontent.XContentBuilder b) throws IOExceptionField configuration fortestFetch()andtestFetchMany(). Default implementation delegates tominimalMapping(org.elasticsearch.common.xcontent.XContentBuilder)but can be overridden to randomize the field type and options.- Throws:
IOException
-
randomFetchTestFormat
A random format to use when tripping intestFetch()andtestFetchMany(). -
generateRandomInputValue
protected abstract Object generateRandomInputValue(org.elasticsearch.index.mapper.MappedFieldType ft)Create a random_sourcevalue for this field. Must be compatible withXContentBuilder.value(Object)and the field's parser. -
assertFetch
protected void assertFetch(org.elasticsearch.index.mapper.MapperService mapperService, String field, Object value, String format) throws IOExceptionAssert that fetching a value usingMappedFieldType.valueFetcher(org.elasticsearch.index.query.SearchExecutionContext, java.lang.String)produces the same value as fetching using doc values.- Throws:
IOException
-
dedupAfterFetch
protected boolean dedupAfterFetch()A few field types (e.g. keyword fields) don't allow duplicate values, so in those cases we need to de-dup our expected values. Field types where this is the case should overwrite this. The default is to not de-duplicate though. -
supportsSearchLookup
protected boolean supportsSearchLookup()- Returns:
- whether or not this field type supports access to its values from a SearchLookup
-
testIndexTimeFieldData
Checks that field data from this field produces the same values for query-time scripts and for index-time scripts- Throws:
IOException
-
supportsStoredFields
protected boolean supportsStoredFields() -
minimalStoreMapping
protected void minimalStoreMapping(org.elasticsearch.common.xcontent.XContentBuilder b) throws IOException- Throws:
IOException
-
testIndexTimeStoredFieldsAccess
Checks that loading stored fields for this field produces the same set of values for query time scripts and index time scripts- Throws:
IOException
-
testNullInput
- Throws:
Exception
-
allowsNullValues
protected boolean allowsNullValues()
-