restic/cache_test.go

46 lines
980 B
Go

package restic_test
import (
"encoding/json"
"testing"
"github.com/restic/restic"
"github.com/restic/restic/backend"
)
func TestCache(t *testing.T) {
be := setupBackend(t)
defer teardownBackend(t, be)
key := setupKey(t, be, "geheim")
server := restic.NewServerWithKey(be, key)
cache, err := restic.NewCache(server)
ok(t, err)
arch, err := restic.NewArchiver(server)
ok(t, err)
// archive some files, this should automatically cache all blobs from the snapshot
_, id, err := arch.Snapshot(nil, []string{*benchArchiveDirectory}, nil)
// try to load map from cache
rd, err := cache.Load(backend.Snapshot, "blobs", id)
ok(t, err)
dec := json.NewDecoder(rd)
m := &restic.Map{}
err = dec.Decode(m)
ok(t, err)
// remove cached blob list
ok(t, cache.Purge(backend.Snapshot, "blobs", id))
// recreate cached blob list
m2, err := restic.CacheSnapshotBlobs(server, cache, id)
ok(t, err)
// compare maps
assert(t, m.Equals(m2), "Maps are not equal")
}