github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/cdc/scheduler/internal/v3/transport/mock.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 transport 15 16 import ( 17 "context" 18 19 "github.com/pingcap/tiflow/cdc/scheduler/schedulepb" 20 ) 21 22 // MockTrans mocks transport, used in tests. 23 type MockTrans struct { 24 SendBuffer []*schedulepb.Message 25 RecvBuffer []*schedulepb.Message 26 27 KeepRecvBuffer bool 28 } 29 30 // NewMockTrans returns a new mock transport. 31 func NewMockTrans() *MockTrans { 32 return &MockTrans{ 33 SendBuffer: make([]*schedulepb.Message, 0), 34 RecvBuffer: make([]*schedulepb.Message, 0), 35 } 36 } 37 38 // Close mock transport. 39 func (m *MockTrans) Close() error { 40 return nil 41 } 42 43 // Send sends messages. 44 func (m *MockTrans) Send(ctx context.Context, msgs []*schedulepb.Message) error { 45 m.SendBuffer = append(m.SendBuffer, msgs...) 46 return nil 47 } 48 49 // Recv receives messages. 50 func (m *MockTrans) Recv(ctx context.Context) ([]*schedulepb.Message, error) { 51 if m.KeepRecvBuffer { 52 return m.RecvBuffer, nil 53 } 54 messages := m.RecvBuffer[:len(m.RecvBuffer)] 55 m.RecvBuffer = make([]*schedulepb.Message, 0) 56 return messages, nil 57 }