From ca678d949564351af5d2ef870068ca6839fa1ebb Mon Sep 17 00:00:00 2001 From: garethgeorge Date: Mon, 9 Sep 2024 00:40:14 -0700 Subject: [PATCH] chore: fix oplog tests --- cmd/devtools/oplogexport/main.go | 24 +++++------ internal/api/backresthandler_test.go | 5 ++- .../oplog/storetests/storecontract_test.go | 40 +++++++++++++++---- .../orchestrator/tasks/scheduling_test.go | 5 ++- 4 files changed, 51 insertions(+), 23 deletions(-) diff --git a/cmd/devtools/oplogexport/main.go b/cmd/devtools/oplogexport/main.go index 478a3407..e17de767 100644 --- a/cmd/devtools/oplogexport/main.go +++ b/cmd/devtools/oplogexport/main.go @@ -3,8 +3,8 @@ package main import ( "bytes" "compress/gzip" - "errors" "flag" + "log" "os" "path" @@ -12,8 +12,6 @@ import ( "github.com/garethgeorge/backrest/internal/env" "github.com/garethgeorge/backrest/internal/oplog" "github.com/garethgeorge/backrest/internal/oplog/bboltstore" - "go.etcd.io/bbolt" - "go.uber.org/zap" "google.golang.org/protobuf/encoding/prototext" ) @@ -32,34 +30,34 @@ func main() { oplogFile := path.Join(env.DataDir(), "oplog.boltdb") opstore, err := bboltstore.NewBboltStore(oplogFile) if err != nil { - if !errors.Is(err, bbolt.ErrTimeout) { - zap.S().Fatalf("timeout while waiting to open database, is the database open elsewhere?") - } - zap.S().Warnf("operation log may be corrupted, if errors recur delete the file %q and restart. Your backups stored in your repos are safe.", oplogFile) - zap.S().Fatalf("error creating oplog : %v", err) + log.Fatalf("error creating oplog : %v", err) } defer opstore.Close() output := &v1.OperationList{} - log := oplog.NewOpLog(opstore) - log.Query(oplog.Query{}, func(op *v1.Operation) error { + l, err := oplog.NewOpLog(opstore) + if err != nil { + log.Fatalf("error creating oplog: %v", err) + } + l.Query(oplog.Query{}, func(op *v1.Operation) error { output.Operations = append(output.Operations, op) return nil }) + log.Printf("exporting %d operations", len(output.Operations)) bytes, err := prototext.MarshalOptions{Multiline: true}.Marshal(output) if err != nil { - zap.S().Fatalf("error marshalling operations: %v", err) + log.Fatalf("error marshalling operations: %v", err) } bytes, err = compress(bytes) if err != nil { - zap.S().Fatalf("error compressing operations: %v", err) + log.Fatalf("error compressing operations: %v", err) } if err := os.WriteFile(*outpath, bytes, 0644); err != nil { - zap.S().Fatalf("error writing to file: %v", err) + log.Fatalf("error writing to file: %v", err) } } diff --git a/internal/api/backresthandler_test.go b/internal/api/backresthandler_test.go index 670edc77..88de3b26 100644 --- a/internal/api/backresthandler_test.go +++ b/internal/api/backresthandler_test.go @@ -790,7 +790,10 @@ func createSystemUnderTest(t *testing.T, config config.ConfigStore) systemUnderT t.Fatalf("Failed to create oplog store: %v", err) } t.Cleanup(func() { opstore.Close() }) - oplog := oplog.NewOpLog(opstore) + oplog, err := oplog.NewOpLog(opstore) + if err != nil { + t.Fatalf("Failed to create oplog: %v", err) + } logStore, err := logwriter.NewLogManager(dir+"/log", 10) if err != nil { t.Fatalf("Failed to create log store: %v", err) diff --git a/internal/oplog/storetests/storecontract_test.go b/internal/oplog/storetests/storecontract_test.go index 4aec2a91..ceb71de7 100644 --- a/internal/oplog/storetests/storecontract_test.go +++ b/internal/oplog/storetests/storecontract_test.go @@ -35,7 +35,10 @@ func TestCreate(t *testing.T) { // t.Parallel() for name, store := range StoresForTest(t) { t.Run(name, func(t *testing.T) { - _ = oplog.NewOpLog(store) + _, err := oplog.NewOpLog(store) + if err != nil { + t.Fatalf("error creating oplog: %v", err) + } }) } } @@ -127,7 +130,10 @@ func TestAddOperation(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() - log := oplog.NewOpLog(store) + log, err := oplog.NewOpLog(store) + if err != nil { + t.Fatalf("error creating oplog: %v", err) + } op := proto.Clone(tc.op).(*v1.Operation) if err := log.Add(op); (err != nil) != tc.wantErr { t.Errorf("Add() error = %v, wantErr %v", err, tc.wantErr) @@ -226,7 +232,10 @@ func TestListOperation(t *testing.T) { for name, store := range StoresForTest(t) { t.Run(name, func(t *testing.T) { - log := oplog.NewOpLog(store) + log, err := oplog.NewOpLog(store) + if err != nil { + t.Fatalf("error creating oplog: %v", err) + } for _, op := range ops { if err := log.Add(proto.Clone(op).(*v1.Operation)); err != nil { t.Fatalf("error adding operation: %s", err) @@ -266,7 +275,10 @@ func TestBigIO(t *testing.T) { store := store t.Run(name, func(t *testing.T) { t.Parallel() - log := oplog.NewOpLog(store) + log, err := oplog.NewOpLog(store) + if err != nil { + t.Fatalf("error creating oplog: %v", err) + } for i := 0; i < count; i++ { if err := log.Add(&v1.Operation{ UnixTimeStartMs: 1234, @@ -301,7 +313,10 @@ func TestIndexSnapshot(t *testing.T) { store := store t.Run(name, func(t *testing.T) { t.Parallel() - log := oplog.NewOpLog(store) + log, err := oplog.NewOpLog(store) + if err != nil { + t.Fatalf("error creating oplog: %v", err) + } op := proto.Clone(op).(*v1.Operation) if err := log.Add(op); err != nil { @@ -341,7 +356,10 @@ func TestUpdateOperation(t *testing.T) { store := store t.Run(name, func(t *testing.T) { t.Parallel() - log := oplog.NewOpLog(store) + log, err := oplog.NewOpLog(store) + if err != nil { + t.Fatalf("error creating oplog: %v", err) + } op := proto.Clone(op).(*v1.Operation) if err := log.Add(op); err != nil { @@ -432,7 +450,10 @@ func countBySnapshotIdHelper(t *testing.T, log *oplog.OpLog, snapshotId string, func BenchmarkAdd(b *testing.B) { for name, store := range StoresForTest(b) { b.Run(name, func(b *testing.B) { - log := oplog.NewOpLog(store) + log, err := oplog.NewOpLog(store) + if err != nil { + b.Fatalf("error creating oplog: %v", err) + } for i := 0; i < b.N; i++ { _ = log.Add(&v1.Operation{ UnixTimeStartMs: 1234, @@ -450,7 +471,10 @@ func BenchmarkList(b *testing.B) { for _, count := range []int{100, 1000, 10000} { b.Run(fmt.Sprintf("%d", count), func(b *testing.B) { for name, store := range StoresForTest(b) { - log := oplog.NewOpLog(store) + log, err := oplog.NewOpLog(store) + if err != nil { + b.Fatalf("error creating oplog: %v", err) + } for i := 0; i < count; i++ { _ = log.Add(&v1.Operation{ UnixTimeStartMs: 1234, diff --git a/internal/orchestrator/tasks/scheduling_test.go b/internal/orchestrator/tasks/scheduling_test.go index a8384e3f..21858178 100644 --- a/internal/orchestrator/tasks/scheduling_test.go +++ b/internal/orchestrator/tasks/scheduling_test.go @@ -378,7 +378,10 @@ func TestScheduling(t *testing.T) { } } - log := oplog.NewOpLog(opstore) + log, err := oplog.NewOpLog(opstore) + if err != nil { + t.Fatalf("failed to create oplog: %v", err) + } runner := newTestTaskRunner(t, cfg, log)