create two neighbors, one masked, one un-masked send addr-req from un-mask peer, get itself in addr-rsp
(t *testing.T)
| 291 | // send addr-req from un-mask peer, get itself in addr-rsp |
| 292 | // |
| 293 | func TestAddrReqHandle_maskok(t *testing.T) { |
| 294 | network = NewMockP2p() |
| 295 | |
| 296 | // Simulate a remote peer to be added to the neighbor peers |
| 297 | testID := uint64(123456) |
| 298 | remotePeer := peer.NewPeer() |
| 299 | remotePeer.UpdateInfo(time.Now(), 1, 12345678, 20336, |
| 300 | testID, 0, 12345, "1.5.2") |
| 301 | remotePeer.Link.SetAddr("1.2.3.4:5001") |
| 302 | remotePeer.Link.SetPort(5001) |
| 303 | network.AddNbrNode(remotePeer) |
| 304 | remotePeer.SetState(msgCommon.ESTABLISH) |
| 305 | |
| 306 | testID2 := uint64(1234567) |
| 307 | remotePeer2 := peer.NewPeer() |
| 308 | remotePeer2.UpdateInfo(time.Now(), 1, 12345678, 20336, |
| 309 | testID2, 0, 12345, "1.5.2") |
| 310 | remotePeer2.Link.SetAddr("1.2.3.5:5002") |
| 311 | remotePeer2.Link.SetPort(5002) |
| 312 | network.AddNbrNode(remotePeer2) |
| 313 | remotePeer2.SetState(msgCommon.ESTABLISH) |
| 314 | |
| 315 | // Construct an address request packet |
| 316 | buf := msgpack.NewAddrReq() |
| 317 | |
| 318 | msg := &types.MsgPayload{ |
| 319 | Id: testID2, |
| 320 | Addr: "test", |
| 321 | Payload: buf, |
| 322 | } |
| 323 | |
| 324 | config.DefConfig.P2PNode.ReservedPeersOnly = true |
| 325 | config.DefConfig.P2PNode.ReservedCfg.MaskPeers = []string{"1.2.3.4"} |
| 326 | |
| 327 | // Invoke AddrReqHandle to handle the msg |
| 328 | AddrReqHandle(msg, network, nil) |
| 329 | |
| 330 | // verify 1.2.3.4 is masked |
| 331 | for _, msg := range network.SentMsgs { |
| 332 | addrMsg, ok := msg.(*types.Addr) |
| 333 | if !ok { |
| 334 | t.Fatalf("invalid addr msg %s", msg.CmdType()) |
| 335 | } |
| 336 | if len(addrMsg.NodeAddrs) != 1 { |
| 337 | t.Fatalf("invalid addr count: %v", addrMsg.NodeAddrs) |
| 338 | } |
| 339 | var ip net.IP |
| 340 | ip = addrMsg.NodeAddrs[0].IpAddr[:] |
| 341 | addr := fmt.Sprintf("%v:%d", ip, addrMsg.NodeAddrs[0].Port) |
| 342 | if addr != remotePeer2.Link.GetAddr() { |
| 343 | t.Fatalf("invalid addr: %s vs %s", addr, remotePeer2.Link.GetAddr()) |
| 344 | } |
| 345 | } |
| 346 | |
| 347 | network.DelNbrNode(testID) |
| 348 | } |
| 349 | |
| 350 | // |
nothing calls this directly
no test coverage detected