etcd: add SequenceKey function

This commit is contained in:
Oliver Gugger committed 2022-10-13 09:37:52 +02:00
1 parent d576184fdb
commit ee9d6f21bd
2 files changed
+41

No files matched your search

+7
View File
@@ -130,3 +130,10 @@ func ValueKey(key string, buckets ...string) string {
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
View 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$")
}