Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ class ChunkedFileUploadRemoteOperation
return if (onWifiConnection) DEFAULT_CHUNK_SIZE else MIN_CHUNK_SIZE
}

return serverMaxChunkSize
return serverMaxChunkSize.coerceAtLeast(MIN_CHUNK_SIZE)
}

private const val ASSEMBLED_FILE_SUFFIX = "/.file"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,26 @@ class ChunkedFileUploadRemoteOperationTest {
assertEquals(chunk1.hashCode(), chunk2.hashCode())
}

@Test
fun testChunkSize() {
val min = ChunkedFileUploadRemoteOperation.MIN_CHUNK_SIZE
val default = ChunkedFileUploadRemoteOperation.DEFAULT_CHUNK_SIZE
val unknown = ChunkedFileUploadRemoteOperation.SERVER_MAX_CHUNK_SIZE_UNKNOWN

// unknown server value falls back to defaults
assertEquals(default, ChunkedFileUploadRemoteOperation.chunkSize(true, unknown))
assertEquals(min, ChunkedFileUploadRemoteOperation.chunkSize(false, unknown))
assertEquals(default, ChunkedFileUploadRemoteOperation.chunkSize(true, 0))

// misconfigured tiny server value is clamped to the minimum
assertEquals(min, ChunkedFileUploadRemoteOperation.chunkSize(true, 10))
assertEquals(min, ChunkedFileUploadRemoteOperation.chunkSize(false, min - 1))

// sane server values are used as-is
assertEquals(min, ChunkedFileUploadRemoteOperation.chunkSize(true, min))
assertEquals(100 * MB, ChunkedFileUploadRemoteOperation.chunkSize(false, 100 * MB))
}

@Test
fun testChunking() {
listOf(1 * MB, 10 * MB, 100 * MB, 1 * GB).forEach { length ->
Expand Down
Loading