Exemplo n.º 1
0
        public void WhenControlConnectionHandshakeSuccessConfigurationReturned()
        {
            // arrange
            var messageProtocol            = new MessageProtocol();
            var configurationReader        = new Mock <ConfigurationReader>();
            var controlConnectionHandshake = new ControlConnectionHandshake(messageProtocol, configurationReader.Object);

            var binaryReader = new Mock <BinaryReader>(new MemoryStream());
            var binaryWriter = new Mock <BinaryWriter>(new MemoryStream());

            binaryReader.Setup(x => x.ReadByte())
            .Returns(MessageTypes.Configuration);

            const string configurationJson = "{\"RunId\":1,\"HeartbeatInterval\":2,\"Exclusions\":[\"Exclusion\"],\"Inclusions\":[\"Inclusion\"],\"BufferMemoryBudget\":3,\"QueueRetryCount\":4,\"NumDataSenders\":5}";

            binaryReader.Setup(x => x.ReadBytes(sizeof(short)))
            .Returns(new byte[] { 0x0, Convert.ToByte(configurationJson.Length) });

            binaryReader.Setup(x => x.ReadBytes(configurationJson.Length))
            .Returns(System.Text.Encoding.UTF8.GetBytes(configurationJson));

            var connection = new Connection(binaryReader.Object, binaryWriter.Object);

            // act
            var configuration = controlConnectionHandshake.PerformHandshake(connection);

            // assert
            binaryWriter.Verify(x => x.Write(MessageTypes.Hello), Times.Once);
            binaryWriter.Verify(x => x.Write(messageProtocol.ProtocolVersion), Times.Once());

            Assert.IsNotNull(configuration);
        }
Exemplo n.º 2
0
        public void WhenControlConnectionHandshakeHasErrorExceptionThrown()
        {
            // arrange
            var messageProtocol            = new MessageProtocol();
            var configurationReader        = new Mock <ConfigurationReader>();
            var controlConnectionHandshake = new ControlConnectionHandshake(messageProtocol, configurationReader.Object);

            var binaryReader = new Mock <BinaryReader>(new MemoryStream());
            var binaryWriter = new Mock <BinaryWriter>(new MemoryStream());

            binaryReader.Setup(x => x.ReadByte())
            .Returns(MessageTypes.Error);

            const string errorString = "Error";

            binaryReader.Setup(x => x.ReadBytes(sizeof(short)))
            .Returns(new byte[] { 0x0, Convert.ToByte(errorString.Length) });

            binaryReader.Setup(x => x.ReadBytes(errorString.Length))
            .Returns(System.Text.Encoding.UTF8.GetBytes(errorString));

            var connection = new Connection(binaryReader.Object, binaryWriter.Object);

            // act
            try
            {
                controlConnectionHandshake.PerformHandshake(connection);
            }
            catch (HandshakeException e)
            {
                Assert.AreEqual("Error", e.Message);
            }
        }
Exemplo n.º 3
0
        public void WhenControlConnectionHandshakeHasUnknownErrorExceptionThrown()
        {
            // arrange
            var messageProtocol            = new MessageProtocol();
            var configurationReader        = new Mock <ConfigurationReader>();
            var controlConnectionHandshake = new ControlConnectionHandshake(messageProtocol, configurationReader.Object);

            var binaryReader = new Mock <BinaryReader>(new MemoryStream());
            var binaryWriter = new Mock <BinaryWriter>(new MemoryStream());

            binaryReader.Setup(x => x.ReadByte())
            .Returns(0xFE);

            var connection = new Connection(binaryReader.Object, binaryWriter.Object);

            // act
            try
            {
                controlConnectionHandshake.PerformHandshake(connection);
            }
            catch (HandshakeException e)
            {
                Assert.AreEqual("Handshake operation failed with unexpected reply: 254", e.Message);
            }
        }
Exemplo n.º 4
0
 public ProtocolVersion(IErrorHandler errorHandler)
 {
     _errorHandler              = errorHandler ?? throw new ArgumentNullException(nameof(errorHandler));
     MessageProtocol            = new MessageProtocol();
     ConfigurationReader        = new ConfigurationReader();
     ControlConnectionHandshake = new ControlConnectionHandshake(MessageProtocol, new ConfigurationReader());
     DataConnectionHandshake    = new DataConnectionHandshake(MessageProtocol);
 }