2
2
mirror of https://github.com/octoleo/restic.git synced 2024-12-22 10:58:55 +00:00

backend: Add partial read failure to error backend

This commit is contained in:
Alexander Neumann 2017-10-17 22:11:38 +02:00
parent 8e2ef3f38b
commit ce4d71d626

View File

@ -3,6 +3,7 @@ package backend
import (
"context"
"io"
"io/ioutil"
"math/rand"
"sync"
@ -14,6 +15,7 @@ import (
// the retry functions.
type ErrorBackend struct {
FailSave float32
FailSaveRead float32
FailLoad float32
FailStat float32
restic.Backend
@ -48,6 +50,15 @@ func (be *ErrorBackend) Save(ctx context.Context, h restic.Handle, rd io.Reader)
return errors.Errorf("Save(%v) random error induced", h)
}
if be.fail(be.FailSaveRead) {
_, err := io.CopyN(ioutil.Discard, rd, be.r.Int63n(1000))
if err != nil {
return err
}
return errors.Errorf("Save(%v) random error with partial read induced", h)
}
return be.Backend.Save(ctx, h, rd)
}