mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-21 18:37:26 +08:00
65 lines
2.2 KiB
Go
65 lines
2.2 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 objstorageprovider
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"testing"
|
|
|
|
"github.com/cockroachdb/pebble/internal/base"
|
|
"github.com/cockroachdb/pebble/objstorage"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestSharedObjectNames(t *testing.T) {
|
|
t.Run("crosscheck", func(t *testing.T) {
|
|
supportedFileTypes := []base.FileType{
|
|
base.FileTypeTable,
|
|
}
|
|
for it := 0; it < 100; it++ {
|
|
var meta objstorage.ObjectMetadata
|
|
meta.DiskFileNum = base.FileNum(rand.Intn(100000)).DiskFileNum()
|
|
meta.FileType = supportedFileTypes[rand.Int()%len(supportedFileTypes)]
|
|
meta.Remote.CreatorID = objstorage.CreatorID(rand.Int63())
|
|
meta.Remote.CreatorFileNum = base.FileNum(rand.Intn(100000)).DiskFileNum()
|
|
if rand.Intn(4) == 0 {
|
|
meta.Remote.CustomObjectName = fmt.Sprintf("foo-%d.sst", rand.Intn(10000))
|
|
}
|
|
|
|
obj := remoteObjectName(meta)
|
|
// Cross-check against cleaner implementations.
|
|
expObj := meta.Remote.CustomObjectName
|
|
if expObj == "" {
|
|
expObj = fmt.Sprintf("%04x-%s-%s", objHash(meta), meta.Remote.CreatorID, base.MakeFilename(meta.FileType, meta.Remote.CreatorFileNum))
|
|
}
|
|
require.Equal(t, expObj, obj)
|
|
|
|
require.Equal(t, expObj+".ref.", sharedObjectRefPrefix(meta))
|
|
|
|
refCreatorID := objstorage.CreatorID(rand.Int63())
|
|
refObj := sharedObjectRefName(meta, refCreatorID, meta.DiskFileNum)
|
|
expRefObj := fmt.Sprintf("%s.ref.%s.%s", expObj, refCreatorID, meta.DiskFileNum)
|
|
require.Equal(t, refObj, expRefObj)
|
|
}
|
|
})
|
|
|
|
t.Run("example", func(t *testing.T) {
|
|
var meta objstorage.ObjectMetadata
|
|
meta.DiskFileNum = base.FileNum(123).DiskFileNum()
|
|
meta.FileType = base.FileTypeTable
|
|
meta.Remote.CreatorID = objstorage.CreatorID(456)
|
|
meta.Remote.CreatorFileNum = base.FileNum(789).DiskFileNum()
|
|
require.Equal(t, remoteObjectName(meta), "0e17-456-000789.sst")
|
|
require.Equal(t, sharedObjectRefPrefix(meta), "0e17-456-000789.sst.ref.")
|
|
|
|
refCreatorID := objstorage.CreatorID(101112)
|
|
require.Equal(
|
|
t, sharedObjectRefName(meta, refCreatorID, meta.DiskFileNum),
|
|
"0e17-456-000789.sst.ref.101112.000123",
|
|
)
|
|
})
|
|
}
|