mirror of
https://github.com/dirtydishes/dreamio.git
synced 2026-06-06 21:38:15 +00:00
bypass range cache for mkv playback
This commit is contained in:
parent
adda8b7b02
commit
46a52b533f
5 changed files with 185 additions and 0 deletions
|
|
@ -43,6 +43,7 @@ struct StreamResolverTests {
|
|||
testRangeCacheForegroundMissFetchesAlignedChunks()
|
||||
await testRangeCacheForegroundMissReprioritizesPrefetch()
|
||||
await testRangeCacheHitFollowsActualPostSeekReadArea()
|
||||
await testRangeProbeBypassesTailIndexContainers()
|
||||
await testRangeProbeFallsBackWhenServerIgnoresRange()
|
||||
await testRangeFetcherPreservesHeaders()
|
||||
print("StreamResolverTests passed")
|
||||
|
|
@ -540,6 +541,32 @@ struct StreamResolverTests {
|
|||
try? await Task.sleep(nanoseconds: 50_000_000)
|
||||
}
|
||||
|
||||
private static func testRangeProbeBypassesTailIndexContainers() async {
|
||||
var requestCount = 0
|
||||
MockURLProtocol.handler = { request in
|
||||
requestCount += 1
|
||||
let response = HTTPURLResponse(
|
||||
url: request.url!,
|
||||
statusCode: 206,
|
||||
httpVersion: nil,
|
||||
headerFields: ["Content-Range": "bytes 0-0/20"]
|
||||
)!
|
||||
return (Data([1]), response)
|
||||
}
|
||||
|
||||
let fetcher = HTTPRangeRemoteFetcher(
|
||||
url: URL(string: "https://cdn.example.test/show.mkv?token=secret")!,
|
||||
headers: [:],
|
||||
session: mockSession()
|
||||
)
|
||||
let probe = await fetcher.probe()
|
||||
|
||||
assertEqual(probe.isCacheable, false)
|
||||
assertEqual(probe.fallbackReason, "tail-index-container")
|
||||
assertEqual(requestCount, 0)
|
||||
MockURLProtocol.handler = nil
|
||||
}
|
||||
|
||||
private static func byteRange(fromHeader header: String, contentLength: Int64) -> HTTPByteRange {
|
||||
let value = header.replacingOccurrences(of: "bytes=", with: "")
|
||||
let pieces = value.split(separator: "-", maxSplits: 1).map(String.init)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue