ceremonyclient/pebble/objstorage/objstorageprovider/remoteobjcat/version_edit_test.go
Cassandra Heart 2e2a1e4789
v1.2.0 (#31)
2024-01-03 01:31:42 -06:00

93 lines
2.4 KiB
Go

// Copyright 2023 The LevelDB-Go and Pebble Authors. All rights reserved. Use
// of this source code is governed by a BSD-style license that can be found in
// the LICENSE file.
package remoteobjcat
import (
"bytes"
"strings"
"testing"
"github.com/cockroachdb/errors"
"github.com/cockroachdb/pebble/internal/base"
"github.com/cockroachdb/pebble/objstorage"
"github.com/kr/pretty"
)
func TestVersionEditRoundTrip(t *testing.T) {
for _, ve := range []VersionEdit{
{},
{
CreatorID: 12345,
},
{
NewObjects: []RemoteObjectMetadata{
{
FileNum: base.FileNum(1).DiskFileNum(),
FileType: base.FileTypeTable,
CreatorID: 12,
CreatorFileNum: base.FileNum(123).DiskFileNum(),
CleanupMethod: objstorage.SharedNoCleanup,
Locator: "",
CustomObjectName: "foo",
},
},
},
{
DeletedObjects: []base.DiskFileNum{base.FileNum(1).DiskFileNum()},
},
{
CreatorID: 12345,
NewObjects: []RemoteObjectMetadata{
{
FileNum: base.FileNum(1).DiskFileNum(),
FileType: base.FileTypeTable,
CreatorID: 12,
CreatorFileNum: base.FileNum(123).DiskFileNum(),
CleanupMethod: objstorage.SharedRefTracking,
Locator: "foo",
CustomObjectName: "",
},
{
FileNum: base.FileNum(2).DiskFileNum(),
FileType: base.FileTypeTable,
CreatorID: 22,
CreatorFileNum: base.FileNum(223).DiskFileNum(),
Locator: "bar",
CustomObjectName: "obj1",
},
{
FileNum: base.FileNum(3).DiskFileNum(),
FileType: base.FileTypeTable,
CreatorID: 32,
CreatorFileNum: base.FileNum(323).DiskFileNum(),
CleanupMethod: objstorage.SharedRefTracking,
Locator: "baz",
CustomObjectName: "obj2",
},
},
DeletedObjects: []base.DiskFileNum{base.FileNum(4).DiskFileNum(), base.FileNum(5).DiskFileNum()},
},
} {
if err := checkRoundTrip(ve); err != nil {
t.Fatalf("%+v did not roundtrip: %v", ve, err)
}
}
}
func checkRoundTrip(e0 VersionEdit) error {
var e1 VersionEdit
buf := new(bytes.Buffer)
if err := e0.Encode(buf); err != nil {
return errors.Wrap(err, "encode")
}
if err := e1.Decode(buf); err != nil {
return errors.Wrap(err, "decode")
}
if diff := pretty.Diff(e0, e1); diff != nil {
return errors.Errorf("%s", strings.Join(diff, "\n"))
}
return nil
}