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 }