mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-09-03 08:41:33 +02:00
etcd: add SequenceKey function
This commit is contained in:
@@ -130,3 +130,10 @@ func ValueKey(key string, buckets ...string) string {
|
|||||||
|
|
||||||
return string(makeValueKey(bucket, []byte(key)))
|
return string(makeValueKey(bucket, []byte(key)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceKey is a helper function used in tests or external tools to create a
|
||||||
|
// sequence key from the passed bucket list.
|
||||||
|
func SequenceKey(buckets ...string) string {
|
||||||
|
id := makeBucketID([]byte(BucketKey(buckets...)))
|
||||||
|
return string(makeSequenceKey(id[:]))
|
||||||
|
}
|
||||||
|
34
kvdb/etcd/bucket_test.go
Normal file
34
kvdb/etcd/bucket_test.go
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
//go:build kvdb_etcd
|
||||||
|
// +build kvdb_etcd
|
||||||
|
|
||||||
|
package etcd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/sha256"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TestBucketKey tests that a key for a bucket can be created correctly.
|
||||||
|
func TestBucketKey(t *testing.T) {
|
||||||
|
rootID := sha256.Sum256([]byte("@"))
|
||||||
|
key := append(rootID[:], []byte("foo")...)
|
||||||
|
key = append(key, 0xff)
|
||||||
|
require.Equal(t, string(key), BucketKey("foo"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestBucketVal tests that a key for a bucket value can be created correctly.
|
||||||
|
func TestBucketVal(t *testing.T) {
|
||||||
|
rootID := sha256.Sum256([]byte("@"))
|
||||||
|
key := append(rootID[:], []byte("foo")...)
|
||||||
|
key = append(key, 0xff)
|
||||||
|
|
||||||
|
keyID := sha256.Sum256(key)
|
||||||
|
require.Equal(t, string(keyID[:]), BucketVal("foo"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestSequenceKey tests that a key for a sequence can be created correctly.
|
||||||
|
func TestSequenceKey(t *testing.T) {
|
||||||
|
require.Contains(t, SequenceKey("foo", "bar", "baz"), "$seq$")
|
||||||
|
}
|
Reference in New Issue
Block a user