mirror of https://github.com/restic/restic.git
Add test and benchmark for SaveFrom()
This commit is contained in:
parent
731e81ef06
commit
d94d003165
|
@ -2,8 +2,10 @@ package restic_test
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/rand"
|
||||
"crypto/sha256"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"testing"
|
||||
|
||||
"github.com/restic/restic"
|
||||
|
@ -47,9 +49,6 @@ func BenchmarkSaveJSON(t *testing.B) {
|
|||
key := setupKey(t, be, "geheim")
|
||||
server := restic.NewServerWithKey(be, key)
|
||||
|
||||
t.ResetTimer()
|
||||
//t.SetBytes(int64(size))
|
||||
|
||||
obj := serverTests[0]
|
||||
|
||||
data, err := json.Marshal(obj)
|
||||
|
@ -57,6 +56,8 @@ func BenchmarkSaveJSON(t *testing.B) {
|
|||
data = append(data, '\n')
|
||||
h := sha256.Sum256(data)
|
||||
|
||||
t.ResetTimer()
|
||||
|
||||
for i := 0; i < t.N; i++ {
|
||||
blob, err := server.SaveJSON(backend.Tree, obj)
|
||||
ok(t, err)
|
||||
|
@ -66,3 +67,59 @@ func BenchmarkSaveJSON(t *testing.B) {
|
|||
h, blob.ID)
|
||||
}
|
||||
}
|
||||
|
||||
var testSizes = []int{5, 23, 2<<18 + 23, 1 << 20}
|
||||
|
||||
func TestSaveFrom(t *testing.T) {
|
||||
be := setupBackend(t)
|
||||
defer teardownBackend(t, be)
|
||||
key := setupKey(t, be, "geheim")
|
||||
server := restic.NewServerWithKey(be, key)
|
||||
|
||||
for _, size := range testSizes {
|
||||
data := make([]byte, size)
|
||||
_, err := io.ReadFull(rand.Reader, data)
|
||||
ok(t, err)
|
||||
|
||||
id := sha256.Sum256(data)
|
||||
|
||||
// save
|
||||
blob, err := server.SaveFrom(backend.Data, id[:], uint(size), bytes.NewReader(data))
|
||||
ok(t, err)
|
||||
|
||||
// read back
|
||||
buf, err := server.Load(backend.Data, blob)
|
||||
|
||||
assert(t, len(buf) == len(data),
|
||||
"number of bytes read back does not match: expected %d, got %d",
|
||||
len(data), len(buf))
|
||||
|
||||
assert(t, bytes.Equal(buf, data),
|
||||
"data does not match: expected %02x, got %02x",
|
||||
data, buf)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkSaveFrom(t *testing.B) {
|
||||
be := setupBackend(t)
|
||||
defer teardownBackend(t, be)
|
||||
key := setupKey(t, be, "geheim")
|
||||
server := restic.NewServerWithKey(be, key)
|
||||
|
||||
size := 4 << 20 // 4MiB
|
||||
|
||||
data := make([]byte, size)
|
||||
_, err := io.ReadFull(rand.Reader, data)
|
||||
ok(t, err)
|
||||
|
||||
id := sha256.Sum256(data)
|
||||
|
||||
t.ResetTimer()
|
||||
t.SetBytes(int64(size))
|
||||
|
||||
for i := 0; i < t.N; i++ {
|
||||
// save
|
||||
_, err := server.SaveFrom(backend.Data, id[:], uint(size), bytes.NewReader(data))
|
||||
ok(t, err)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue