MCPcopy Create free account
hub / github.com/imgproxy/imgproxy / TestAsyncBufferReadAtErrAtSomePoint

Function TestAsyncBufferReadAtErrAtSomePoint

asyncbuffer/buffer_test.go:309–338  ·  view source on GitHub ↗

TestAsyncBufferReadAtErrAtSomePoint tests reading from AsyncBuffer using readAt method which would fail somewhere

(t *testing.T)

Source from the content-addressed store, hash-verified

307// TestAsyncBufferReadAtErrAtSomePoint tests reading from AsyncBuffer using readAt method
308// which would fail somewhere
309func TestAsyncBufferReadAtErrAtSomePoint(t *testing.T) {
310 // Let's use source buffer which is 4.5 chunks long
311 source, bytesReader := generateSourceData(t, asyncbuffer.ChunkSize*4+halfChunkSize)
312 slowReader := &erraticReader{reader: bytesReader, failAt: asyncbuffer.ChunkSize*3 + 5} // fails at last chunk
313 ab := asyncbuffer.New(slowReader, -1)
314 defer ab.Close()
315
316 // Let's wait for all chunks to be read
317 _, err := ab.Wait()
318 require.Error(t, err, "simulated read failure")
319
320 // Let's read something, but before error occurs
321 target := make([]byte, halfChunkSize)
322 n, err := ab.ReadAt(target, 0)
323 require.NoError(t, err)
324 assert.Equal(t, len(target), n)
325 assert.Equal(t, target, source[:halfChunkSize])
326
327 // And again
328 target = make([]byte, halfChunkSize)
329 n, err = ab.ReadAt(target, halfChunkSize)
330 require.NoError(t, err)
331 assert.Equal(t, len(target), n)
332 assert.Equal(t, target, source[halfChunkSize:halfChunkSize*2])
333
334 // Let's read something, but when error occurs
335 target = make([]byte, halfChunkSize)
336 _, err = ab.ReadAt(target, asyncbuffer.ChunkSize*3)
337 require.Error(t, err, "simulated read failure")
338}
339
340// TestAsyncBufferReadAsync tests reading from AsyncBuffer using readAt method
341// with full = false

Callers

nothing calls this directly

Calls 6

NewFunction · 0.92
generateSourceDataFunction · 0.85
ReadAtMethod · 0.80
CloseMethod · 0.65
ErrorMethod · 0.65
WaitMethod · 0.45

Tested by

no test coverage detected