github.com/cloudwego/kitex@v0.9.0/pkg/remote/trans/netpollmux/mocks_test.go (about)

     1  /*
     2   * Copyright 2021 CloudWeGo Authors
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  package netpollmux
    18  
    19  import (
    20  	"context"
    21  	"time"
    22  
    23  	"github.com/cloudwego/netpoll"
    24  
    25  	"github.com/cloudwego/kitex/internal/mocks"
    26  	"github.com/cloudwego/kitex/pkg/remote"
    27  	"github.com/cloudwego/kitex/pkg/rpcinfo"
    28  	"github.com/cloudwego/kitex/pkg/serviceinfo"
    29  )
    30  
    31  func newMockRPCInfo() rpcinfo.RPCInfo {
    32  	method := "method"
    33  	c := rpcinfo.NewEndpointInfo("", method, nil, nil)
    34  	s := rpcinfo.NewEndpointInfo("", method, nil, nil)
    35  	ink := rpcinfo.NewInvocation("", method)
    36  	cfg := rpcinfo.NewRPCConfig()
    37  	ri := rpcinfo.NewRPCInfo(c, s, ink, cfg, rpcinfo.NewRPCStats())
    38  	return ri
    39  }
    40  
    41  var _ remote.Codec = &MockCodec{}
    42  
    43  type MockCodec struct {
    44  	EncodeFunc func(ctx context.Context, msg remote.Message, out remote.ByteBuffer) error
    45  	DecodeFunc func(ctx context.Context, msg remote.Message, in remote.ByteBuffer) error
    46  	NameFunc   func() string
    47  }
    48  
    49  func (m *MockCodec) Encode(ctx context.Context, msg remote.Message, out remote.ByteBuffer) error {
    50  	if m.EncodeFunc != nil {
    51  		return m.EncodeFunc(ctx, msg, out)
    52  	}
    53  	return nil
    54  }
    55  
    56  func (m *MockCodec) Decode(ctx context.Context, msg remote.Message, in remote.ByteBuffer) error {
    57  	if m.DecodeFunc != nil {
    58  		return m.DecodeFunc(ctx, msg, in)
    59  	}
    60  	return nil
    61  }
    62  
    63  func (m *MockCodec) Name() string {
    64  	if m.NameFunc != nil {
    65  		return m.NameFunc()
    66  	}
    67  	return ""
    68  }
    69  
    70  var _ remote.Message = &MockMessage{}
    71  
    72  type MockMessage struct {
    73  	RPCInfoFunc         func() rpcinfo.RPCInfo
    74  	ServiceInfoFunc     func() *serviceinfo.ServiceInfo
    75  	SetServiceInfoFunc  func(svcName, methodName string) (*serviceinfo.ServiceInfo, error)
    76  	DataFunc            func() interface{}
    77  	NewDataFunc         func(method string) (ok bool)
    78  	MessageTypeFunc     func() remote.MessageType
    79  	SetMessageTypeFunc  func(remote.MessageType)
    80  	RPCRoleFunc         func() remote.RPCRole
    81  	PayloadLenFunc      func() int
    82  	SetPayloadLenFunc   func(size int)
    83  	TransInfoFunc       func() remote.TransInfo
    84  	TagsFunc            func() map[string]interface{}
    85  	ProtocolInfoFunc    func() remote.ProtocolInfo
    86  	SetProtocolInfoFunc func(remote.ProtocolInfo)
    87  	PayloadCodecFunc    func() remote.PayloadCodec
    88  	SetPayloadCodecFunc func(pc remote.PayloadCodec)
    89  	RecycleFunc         func()
    90  }
    91  
    92  func (m *MockMessage) RPCInfo() rpcinfo.RPCInfo {
    93  	if m.RPCInfoFunc != nil {
    94  		return m.RPCInfoFunc()
    95  	}
    96  	return nil
    97  }
    98  
    99  func (m *MockMessage) ServiceInfo() (si *serviceinfo.ServiceInfo) {
   100  	if m.ServiceInfoFunc != nil {
   101  		return m.ServiceInfoFunc()
   102  	}
   103  	return
   104  }
   105  
   106  func (m *MockMessage) SpecifyServiceInfo(svcName, methodName string) (si *serviceinfo.ServiceInfo, err error) {
   107  	if m.SetServiceInfoFunc != nil {
   108  		return m.SetServiceInfoFunc(svcName, methodName)
   109  	}
   110  	return nil, nil
   111  }
   112  
   113  func (m *MockMessage) Data() interface{} {
   114  	if m.DataFunc != nil {
   115  		return m.DataFunc()
   116  	}
   117  	return nil
   118  }
   119  
   120  func (m *MockMessage) NewData(method string) (ok bool) {
   121  	if m.NewDataFunc != nil {
   122  		return m.NewDataFunc(method)
   123  	}
   124  	return false
   125  }
   126  
   127  func (m *MockMessage) MessageType() (mt remote.MessageType) {
   128  	if m.MessageTypeFunc != nil {
   129  		return m.MessageTypeFunc()
   130  	}
   131  	return
   132  }
   133  
   134  func (m *MockMessage) SetMessageType(mt remote.MessageType) {
   135  	if m.SetMessageTypeFunc != nil {
   136  		m.SetMessageTypeFunc(mt)
   137  	}
   138  }
   139  
   140  func (m *MockMessage) RPCRole() (r remote.RPCRole) {
   141  	if m.RPCRoleFunc != nil {
   142  		return m.RPCRoleFunc()
   143  	}
   144  	return
   145  }
   146  
   147  func (m *MockMessage) PayloadLen() int {
   148  	if m.PayloadLenFunc != nil {
   149  		return m.PayloadLenFunc()
   150  	}
   151  	return 0
   152  }
   153  
   154  func (m *MockMessage) SetPayloadLen(size int) {
   155  	if m.SetPayloadLenFunc != nil {
   156  		m.SetPayloadLenFunc(size)
   157  	}
   158  }
   159  
   160  func (m *MockMessage) TransInfo() remote.TransInfo {
   161  	if m.TransInfoFunc != nil {
   162  		return m.TransInfoFunc()
   163  	}
   164  	return nil
   165  }
   166  
   167  func (m *MockMessage) Tags() map[string]interface{} {
   168  	if m.TagsFunc != nil {
   169  		return m.TagsFunc()
   170  	}
   171  	return nil
   172  }
   173  
   174  func (m *MockMessage) ProtocolInfo() (pi remote.ProtocolInfo) {
   175  	if m.ProtocolInfoFunc != nil {
   176  		return m.ProtocolInfoFunc()
   177  	}
   178  	return
   179  }
   180  
   181  func (m *MockMessage) SetProtocolInfo(pi remote.ProtocolInfo) {
   182  	if m.SetProtocolInfoFunc != nil {
   183  		m.SetProtocolInfoFunc(pi)
   184  	}
   185  }
   186  
   187  func (m *MockMessage) PayloadCodec() remote.PayloadCodec {
   188  	if m.PayloadCodecFunc != nil {
   189  		return m.PayloadCodecFunc()
   190  	}
   191  	return nil
   192  }
   193  
   194  func (m *MockMessage) SetPayloadCodec(pc remote.PayloadCodec) {
   195  	if m.SetPayloadCodecFunc != nil {
   196  		m.SetPayloadCodecFunc(pc)
   197  	}
   198  }
   199  
   200  func (m *MockMessage) Recycle() {
   201  	if m.RecycleFunc != nil {
   202  		m.RecycleFunc()
   203  	}
   204  }
   205  
   206  var _ netpoll.Connection = &MockNetpollConn{}
   207  
   208  // MockNetpollConn implements netpoll.Connection.
   209  type MockNetpollConn struct {
   210  	mocks.Conn
   211  	AddCloseCallbackFunc func(c netpoll.CloseCallback) (e error)
   212  	IsActiveFunc         func() (r bool)
   213  	ReaderFunc           func() (r netpoll.Reader)
   214  	WriterFunc           func() (r netpoll.Writer)
   215  	SetIdleTimeoutFunc   func(timeout time.Duration) (e error)
   216  	SetOnRequestFunc     func(on netpoll.OnRequest) (e error)
   217  	SetReadTimeoutFunc   func(timeout time.Duration) (e error)
   218  	SetWriteTimeoutFunc  func(timeout time.Duration) (e error)
   219  }
   220  
   221  // AddCloseCallback implements the netpoll.Connection interface.
   222  func (m *MockNetpollConn) AddCloseCallback(c netpoll.CloseCallback) (e error) {
   223  	if m.AddCloseCallbackFunc != nil {
   224  		return m.AddCloseCallbackFunc(c)
   225  	}
   226  	return
   227  }
   228  
   229  // IsActive implements the netpoll.Connection interface.
   230  func (m *MockNetpollConn) IsActive() (r bool) {
   231  	if m.IsActiveFunc != nil {
   232  		return m.IsActiveFunc()
   233  	}
   234  	return
   235  }
   236  
   237  // Reader implements the netpoll.Connection interface.
   238  func (m *MockNetpollConn) Reader() (r netpoll.Reader) {
   239  	if m.ReaderFunc != nil {
   240  		return m.ReaderFunc()
   241  	}
   242  	return
   243  }
   244  
   245  // Writer implements the netpoll.Connection interface.
   246  func (m *MockNetpollConn) Writer() (r netpoll.Writer) {
   247  	if m.WriterFunc != nil {
   248  		return m.WriterFunc()
   249  	}
   250  	return
   251  }
   252  
   253  // SetIdleTimeout implements the netpoll.Connection interface.
   254  func (m *MockNetpollConn) SetIdleTimeout(timeout time.Duration) (e error) {
   255  	if m.SetIdleTimeoutFunc != nil {
   256  		return m.SetIdleTimeoutFunc(timeout)
   257  	}
   258  	return
   259  }
   260  
   261  // SetOnRequest implements the netpoll.Connection interface.
   262  func (m *MockNetpollConn) SetOnRequest(on netpoll.OnRequest) (e error) {
   263  	if m.SetOnRequestFunc != nil {
   264  		return m.SetOnRequestFunc(on)
   265  	}
   266  	return
   267  }
   268  
   269  // SetReadTimeout implements the netpoll.Connection interface.
   270  func (m *MockNetpollConn) SetReadTimeout(timeout time.Duration) (e error) {
   271  	if m.SetReadTimeoutFunc != nil {
   272  		return m.SetReadTimeoutFunc(timeout)
   273  	}
   274  	return
   275  }
   276  
   277  // SetWriteTimeout implements the netpoll.Connection interface.
   278  func (m *MockNetpollConn) SetWriteTimeout(timeout time.Duration) (e error) {
   279  	if m.SetWriteTimeoutFunc != nil {
   280  		return m.SetWriteTimeoutFunc(timeout)
   281  	}
   282  	return
   283  }
   284  
   285  // MockNetpollWriter implements netpoll.Writer
   286  type MockNetpollWriter struct {
   287  	FlushFunc       func() (err error)
   288  	WriteDirectFunc func(p []byte, remainCap int) error
   289  }
   290  
   291  var _ netpoll.Writer = &MockNetpollWriter{}
   292  
   293  // Flush implements the netpoll.Writer interface.
   294  func (m *MockNetpollWriter) Flush() (err error) {
   295  	if m.FlushFunc != nil {
   296  		return m.FlushFunc()
   297  	}
   298  	return
   299  }
   300  
   301  // Malloc implements the netpoll.Writer interface.
   302  func (m *MockNetpollWriter) Malloc(n int) (buf []byte, err error) {
   303  	return
   304  }
   305  
   306  // MallocLen implements the netpoll.Writer interface.
   307  func (m *MockNetpollWriter) MallocLen() (length int) {
   308  	return
   309  }
   310  
   311  // MallocAck implements the netpoll.Writer interface.
   312  func (m *MockNetpollWriter) MallocAck(n int) (err error) {
   313  	return
   314  }
   315  
   316  // Append implements the netpoll.Writer interface.
   317  func (m *MockNetpollWriter) Append(w netpoll.Writer) (err error) {
   318  	return
   319  }
   320  
   321  // Write implements the netpoll.Writer interface.
   322  func (m *MockNetpollWriter) Write(b []byte) (n int, err error) {
   323  	return
   324  }
   325  
   326  // WriteString implements the netpoll.Writer interface.
   327  func (m *MockNetpollWriter) WriteString(s string) (n int, err error) {
   328  	return
   329  }
   330  
   331  // WriteBinary implements the netpoll.Writer interface.
   332  func (m *MockNetpollWriter) WriteBinary(b []byte) (n int, err error) {
   333  	return
   334  }
   335  
   336  // WriteDirect implements the netpoll.Writer interface.
   337  func (m *MockNetpollWriter) WriteDirect(p []byte, remainCap int) (err error) {
   338  	if m.WriteDirectFunc != nil {
   339  		return m.WriteDirectFunc(p, remainCap)
   340  	}
   341  	return
   342  }
   343  
   344  // WriteByte implements the netpoll.Writer interface.
   345  func (m *MockNetpollWriter) WriteByte(b byte) (err error) {
   346  	return
   347  }
   348  
   349  // MockNetpollReader implements netpoll.Reader
   350  type MockNetpollReader struct {
   351  	ReleaseFunc func() (err error)
   352  }
   353  
   354  // Next implements the netpoll.Reader interface.
   355  func (m *MockNetpollReader) Next(n int) (p []byte, err error) {
   356  	return
   357  }
   358  
   359  // Peek implements the netpoll.Reader interface.
   360  func (m *MockNetpollReader) Peek(n int) (buf []byte, err error) {
   361  	return
   362  }
   363  
   364  // Until implements the netpoll.Reader interface.
   365  func (m *MockNetpollReader) Until(b byte) (buf []byte, err error) {
   366  	return
   367  }
   368  
   369  // Skip implements the netpoll.Reader interface.
   370  func (m *MockNetpollReader) Skip(n int) (err error) {
   371  	return
   372  }
   373  
   374  // Release implements the netpoll.Reader interface.
   375  func (m *MockNetpollReader) Release() (err error) {
   376  	if m.ReleaseFunc != nil {
   377  		return m.ReleaseFunc()
   378  	}
   379  	return
   380  }
   381  
   382  // Slice implements the netpoll.Reader interface.
   383  func (m *MockNetpollReader) Slice(n int) (r netpoll.Reader, err error) {
   384  	return
   385  }
   386  
   387  // Len implements the netpoll.Reader interface.
   388  func (m *MockNetpollReader) Len() (length int) {
   389  	return
   390  }
   391  
   392  // Read implements the netpoll.Reader interface.
   393  func (m *MockNetpollReader) Read(b []byte) (n int, err error) {
   394  	return
   395  }
   396  
   397  // ReadString implements the netpoll.Reader interface.
   398  func (m *MockNetpollReader) ReadString(n int) (s string, err error) {
   399  	return
   400  }
   401  
   402  // ReadBinary implements the netpoll.Reader interface.
   403  func (m *MockNetpollReader) ReadBinary(n int) (p []byte, err error) {
   404  	return
   405  }
   406  
   407  // ReadByte implements the netpoll.Reader interface.
   408  func (m *MockNetpollReader) ReadByte() (b byte, err error) {
   409  	return
   410  }