client-go/internal/apicodec/codec_test.go

60 lines
1.6 KiB
Go

package apicodec
import (
"testing"
"github.com/pingcap/kvproto/pkg/kvrpcpb"
"github.com/stretchr/testify/assert"
"github.com/tikv/client-go/v2/tikvrpc"
)
func TestParseKeyspaceID(t *testing.T) {
id, err := ParseKeyspaceID([]byte{'x', 1, 2, 3, 1, 2, 3})
assert.Nil(t, err)
assert.Equal(t, KeyspaceID(0x010203), id)
id, err = ParseKeyspaceID([]byte{'r', 1, 2, 3, 1, 2, 3, 4})
assert.Nil(t, err)
assert.Equal(t, KeyspaceID(0x010203), id)
id, err = ParseKeyspaceID([]byte{'t', 0, 0})
assert.NotNil(t, err)
assert.Equal(t, NullspaceID, id)
id, err = ParseKeyspaceID([]byte{'t', 0, 0, 1, 1, 2, 3})
assert.NotNil(t, err)
assert.Equal(t, NullspaceID, id)
}
func TestDecodeKey(t *testing.T) {
pfx, key, err := DecodeKey([]byte{'r', 1, 2, 3, 1, 2, 3, 4}, kvrpcpb.APIVersion_V2)
assert.Nil(t, err)
assert.Equal(t, []byte{'r', 1, 2, 3}, pfx)
assert.Equal(t, []byte{1, 2, 3, 4}, key)
pfx, key, err = DecodeKey([]byte{'x', 1, 2, 3, 1, 2, 3, 4}, kvrpcpb.APIVersion_V2)
assert.Nil(t, err)
assert.Equal(t, []byte{'x', 1, 2, 3}, pfx)
assert.Equal(t, []byte{1, 2, 3, 4}, key)
pfx, key, err = DecodeKey([]byte{'t', 1, 2, 3, 1, 2, 3, 4}, kvrpcpb.APIVersion_V1)
assert.Nil(t, err)
assert.Empty(t, pfx)
assert.Equal(t, []byte{'t', 1, 2, 3, 1, 2, 3, 4}, key)
pfx, key, err = DecodeKey([]byte{'t', 1, 2, 3, 1, 2, 3, 4}, kvrpcpb.APIVersion_V2)
assert.NotNil(t, err)
assert.Empty(t, pfx)
assert.Empty(t, key)
}
func TestEncodeUnknownRequest(t *testing.T) {
req := &tikvrpc.Request{
Type: tikvrpc.CmdStoreSafeTS,
Req: &kvrpcpb.StoreSafeTSRequest{},
}
c := NewCodecV1(ModeTxn)
_, err := c.EncodeRequest(req)
assert.Nil(t, err)
}