Skip to content

Commit

Permalink
chore: fix oplog tests
Browse files Browse the repository at this point in the history
  • Loading branch information
garethgeorge committed Sep 9, 2024
1 parent 6894128 commit ca678d9
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 23 deletions.
24 changes: 11 additions & 13 deletions cmd/devtools/oplogexport/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@ package main
import (
"bytes"
"compress/gzip"
"errors"
"flag"
"log"
"os"
"path"

v1 "github.com/garethgeorge/backrest/gen/go/v1"
"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"
)

Expand All @@ -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)
}
}

Expand Down
5 changes: 4 additions & 1 deletion internal/api/backresthandler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
40 changes: 32 additions & 8 deletions internal/oplog/storetests/storecontract_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
})
}
}
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down
5 changes: 4 additions & 1 deletion internal/orchestrator/tasks/scheduling_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down

0 comments on commit ca678d9

Please sign in to comment.