2016-07-31 12:09:44 +02:00
|
|
|
package checker
|
|
|
|
|
|
|
|
|
|
import (
|
2017-06-04 11:16:55 +02:00
|
|
|
"context"
|
2016-07-31 12:09:44 +02:00
|
|
|
"testing"
|
2025-10-03 22:46:43 +02:00
|
|
|
|
2025-11-28 19:12:38 +00:00
|
|
|
"github.com/restic/restic/internal/data"
|
2025-10-03 22:46:43 +02:00
|
|
|
"github.com/restic/restic/internal/restic"
|
2016-07-31 12:09:44 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// TestCheckRepo runs the checker on repo.
|
2025-09-28 14:52:41 +02:00
|
|
|
func TestCheckRepo(t testing.TB, repo checkerRepository) {
|
2020-11-07 00:07:32 +01:00
|
|
|
chkr := New(repo, true)
|
2016-07-31 12:09:44 +02:00
|
|
|
|
2023-10-01 19:48:56 +02:00
|
|
|
hints, errs := chkr.LoadIndex(context.TODO(), nil)
|
2016-07-31 12:09:44 +02:00
|
|
|
if len(errs) != 0 {
|
|
|
|
|
t.Fatalf("errors loading index: %v", errs)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(hints) != 0 {
|
|
|
|
|
t.Fatalf("errors loading index: %v", hints)
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-28 19:12:38 +00:00
|
|
|
err := chkr.LoadSnapshots(context.TODO(), &data.SnapshotFilter{}, nil)
|
2021-11-07 22:33:44 +01:00
|
|
|
if err != nil {
|
|
|
|
|
t.Error(err)
|
|
|
|
|
}
|
|
|
|
|
|
2016-08-01 21:12:23 +02:00
|
|
|
// packs
|
2016-07-31 12:09:44 +02:00
|
|
|
errChan := make(chan error)
|
2017-06-04 11:16:55 +02:00
|
|
|
go chkr.Packs(context.TODO(), errChan)
|
2016-08-01 21:12:23 +02:00
|
|
|
|
|
|
|
|
for err := range errChan {
|
|
|
|
|
t.Error(err)
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-28 14:25:49 +02:00
|
|
|
// structure
|
|
|
|
|
errChan = make(chan error)
|
|
|
|
|
go chkr.Structure(context.TODO(), nil, errChan)
|
2016-07-31 12:09:44 +02:00
|
|
|
|
2025-09-28 14:25:49 +02:00
|
|
|
for err := range errChan {
|
|
|
|
|
t.Error(err)
|
|
|
|
|
}
|
2016-07-31 12:09:44 +02:00
|
|
|
|
2025-09-28 14:25:49 +02:00
|
|
|
// unused blobs
|
|
|
|
|
blobs, err := chkr.UnusedBlobs(context.TODO())
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Error(err)
|
|
|
|
|
}
|
|
|
|
|
if len(blobs) > 0 {
|
|
|
|
|
t.Errorf("unused blobs found: %v", blobs)
|
2016-08-01 21:12:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// read data
|
2016-07-31 12:09:44 +02:00
|
|
|
errChan = make(chan error)
|
2025-10-03 22:46:43 +02:00
|
|
|
go chkr.ReadPacks(context.TODO(), func(packs map[restic.ID]int64) map[restic.ID]int64 {
|
|
|
|
|
return packs
|
|
|
|
|
}, nil, errChan)
|
2016-07-31 12:09:44 +02:00
|
|
|
|
|
|
|
|
for err := range errChan {
|
|
|
|
|
t.Error(err)
|
|
|
|
|
}
|
|
|
|
|
}
|