mirror of https://github.com/tikv/client-go.git
60 lines
1.6 KiB
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)
|
|
}
|