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();
                    }
                }
        }
コード例 #2
0
        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);
                    }
                }
        }
コード例 #3
0
        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 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 });
            }
        }
コード例 #8
0
        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);
                }
        }
コード例 #9
0
        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
                    }));
                }
        }
コード例 #12
0
        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());
            }
        }
コード例 #13
0
        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();
                }
            }
        }