TestAddrReqHandle tests Function AddrReqHandle handling an address req testcase: no-mask neighbor
(t *testing.T)
| 234 | // TestAddrReqHandle tests Function AddrReqHandle handling an address req |
| 235 | // testcase: no-mask neighbor |
| 236 | func 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 |
nothing calls this directly
no test coverage detected