github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/pkg/sink/codec/maxwell/maxwell_message_test.go (about) 1 // Copyright 2022 PingCAP, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package maxwell 15 16 import ( 17 "testing" 18 19 "github.com/pingcap/tidb/pkg/parser/mysql" 20 "github.com/pingcap/tiflow/cdc/model" 21 "github.com/stretchr/testify/require" 22 ) 23 24 func TestMaxwellFormatCol(t *testing.T) { 25 t.Parallel() 26 row := &maxwellMessage{ 27 Ts: 1, 28 Database: "a", 29 Table: "b", 30 Type: "delete", 31 Xid: 1, 32 Xoffset: 1, 33 Position: "", 34 Gtid: "", 35 Data: map[string]interface{}{ 36 "id": "1", 37 }, 38 } 39 rowEncode, err := row.encode() 40 require.Nil(t, err) 41 require.NotNil(t, rowEncode) 42 } 43 44 func TestEncodeBinaryToMaxwell(t *testing.T) { 45 t.Parallel() 46 47 cols := []*model.Column{{ 48 Name: "varbinary", 49 Type: mysql.TypeVarchar, 50 Value: []uint8("测试varbinary"), 51 Flag: model.BinaryFlag, 52 }} 53 54 tableInfo := model.BuildTableInfo("a", "b", cols, nil) 55 e := &model.RowChangedEvent{ 56 TableInfo: tableInfo, 57 Columns: model.Columns2ColumnDatas(cols, tableInfo), 58 } 59 60 key, msg := rowChangeToMaxwellMsg(e, false) 61 require.NotNil(t, key) 62 require.NotNil(t, msg) 63 }