mirror of
https://github.com/rclone/rclone.git
synced 2025-08-15 00:02:35 +02:00
multithread: refactor multithread operation to use OpenChunkWriter if available #7056
If the feature OpenChunkWriter is not available, multithread tries to create an adapter from OpenWriterAt to OpenChunkWriter.
This commit is contained in:
committed by
Nick Craig-Wood
parent
7701d1d33d
commit
181fecaec3
@ -86,27 +86,24 @@ func TestDoMultiThreadCopy(t *testing.T) {
|
||||
assert.True(t, doMultiThreadCopy(ctx, f, src))
|
||||
}
|
||||
|
||||
func TestMultithreadCalculateChunks(t *testing.T) {
|
||||
func TestMultithreadCalculateNumChunks(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
size int64
|
||||
streams int
|
||||
wantPartSize int64
|
||||
wantStreams int
|
||||
size int64
|
||||
chunkSize int64
|
||||
wantNumChunks int
|
||||
}{
|
||||
{size: 1, streams: 10, wantPartSize: multithreadChunkSize, wantStreams: 1},
|
||||
{size: 1 << 20, streams: 1, wantPartSize: 1 << 20, wantStreams: 1},
|
||||
{size: 1 << 20, streams: 2, wantPartSize: 1 << 19, wantStreams: 2},
|
||||
{size: (1 << 20) + 1, streams: 2, wantPartSize: (1 << 19) + multithreadChunkSize, wantStreams: 2},
|
||||
{size: (1 << 20) - 1, streams: 2, wantPartSize: (1 << 19), wantStreams: 2},
|
||||
{size: 1, chunkSize: multithreadChunkSize, wantNumChunks: 1},
|
||||
{size: 1 << 20, chunkSize: 1, wantNumChunks: 1 << 20},
|
||||
{size: 1 << 20, chunkSize: 2, wantNumChunks: 1 << 19},
|
||||
{size: (1 << 20) + 1, chunkSize: 2, wantNumChunks: (1 << 19) + 1},
|
||||
{size: (1 << 20) - 1, chunkSize: 2, wantNumChunks: 1 << 19},
|
||||
} {
|
||||
t.Run(fmt.Sprintf("%+v", test), func(t *testing.T) {
|
||||
mc := &multiThreadCopyState{
|
||||
size: test.size,
|
||||
streams: test.streams,
|
||||
size: test.size,
|
||||
}
|
||||
mc.calculateChunks()
|
||||
assert.Equal(t, test.wantPartSize, mc.partSize)
|
||||
assert.Equal(t, test.wantStreams, mc.streams)
|
||||
mc.numChunks = calculateNumChunks(test.size, test.chunkSize)
|
||||
assert.Equal(t, test.wantNumChunks, mc.numChunks)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user