public void StartHandShakeTest() { var pl = new MockSerializableMessagePayload(PayloadType.Version, new byte[3] { 1, 2, 3 }); Message msg = new Message(pl, NetworkType.MainNet); byte[] msgSer = Helper.HexToBytes("f9beb4d976657273696f6e00000000000300000019c6197e010203"); var repMan = new MockReplyManager() { verMessage = msg }; MessageManager man = new MessageManager(30, repMan, new NodeStatus(), NetworkType.MainNet); using SocketAsyncEventArgs sarg = new SocketAsyncEventArgs(); sarg.SetBuffer(new byte[30], 0, 30); byte[] expBuffer = new byte[30]; Buffer.BlockCopy(msgSer, 0, expBuffer, 0, msgSer.Length); man.StartHandShake(sarg); Assert.Equal(expBuffer, sarg.Buffer); Assert.Equal(msgSer.Length, sarg.Count); Assert.Equal(0, sarg.Offset); Assert.Null(man.DataToSend); // StartHandShake sets the SAEA buffer and sets the field to null Assert.False(man.HasDataToSend); Assert.True(man.IsReceiveCompleted); }
public void ReadBytes_SmallBufferTest() { var mockMsg = new Message(new MockSerializableMessagePayload((PayloadType)10000, new byte[] { 1, 2, 3 }), NetworkType.MainNet); var repMan = new MockReplyManager() { toReceive = new PayloadType[] { PayloadType.Version }, toReply = new Message[][] { new Message[] { mockMsg } } }; MessageManager man = new MessageManager(30, repMan, new NodeStatus()); man.ReadBytes(null, 0, 0); Assert.True(man.IsReceiveCompleted); Assert.False(man.HasDataToSend); man.ReadBytes(new byte[100], 0, 0); Assert.True(man.IsReceiveCompleted); Assert.False(man.HasDataToSend); // f9beb4d976657273696f6e0000000000650000005f1a69d2 man.ReadBytes(new byte[] { 0xf9, 0xbe }, 2, 0); Assert.False(man.IsReceiveCompleted); Assert.False(man.HasDataToSend); man.ReadBytes(new byte[] { 0xb4, 0xd9, 0x76 }, 3, 0); Assert.False(man.IsReceiveCompleted); Assert.False(man.HasDataToSend); Helper.ComparePrivateField(man, "tempHolder", new byte[] { 0xf9, 0xbe, 0xb4, 0xd9, 0x76 }); man.ReadBytes(new byte[18] { 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x5f, 0x1a, 0x69 }, 18, 0); Assert.False(man.IsReceiveCompleted); Assert.False(man.HasDataToSend); Helper.ComparePrivateField(man, "tempHolder", new byte[] { 0xf9, 0xbe, 0xb4, 0xd9, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x5f, 0x1a, 0x69 }); // Header will be read completely but this header needs a payload which is not yet present man.ReadBytes(new byte[] { 0xd2 }, 1, 0); Assert.False(man.IsReceiveCompleted); Assert.False(man.HasDataToSend); Helper.ComparePrivateField(man, "tempHolder", new byte[] { 0xf9, 0xbe, 0xb4, 0xd9, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x5f, 0x1a, 0x69, 0xd2 }); man.ReadBytes(new byte[5] { 0x72, 0x11, 0x01, 0x00, 0x01 }, 5, 0); Assert.False(man.IsReceiveCompleted); Assert.False(man.HasDataToSend); Helper.ComparePrivateField(man, "tempHolder", Helper.HexToBytes("f9beb4d976657273696f6e0000000000650000005f1a69d27211010001")); man.ReadBytes(Helper.HexToBytes("00000000000000bc8f5e5400000000010000000000000000000000000000000000ffffc61b6409208d010000000000000000000000000000000000ffffcb0071c0208d128035cbc97953f80f2f5361746f7368693a302e392e332fcf05050001"), 96, 0); Assert.True(man.IsReceiveCompleted); Assert.True(man.HasDataToSend); }
public void GetPingMsgTest() { var cs = new MockClientSettings() { _netType = NetworkType.TestNet, _buffLen = 10 }; var expectedPing = new Message(new PingPayload(1), NetworkType.TestNet); var repMan = new MockReplyManager() { pingMsg = expectedPing }; MessageManager man = new MessageManager(cs, repMan, new NodeStatus()); var actualPing = man.GetPingMsg(); Assert.Same(expectedPing, actualPing); }