MCPcopy Create free account
hub / github.com/DNAProject/DNA / TestAddrReqHandle

Function TestAddrReqHandle

p2pserver/message/utils/msg_handler_test.go:236–287  ·  view source on GitHub ↗

TestAddrReqHandle tests Function AddrReqHandle handling an address req testcase: no-mask neighbor

(t *testing.T)

Source from the content-addressed store, hash-verified

234// TestAddrReqHandle tests Function AddrReqHandle handling an address req
235// testcase: no-mask neighbor
236func TestAddrReqHandle(t *testing.T) {
237 network = NewMockP2p()
238
239 // Simulate a remote peer to be added to the neighbor peers
240 var testID uint64
241 _, testPub, _ := keypair.GenerateKeyPair(keypair.PK_ECDSA, keypair.P256)
242 key := keypair.SerializePublicKey(testPub)
243 err := binary.Read(bytes.NewBuffer(key[:8]), binary.LittleEndian, &(testID))
244 assert.Nil(t, err)
245
246 remotePeer := peer.NewPeer()
247 assert.NotNil(t, remotePeer)
248
249 remotePeer.UpdateInfo(time.Now(), 1, 12345678, 20336,
250 testID, 0, 12345, "1.5.2")
251 remotePeer.Link.SetAddr("127.0.0.1:1234")
252 remotePeer.Link.SetPort(1234)
253
254 network.AddNbrNode(remotePeer)
255 remotePeer.SetState(msgCommon.ESTABLISH)
256
257 // Construct an address request packet
258 buf := msgpack.NewAddrReq()
259
260 msg := &types.MsgPayload{
261 Id: testID,
262 Addr: "test",
263 Payload: buf,
264 }
265
266 // Invoke AddrReqHandle to handle the msg
267 AddrReqHandle(msg, network, nil)
268
269 // all neighbor peers should be in rsp msg
270 for _, msg := range network.SentMsgs {
271 addrMsg, ok := msg.(*types.Addr)
272 if !ok {
273 t.Fatalf("invalid addr msg %s", msg.CmdType())
274 }
275 if len(addrMsg.NodeAddrs) != 1 {
276 t.Fatalf("invalid addr count: %v", addrMsg.NodeAddrs)
277 }
278 var ip net.IP
279 ip = addrMsg.NodeAddrs[0].IpAddr[:]
280 addr := fmt.Sprintf("%v:%d", ip, addrMsg.NodeAddrs[0].Port)
281 if addr != remotePeer.Link.GetAddr() {
282 t.Fatalf("invalid addr: %s vs %s", addr, remotePeer.Link.GetAddr())
283 }
284 }
285
286 network.DelNbrNode(testID)
287}
288
289//
290// create two neighbors, one masked, one un-masked

Callers

nothing calls this directly

Calls 12

UpdateInfoMethod · 0.95
SetStateMethod · 0.95
NewPeerFunction · 0.92
NewMockP2pFunction · 0.85
AddrReqHandleFunction · 0.85
SetAddrMethod · 0.80
FatalfMethod · 0.80
AddNbrNodeMethod · 0.65
CmdTypeMethod · 0.65
DelNbrNodeMethod · 0.65
SetPortMethod · 0.45
GetAddrMethod · 0.45

Tested by

no test coverage detected