github.com/lazyledger/lazyledger-core@v0.35.0-dev.0.20210613111200-4c651f053571/p2p/mock/peer.go (about) 1 package mock 2 3 import ( 4 "net" 5 6 "github.com/lazyledger/lazyledger-core/libs/service" 7 "github.com/lazyledger/lazyledger-core/p2p" 8 "github.com/lazyledger/lazyledger-core/p2p/conn" 9 ) 10 11 type Peer struct { 12 *service.BaseService 13 ip net.IP 14 id p2p.ID 15 addr *p2p.NetAddress 16 kv map[string]interface{} 17 Outbound, Persistent bool 18 } 19 20 // NewPeer creates and starts a new mock peer. If the ip 21 // is nil, random routable address is used. 22 func NewPeer(ip net.IP) *Peer { 23 var netAddr *p2p.NetAddress 24 if ip == nil { 25 _, netAddr = p2p.CreateRoutableAddr() 26 } else { 27 netAddr = p2p.NewNetAddressIPPort(ip, 26656) 28 } 29 nodeKey := p2p.GenNodeKey() 30 netAddr.ID = nodeKey.ID 31 mp := &Peer{ 32 ip: ip, 33 id: nodeKey.ID, 34 addr: netAddr, 35 kv: make(map[string]interface{}), 36 } 37 mp.BaseService = service.NewBaseService(nil, "MockPeer", mp) 38 if err := mp.Start(); err != nil { 39 panic(err) 40 } 41 return mp 42 } 43 44 func (mp *Peer) FlushStop() { mp.Stop() } //nolint:errcheck //ignore error 45 func (mp *Peer) TrySend(chID byte, msgBytes []byte) bool { return true } 46 func (mp *Peer) Send(chID byte, msgBytes []byte) bool { return true } 47 func (mp *Peer) NodeInfo() p2p.NodeInfo { 48 return p2p.DefaultNodeInfo{ 49 DefaultNodeID: mp.addr.ID, 50 ListenAddr: mp.addr.DialString(), 51 } 52 } 53 func (mp *Peer) Status() conn.ConnectionStatus { return conn.ConnectionStatus{} } 54 func (mp *Peer) ID() p2p.ID { return mp.id } 55 func (mp *Peer) IsOutbound() bool { return mp.Outbound } 56 func (mp *Peer) IsPersistent() bool { return mp.Persistent } 57 func (mp *Peer) Get(key string) interface{} { 58 if value, ok := mp.kv[key]; ok { 59 return value 60 } 61 return nil 62 } 63 func (mp *Peer) Set(key string, value interface{}) { 64 mp.kv[key] = value 65 } 66 func (mp *Peer) RemoteIP() net.IP { return mp.ip } 67 func (mp *Peer) SocketAddr() *p2p.NetAddress { return mp.addr } 68 func (mp *Peer) RemoteAddr() net.Addr { return &net.TCPAddr{IP: mp.ip, Port: 8800} } 69 func (mp *Peer) CloseConn() error { return nil }