public async Task VerifyRemoteGreetingAsync_not_matching_expected_NodeType() { using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var negotiator = new NodeGreetingMessageStreamSocketNegotiator(socket); var message = new NodeGreetingMessage(NodeType.Responder); mem.Write(message.Serialize(), 0, message.Serialize().Length); mem.Position = 0; try { await negotiator.VerifyRemoteGreetingAsync(new HashSet <NodeType> { NodeType.Requester }, CancellationToken.None); Assert.Fail(); } catch (RedFoxProtocolException) { Assert.Pass(); } } }
public void MessageFrameStreamWriter_writes_MessageFrameStreamReader_reads() { var random = TestHelpers.CreateSemiRandomGenerator(); var messageFrames = new Queue <MessageFrame>(); using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var writer = new MessageFrameStreamWriter(socket); var reader = new MessageFrameStreamReader(socket); for (var i = 0; i < 1000; i++) { var messageFrame = new MessageFrame { MessageTypeId = (ushort)random.Next(0, UInt16.MaxValue), RawMessage = TestHelpers.GetRandomBytes(random, random.Next(100 * i)) }; messageFrames.Enqueue(messageFrame); writer.WriteMessageFrame(messageFrame); } mem.Position = 0; while (messageFrames.Count > 0) { var messageFrameWritten = messageFrames.Dequeue(); var messageFrameRead = reader.ReadMessageFrame(); Assert.AreEqual(messageFrameWritten, messageFrameRead); } } }
public void MessageFrameStreamWriter_writes_MessageFrameStreamReader_reads() { var random = TestHelpers.CreateSemiRandomGenerator(); var messageFrames = new Queue<MessageFrame>(); using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var writer = new MessageFrameStreamWriter(socket); var reader = new MessageFrameStreamReader(socket); for (var i = 0; i < 1000; i++) { var messageFrame = new MessageFrame { MessageTypeId = (ushort) random.Next(0, UInt16.MaxValue), RawMessage = TestHelpers.GetRandomBytes(random, random.Next(100 * i)) }; messageFrames.Enqueue(messageFrame); writer.WriteMessageFrame(messageFrame); } mem.Position = 0; while (messageFrames.Count > 0) { var messageFrameWritten = messageFrames.Dequeue(); var messageFrameRead = reader.ReadMessageFrame(); Assert.AreEqual(messageFrameWritten, messageFrameRead); } } }
public void WriteGreetingAsync_writes_full_NodeGreetingMessage() { using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var negotiator = new NodeGreetingMessageStreamSocketNegotiator(socket); var message = new NodeGreetingMessage(NodeType.Responder); negotiator.WriteGreetingAsync(message, CancellationToken.None).Wait(); Assert.AreEqual(message.Serialize(), mem.ToArray()); } }
public void VerifyRemoteGreeting_not_matching_expected_NodeType() { using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var negotiator = new NodeGreetingMessageStreamSocketNegotiator(socket); var message = new NodeGreetingMessage(NodeType.Responder); mem.Write(message.Serialize(), 0, message.Serialize().Length); mem.Position = 0; Assert.Throws<RedFoxProtocolException>(() => negotiator.VerifyRemoteGreeting(new HashSet<NodeType> { NodeType.Requester })); } }
public void VerifyRemoteGreeting_matching_expected_NodeType() { using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var negotiator = new NodeGreetingMessageStreamSocketNegotiator(socket); var message = new NodeGreetingMessage(NodeType.Responder); mem.Write(message.Serialize(), 0, message.Serialize().Length); mem.Position = 0; negotiator.VerifyRemoteGreeting(new HashSet<NodeType> { NodeType.Responder }); } }
public void MessageFrameStreamReader_reads_MessageTypeId_then_Length_then_RawMessage() { var rawMessage = new byte[] { 1, 2, 3, 4, 5 }; var serializedMessageFrame = new byte[] { 49, 212, 5, 0, 0, 0, 1, 2, 3, 4, 5 }; using (var mem = new MemoryStream(serializedMessageFrame)) using (var socket = new TestStreamSocket(mem)) { var reader = new MessageFrameStreamReader(socket); var messageFrame = reader.ReadMessageFrameAsync(CancellationToken.None).Result; Assert.AreEqual(54321, messageFrame.MessageTypeId); Assert.AreEqual(rawMessage, messageFrame.RawMessage); } }
public void MessageFrameStreamReader_reads_MessageTypeId_then_Length_then_RawMessage() { var rawMessage = new byte[] {1, 2, 3, 4, 5}; var serializedMessageFrame = new byte[] {49, 212, 5, 0, 0, 0, 1, 2, 3, 4, 5}; using (var mem = new MemoryStream(serializedMessageFrame)) using (var socket = new TestStreamSocket(mem)) { var reader = new MessageFrameStreamReader(socket); var messageFrame = reader.ReadMessageFrameAsync(CancellationToken.None).Result; Assert.AreEqual(54321, messageFrame.MessageTypeId); Assert.AreEqual(rawMessage, messageFrame.RawMessage); } }
public void VerifyRemoteGreetingAsync_matching_expected_NodeType() { using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var negotiator = new NodeGreetingMessageStreamSocketNegotiator(socket); var message = new NodeGreetingMessage(NodeType.Responder); mem.Write(message.Serialize(), 0, message.Serialize().Length); mem.Position = 0; negotiator.VerifyRemoteGreetingAsync(new HashSet <NodeType> { NodeType.Responder }, CancellationToken.None).Wait(); } }
public void VerifyRemoteGreeting_not_matching_expected_NodeType() { using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var negotiator = new NodeGreetingMessageStreamSocketNegotiator(socket); var message = new NodeGreetingMessage(NodeType.Responder); mem.Write(message.Serialize(), 0, message.Serialize().Length); mem.Position = 0; Assert.Throws <RedFoxProtocolException>(() => negotiator.VerifyRemoteGreeting(new HashSet <NodeType> { NodeType.Requester })); } }
public void MessageFrameStreamWriter_writes_MessageTypeId_then_Length_then_RawMessage() { var messageFrame = new MessageFrame { MessageTypeId = 54321, RawMessage = new byte[] { 1, 2, 3, 4, 5} }; using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var writer = new MessageFrameStreamWriter(socket); writer.WriteMessageFrameAsync(messageFrame, CancellationToken.None).Wait(); var writtenToStream = mem.ToArray(); Assert.AreEqual(messageFrame.MessageTypeId, BitConverter.ToUInt16(writtenToStream, 0)); Assert.AreEqual(messageFrame.RawMessage.Length, BitConverter.ToUInt16(writtenToStream, 2)); Assert.AreEqual(messageFrame.RawMessage, writtenToStream.Skip(6).ToArray()); } }
public void MessageFrameStreamWriter_writes_MessageTypeId_then_Length_then_RawMessage() { var messageFrame = new MessageFrame { MessageTypeId = 54321, RawMessage = new byte[] { 1, 2, 3, 4, 5 } }; using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var writer = new MessageFrameStreamWriter(socket); writer.WriteMessageFrameAsync(messageFrame, CancellationToken.None).Wait(); var writtenToStream = mem.ToArray(); Assert.AreEqual(messageFrame.MessageTypeId, BitConverter.ToUInt16(writtenToStream, 0)); Assert.AreEqual(messageFrame.RawMessage.Length, BitConverter.ToUInt16(writtenToStream, 2)); Assert.AreEqual(messageFrame.RawMessage, writtenToStream.Skip(6).ToArray()); } }
public async Task VerifyRemoteGreetingAsync_not_matching_expected_NodeType() { using (var mem = new MemoryStream()) using (var socket = new TestStreamSocket(mem)) { var negotiator = new NodeGreetingMessageStreamSocketNegotiator(socket); var message = new NodeGreetingMessage(NodeType.Responder); mem.Write(message.Serialize(), 0, message.Serialize().Length); mem.Position = 0; try { await negotiator.VerifyRemoteGreetingAsync(new HashSet<NodeType> { NodeType.Requester }, CancellationToken.None); Assert.Fail(); } catch (RedFoxProtocolException) { Assert.Pass(); } } }