github.com/cockroachdb/pebble@v0.0.0-20231214172447-ab4952c5f87b/tool/make_test_remotecat.go (about)

     1  // Copyright 2023 The LevelDB-Go and Pebble Authors. All rights reserved. Use
     2  // of this source code is governed by a BSD-style license that can be found in
     3  // the LICENSE file.
     4  
     5  //go:build make_test_remotecat
     6  // +build make_test_remotecat
     7  
     8  // Run using: go run -tags make_test_remotecat ./tool/make_test_remotecat.go
     9  package main
    10  
    11  import (
    12  	"log"
    13  	"os"
    14  	"path/filepath"
    15  
    16  	"github.com/cockroachdb/pebble/internal/base"
    17  	"github.com/cockroachdb/pebble/objstorage"
    18  	"github.com/cockroachdb/pebble/objstorage/objstorageprovider/remoteobjcat"
    19  	"github.com/cockroachdb/pebble/vfs"
    20  )
    21  
    22  func main() {
    23  	dir, err := os.MkdirTemp("", "make-test-remotecat")
    24  	if err != nil {
    25  		log.Fatal(err)
    26  	}
    27  	catalog, _, err := remoteobjcat.Open(vfs.Default, dir)
    28  	if err != nil {
    29  		log.Fatal(err)
    30  	}
    31  	if err := catalog.SetCreatorID(3); err != nil {
    32  		log.Fatal(err)
    33  	}
    34  
    35  	var b remoteobjcat.Batch
    36  	b.AddObject(remoteobjcat.RemoteObjectMetadata{
    37  		FileNum:        base.FileNum(1).DiskFileNum(),
    38  		FileType:       base.FileTypeTable,
    39  		CreatorID:      3,
    40  		CreatorFileNum: base.FileNum(1).DiskFileNum(),
    41  		CleanupMethod:  objstorage.SharedRefTracking,
    42  		Locator:        "foo",
    43  	})
    44  	if err := catalog.ApplyBatch(b); err != nil {
    45  		log.Fatal(err)
    46  	}
    47  	b.Reset()
    48  	b.AddObject(remoteobjcat.RemoteObjectMetadata{
    49  		FileNum:        base.FileNum(2).DiskFileNum(),
    50  		FileType:       base.FileTypeTable,
    51  		CreatorID:      5,
    52  		CreatorFileNum: base.FileNum(10).DiskFileNum(),
    53  		CleanupMethod:  objstorage.SharedRefTracking,
    54  		Locator:        "foo",
    55  	})
    56  	b.DeleteObject(base.FileNum(1).DiskFileNum())
    57  	b.AddObject(remoteobjcat.RemoteObjectMetadata{
    58  		FileNum:          base.FileNum(3).DiskFileNum(),
    59  		FileType:         base.FileTypeTable,
    60  		CleanupMethod:    objstorage.SharedRefTracking,
    61  		Locator:          "bar",
    62  		CustomObjectName: "external.sst",
    63  	})
    64  	if err := catalog.ApplyBatch(b); err != nil {
    65  		log.Fatal(err)
    66  	}
    67  	if err := catalog.Close(); err != nil {
    68  		log.Fatal(err)
    69  	}
    70  	contents, err := os.ReadFile(filepath.Join(dir, "REMOTE-OBJ-CATALOG-000001"))
    71  	if err != nil {
    72  		log.Fatal(err)
    73  	}
    74  	if err := os.WriteFile("tool/testdata/REMOTE-OBJ-CATALOG", contents, 0666); err != nil {
    75  		log.Fatal(err)
    76  	}
    77  }