ceremonyclient/pebble/tool/make_test_remotecat.go

78 lines
2.1 KiB
Go
Raw Normal View History

2024-01-03 07:31:42 +00:00
// 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.
//go:build make_test_remotecat
// +build make_test_remotecat
// Run using: go run -tags make_test_remotecat ./tool/make_test_remotecat.go
package main
import (
"log"
"os"
"path/filepath"
"github.com/cockroachdb/pebble/internal/base"
"github.com/cockroachdb/pebble/objstorage"
"github.com/cockroachdb/pebble/objstorage/objstorageprovider/remoteobjcat"
"github.com/cockroachdb/pebble/vfs"
)
func main() {
dir, err := os.MkdirTemp("", "make-test-remotecat")
if err != nil {
log.Fatal(err)
}
catalog, _, err := remoteobjcat.Open(vfs.Default, dir)
if err != nil {
log.Fatal(err)
}
if err := catalog.SetCreatorID(3); err != nil {
log.Fatal(err)
}
var b remoteobjcat.Batch
b.AddObject(remoteobjcat.RemoteObjectMetadata{
FileNum: base.FileNum(1).DiskFileNum(),
FileType: base.FileTypeTable,
CreatorID: 3,
CreatorFileNum: base.FileNum(1).DiskFileNum(),
CleanupMethod: objstorage.SharedRefTracking,
Locator: "foo",
})
if err := catalog.ApplyBatch(b); err != nil {
log.Fatal(err)
}
b.Reset()
b.AddObject(remoteobjcat.RemoteObjectMetadata{
FileNum: base.FileNum(2).DiskFileNum(),
FileType: base.FileTypeTable,
CreatorID: 5,
CreatorFileNum: base.FileNum(10).DiskFileNum(),
CleanupMethod: objstorage.SharedRefTracking,
Locator: "foo",
})
b.DeleteObject(base.FileNum(1).DiskFileNum())
b.AddObject(remoteobjcat.RemoteObjectMetadata{
FileNum: base.FileNum(3).DiskFileNum(),
FileType: base.FileTypeTable,
CleanupMethod: objstorage.SharedRefTracking,
Locator: "bar",
CustomObjectName: "external.sst",
})
if err := catalog.ApplyBatch(b); err != nil {
log.Fatal(err)
}
if err := catalog.Close(); err != nil {
log.Fatal(err)
}
contents, err := os.ReadFile(filepath.Join(dir, "REMOTE-OBJ-CATALOG-000001"))
if err != nil {
log.Fatal(err)
}
if err := os.WriteFile("tool/testdata/REMOTE-OBJ-CATALOG", contents, 0666); err != nil {
log.Fatal(err)
}
}