Class AbstractBlobContainerRetriesTestCase
java.lang.Object
org.junit.Assert
org.apache.lucene.tests.util.LuceneTestCase
org.elasticsearch.test.ESTestCase
org.elasticsearch.repositories.blobstore.AbstractBlobContainerRetriesTestCase
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static interfaceIf we wrap theRetryingInputStreamin tests we can expose it using this interface so thattestReadBlobWithReadTimeouts()can determine the meaninful progress sizeprotected final classstatic classA resettable InputStream that only serves zeros.Nested classes/interfaces inherited from class org.elasticsearch.test.ESTestCase
ESTestCase.DeprecationWarning, ESTestCase.EntitledTestPackages, ESTestCase.GeohashGenerator, ESTestCase.TestAnalysis, ESTestCase.WithEntitlementsOnTestCode, ESTestCase.WithoutEntitlementsNested classes/interfaces inherited from class org.apache.lucene.tests.util.LuceneTestCase
org.apache.lucene.tests.util.LuceneTestCase.AwaitsFix, org.apache.lucene.tests.util.LuceneTestCase.Concurrency, org.apache.lucene.tests.util.LuceneTestCase.Monster, org.apache.lucene.tests.util.LuceneTestCase.Nightly, org.apache.lucene.tests.util.LuceneTestCase.SuppressAssertingFormats, 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>, org.apache.lucene.tests.util.LuceneTestCase.ThrowingRunnable, org.apache.lucene.tests.util.LuceneTestCase.Weekly -
Field Summary
FieldsFields inherited from class org.elasticsearch.test.ESTestCase
checkIndexFailures, DEFAULT_DELTA, DEFAULT_TEST_WORKER_ID, failureAndSuccessEvents, FIPS_SYSPROP, JAVA_TIMEZONE_IDS, JAVA_ZONE_IDS, logger, MIN_PRIVATE_PORT, previousFailureSkipsRemainingRule, SAFE_AWAIT_TIMEOUT, TEMPLATE_DECORATOR_RULE, TEST_ENTITLEMENTS, TEST_REQUEST_TIMEOUT, TEST_WORKER_SYS_PROPERTY, TEST_WORKER_VM_ID, threadContext, UNSIGNED_LONG_MAXFields 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_FAILFAST, SYSPROP_MAXFAILURES, SYSPROP_MONSTER, SYSPROP_NIGHTLY, SYSPROP_WEEKLY, TEST_ASSERTS_ENABLED, TEST_AWAITSFIX, TEST_CODEC, TEST_DIRECTORY, TEST_DOCVALUESFORMAT, TEST_LINE_DOCS_FILE, TEST_MONSTER, TEST_NIGHTLY, TEST_POSTINGSFORMAT, TEST_THROTTLING, TEST_WEEKLY, VERBOSE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddSuccessfulDownloadHeaders(HttpExchange exchange, byte[] blobContents, int contentLength) Override to add any headers you expect on a successful downloadprotected final AbstractBlobContainerRetriesTestCase.TestBlobContainerBuilderprotected abstract Stringprotected abstract BlobContainercreateBlobContainer(Integer maxRetries, org.elasticsearch.core.TimeValue readTimeout, Boolean disableChunkedEncoding, Integer maxConnections, ByteSizeValue bufferSize, Integer maxBulkDeletes, BlobPath blobContainerPath) Method for subclasses to define how to create aBlobContainerwith the given (optional) parameters.protected abstract StringdownloadStorageEndpoint(BlobContainer container, String blob) protected HttpHeaderParser.RangegetRange(HttpExchange exchange) protected OptionalIntgetRangeEnd(HttpExchange exchange) protected intgetRangeStart(HttpExchange exchange) protected HttpHandlerinterceptGetBlobRequest(HttpHandler handler, byte[] blobContents) All calls to the blob endpoint should pass through here.protected static byte[]protected static byte[]randomBlobContent(int minSize) protected org.hamcrest.Matcher<Object> protected voidprotected intsendIncompleteContent(HttpExchange exchange, byte[] bytes) voidsetUp()voidtearDown()voidvoidvoidvoidvoidvoidMethods inherited from class org.elasticsearch.test.ESTestCase
after, afterIfFailed, afterIfSuccessful, allBreakersMemoryReleased, asInstanceOf, assertArrayEquals, assertArrayEqualsPercent, assertArrayEqualsPercent, assertArrayEqualsPercent, assertBusy, assertBusy, assertCriticalWarnings, assertEquals, assertLeakDetected, assertSettingDeprecationsAndWarnings, assertThat, assertThat, assertWarnings, assertWarnings, before, between, buildEnvSettings, buildNewFakeTransportAddress, captureLoggingLevel, checkPreviousFailureSkipsRemaining, checkStaticState, compatibleMediaType, copyInstance, copyNamedWriteable, copyNamedWriteable, copyWriteable, copyWriteable, createDefaultIndexAnalyzers, createParser, createParser, createParser, createParser, createParser, createParser, createParserWithCompatibilityFor, createTestAnalysis, createTestAnalysis, createTestAnalysis, createThreadPool, defaultIndexSettings, embedInRandomBytes, emptyProject, enableBigArraysReleasedCheck, enableWarningsCheck, ensureAllContextsReleased, ensureAllSearchContextsReleased, ensureCheckIndexPassed, ensureNoWarnings, ensureSupportedLocale, expectThrows, expectThrows, expectThrows, expectThrows, fail, fail, filteredWarnings, flushThreadPoolExecutor, frequently, generateRandomStringArray, generateRandomStringArray, getDataPath, getPortRange, getResourceDataPath, getSuiteFailureMarker, getTestTransportPlugin, getTestTransportType, getWorkerBasePort, indexSettings, indexSettings, indexSettings, inFipsJvm, initTestSeed, isTurkishLocale, iterations, maybeSet, maybeWrapDirectoryInFilterDirectory, mockScript, newEnvironment, newEnvironment, newLimitedBreaker, newLimitedBreakerService, newNodeEnvironment, newNodeEnvironment, newSearcher, newSearcher, newSearcher, newSearcher, parserConfig, previousFailureSkipsRemaining, projectStateFromProject, projectStateFromProject, projectStateWithEmptyProject, randomAlphanumericOfLength, randomAlphaOfLength, randomAlphaOfLengthBetween, randomAlphaOfLengthOrNull, randomArray, randomArray, randomArrayOtherThan, randomArrayOtherThan, randomArrayOtherThan, randomArrayOtherThan, randomArrayOtherThan, randomArrayOtherThan, randomArrayOtherThan, randomArrayOtherThan, randomArrayOtherThan, randomBigInteger, randomBoolean, randomByte, randomByteArrayOfLength, randomByteBetween, randomBytesBetween, randomByteSizeValue, randomBytesReference, randomCompatibleMediaType, randomDateFormatterPattern, randomDouble, randomDoubleBetween, randomDoubles, randomDoubles, randomExecutor, randomFloat, randomFloatBetween, randomFloatOrNull, randomFrom, randomFrom, randomFrom, randomFrom, randomFrom, randomFrom, randomGaussianDouble, randomGeohash, randomIdentifier, randomIdentifier, randomIndexName, randomInstantBetween, randomInt, randomInt, randomIntBetween, randomIntOrNull, randomInts, randomInts, randomIp, randomList, randomList, randomLong, randomLong, randomLongBetween, randomLongOrNull, randomLongs, randomLongs, randomMap, randomMillisUpToYear9999, randomNegativeInt, randomNegativeLong, randomNonEmptySubsetOf, randomNonNegativeByte, randomNonNegativeInt, randomNonNegativeIntOrNull, randomNonNegativeLong, randomNonNegativeLongOrNull, randomOptionalBoolean, randomOptionalDouble, randomPositiveTimeValue, randomProjectIdOrDefault, randomRealisticUnicodeOfCodepointLength, randomRealisticUnicodeOfCodepointLengthBetween, randomRealisticUnicodeOfLength, randomRealisticUnicodeOfLengthBetween, randomReleasableBytesReference, randomRepoName, randomSecretKey, randomSecureStringOfLength, randomSet, randomShort, randomSnapshotName, randomSubsetOf, randomSubsetOf, randomSubsetOf, randomTimeValue, randomTimeValue, randomTimeValue, randomTimeValueGreaterThan, randomTimeZone, randomUnicodeOfCodepointLength, randomUnicodeOfCodepointLengthBetween, randomUnicodeOfLength, randomUnicodeOfLengthBetween, randomUnique, randomUniqueProjectId, randomUnsignedLongBetween, randomUUID, randomValueOtherThan, randomValueOtherThanMany, randomVendorType, randomZone, removeHeaderWarningAppender, resetCheckIndexStatus, resetPortCounter, restoreContentType, restoreFileSystem, restoreLoggingLevel, runInParallel, runInParallel, safeAcquire, safeAcquire, safeAwait, safeAwait, safeAwait, safeAwait, safeAwait, safeAwait, safeAwaitAndUnwrapFailure, safeAwaitFailure, safeAwaitFailure, safeAwaitFailure, safeAwaitFailure, safeExecute, safeGet, safeGet, safeJoin, safeSleep, safeSleep, scaledRandomIntBetween, secureRandom, secureRandom, secureRandomFips, secureRandomFips, secureRandomNonFips, secureRandomNonFips, setContentType, setFileSystem, setHeaderWarningAppender, settings, shouldFailureSkipRemainingTests, shuffledList, shuffledList, shuffleMap, shuffleXContent, shuffleXContent, skipTestWaitingForLuceneFix, spinForAtLeastNMilliseconds, spinForAtLeastOneMillisecond, startInParallel, terminate, terminate, tmpPaths, toShuffledXContent, toShuffledXContent, waitUntil, waitUntil, writableRegistry, xContentRegistryMethods inherited from class org.apache.lucene.tests.util.LuceneTestCase
addVirusChecker, assertDeletedDocsEquals, assertDocsAndPositionsEnumEquals, assertDocsEnumEquals, assertDocsSkippingEquals, assertDocValuesEquals, assertDocValuesEquals, assertDoubleUlpEquals, assertFieldInfosEquals, assertFloatUlpEquals, assertNormsEquals, assertPointsEquals, assertPositionsSkippingEquals, assertReaderEquals, assertReaderStatisticsEquals, assertStoredFieldEquals, assertStoredFieldsEquals, assertTermsEnumEquals, assertTermsEquals, assertTermsEquals, assertTermsStatisticsEquals, assertTermStatsEquals, assertTermVectorsEquals, asSet, assumeFalse, assumeNoException, assumeTrue, atLeast, atLeast, callStackContains, callStackContains, callStackContainsAnyOf, closeAfterSuite, closeAfterTest, collate, createTempDir, createTempDir, createTempFile, createTempFile, dumpArray, dumpIterator, ensureSaneIWCOnNightly, expectThrows, expectThrows, expectThrows, expectThrowsAnyOf, expectThrowsAnyOf, getDataInputStream, getJvmForkArguments, getOnlyLeafReader, getTestClass, getTestName, 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, newSnapshotIndexWriterConfig, newStringField, newStringField, newStringField, newStringField, newTextField, newTextField, newTieredMergePolicy, newTieredMergePolicy, overrideDefaultQueryCache, overrideTestDefaultQueryCache, random, randomLocale, randomTimeZone, randomVectorFormat, rarely, rarely, replaceMaxFailureRule, resetDefaultQueryCache, restoreCPUCoreCount, restoreIndexWriterMaxDocs, runWithRestrictedPermissions, setIndexWriterMaxDocs, setupCPUCoreCount, setUpExecutorService, shutdownExecutorService, slowFileExists, 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, assertThrows, assertThrows, assertTrue, assertTrue, fail, fail
-
Field Details
-
MAX_RANGE_VAL
protected static final long MAX_RANGE_VAL- See Also:
-
httpServer
-
-
Constructor Details
-
AbstractBlobContainerRetriesTestCase
public AbstractBlobContainerRetriesTestCase()
-
-
Method Details
-
setUp
- Overrides:
setUpin classorg.apache.lucene.tests.util.LuceneTestCase- Throws:
Exception
-
tearDown
- Overrides:
tearDownin classorg.apache.lucene.tests.util.LuceneTestCase- Throws:
Exception
-
restartHttpServer
- Throws:
IOException
-
addSuccessfulDownloadHeaders
protected void addSuccessfulDownloadHeaders(HttpExchange exchange, byte[] blobContents, int contentLength) Override to add any headers you expect on a successful download- Parameters:
exchange- the exchangeblobContents- the entire blob contents (even if only a range was requested)contentLength- the length of the response we're sending
-
downloadStorageEndpoint
-
bytesContentType
-
unresponsiveExceptionType
-
readTimeoutExceptionMatcher
-
testReadNonexistentBlobThrowsNoSuchFileException
public void testReadNonexistentBlobThrowsNoSuchFileException() -
testReadBlobWithRetries
- Throws:
Exception
-
testReadRangeBlobWithRetries
- Throws:
Exception
-
testReadBlobWithReadTimeouts
public void testReadBlobWithReadTimeouts() -
testReadBlobWithNoHttpResponse
public void testReadBlobWithNoHttpResponse() -
testReadBlobWithPrematureConnectionClose
public void testReadBlobWithPrematureConnectionClose() -
randomBlobContent
protected static byte[] randomBlobContent() -
randomBlobContent
protected static byte[] randomBlobContent(int minSize) -
getRange
-
getRangeStart
-
getRangeEnd
-
sendIncompleteContent
- Throws:
IOException
-
createBlobContainer
protected abstract BlobContainer createBlobContainer(@Nullable Integer maxRetries, @Nullable org.elasticsearch.core.TimeValue readTimeout, @Nullable Boolean disableChunkedEncoding, @Nullable Integer maxConnections, @Nullable ByteSizeValue bufferSize, @Nullable Integer maxBulkDeletes, @Nullable BlobPath blobContainerPath) Method for subclasses to define how to create aBlobContainerwith the given (optional) parameters. Callers should useblobContainerBuilder()to obtain a builder to construct the arguments to this method rather than calling it directly. -
blobContainerBuilder
protected final AbstractBlobContainerRetriesTestCase.TestBlobContainerBuilder blobContainerBuilder()- Returns:
- a
AbstractBlobContainerRetriesTestCase.TestBlobContainerBuilderto construct the arguments with which to callcreateBlobContainer(java.lang.Integer, org.elasticsearch.core.TimeValue, java.lang.Boolean, java.lang.Integer, org.elasticsearch.common.unit.ByteSizeValue, java.lang.Integer, org.elasticsearch.common.blobstore.BlobPath).
-
interceptGetBlobRequest
All calls to the blob endpoint should pass through here. This allows e.g. Azure to handle the pre-flight HEAD request- Parameters:
handler- The actual handlerblobContents- The blob contents being simulated- Returns:
- The original handler with any necessary wrapping
-