Пример #1
0
        public void CreateTopicMessage_WithTopicEvent_FirstFrameIsFullName()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateTopicMessage(obj);

            // Assert
            Assert.That(message[0].ConvertToString(), Is.EqualTo(obj.GetType().FullName));
        }
Пример #2
0
        public void CreateTopicMessage_WithTopicEvent_SecondFrameIsSerializedData()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateTopicMessage(obj);

            // Assert
            Assert.That(message[1].ToByteArray(), Is.EqualTo(data));
        }
Пример #3
0
        public void CreateTopicMessage_WithTopicEvent_MessageHasTwoFrames()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateTopicMessage(obj);

            // Assert
            Assert.That(message.FrameCount, Is.EqualTo(2));
        }
Пример #4
0
        public void CreateResponseMessage_WithResponse_FifthFrameIsSerializedData()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateResponseMessage(obj, address, requestId, dotNetSerializer.Descriptor.InvariantName);

            // Assert
            Assert.That(message[4].ToByteArray(), Is.EqualTo(data));
        }
Пример #5
0
        public void CreateResponse_WithResponse_HasFiveFrames()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateResponseMessage(obj, address, requestId, dotNetSerializer.Descriptor.InvariantName);

            // Assert
            Assert.That(message.FrameCount, Is.EqualTo(5));
        }
Пример #6
0
        public void CreateRequestMessage_WithRequest_ForthFrameIsSerializedData()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateRequestMessage(obj, requestId);

            // Assert
            Assert.That(message[3].ToByteArray(), Is.EqualTo(data));
        }
Пример #7
0
        public void CreateResponseMessage_WithResponse_ForthFrameEmpty()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateResponseMessage(obj, address, requestId, dotNetSerializer.Descriptor.InvariantName);

            // Assert
            Assert.That(message[3], Is.EqualTo(NetMQFrame.Empty));
        }
Пример #8
0
        public void CreateResponseMessage_WithResponse_ThirdFrameIsRequestId()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateResponseMessage(obj, address, requestId, dotNetSerializer.Descriptor.InvariantName);

            // Assert
            Assert.That(message[2].ConvertToInt32(), Is.EqualTo(requestId));
        }
Пример #9
0
        public void CreateRequestMessage_WithRequest_ThirdFrameEmpty()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateRequestMessage(obj, requestId);

            // Assert
            Assert.That(message[2], Is.EqualTo(NetMQFrame.Empty));
        }
Пример #10
0
        public void CreateTopicMessage_WithTopicEvent_PacksInPackage()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateTopicMessage(obj);

            // Assert
            mockPackageFactory.Verify(m => m.Pack(It.IsIn <object>(obj)), Times.Once);
        }
Пример #11
0
        public void CreateRequestMessage_WithRequest_MessageHasFourFrames()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateRequestMessage(obj, requestId);

            // Assert
            Assert.That(message.FrameCount, Is.EqualTo(4));
        }
Пример #12
0
        public void CreateRequestMessage_WithRequest_SecondFrameIsRequestId()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateRequestMessage(obj, requestId);

            // Assert
            Assert.That(message[1].ConvertToInt32(), Is.EqualTo(requestId));
        }
Пример #13
0
        public void CreateRequestMessage_WithRequest_PacksRequest()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateRequestMessage(obj, requestId);

            // Assert
            mockPackageFactory.Verify(m => m.Pack(It.IsIn <object>(obj)), Times.Once);
        }
Пример #14
0
        public void CreateRequestMessage_WithRequest_SerializesPackage()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateRequestMessage(obj, requestId);

            // Assert
            mockSerializer.Verify(m => m.Serialize(It.IsIn <Package>(package)), Times.Once);
        }
Пример #15
0
        public void CreateResponse_WithResponse_SerializesPackage()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var message = messageFactory.CreateResponseMessage(obj, address, requestId, dotNetSerializer.Descriptor.InvariantName);

            // Assert
            mockSerializer.Verify(m => m.Serialize(It.IsIn <Package>(package)), Times.Once);
        }
Пример #16
0
        public void IsValidResponseMessage_WithNullMessage_IsFalse()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);

            // Act
            var isValid = messageFactory.IsValidResponseMessage(null);

            // Assert
            Assert.That(isValid, Is.False);
        }
Пример #17
0
        public void ExtractTopic_WithMessage_UnpacksTopicEvent()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = messageFactory.CreateTopicMessage(obj);

            // Act
            var topicEvent = messageFactory.ExtractTopic(message);

            // Assert
            mockPackageFactory.Verify(m => m.Unpack(It.IsIn <Package>(package)), Times.Once);
        }
Пример #18
0
        public void ExtractTopic_WithMessage_DeserializesPackage()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = messageFactory.CreateTopicMessage(obj);

            // Act
            var topicEvent = messageFactory.ExtractTopic(message);

            // Assert
            mockSerializer.Verify(m => m.Deserialize <Package>(It.IsIn <byte[]>(data)), Times.Once);
        }
Пример #19
0
        public void ExtractTopic_WithMessage_ReturnsTopicEvent()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = messageFactory.CreateTopicMessage(obj);

            // Act
            var topicEvent = messageFactory.ExtractTopic(message);

            // Assert
            Assert.That(topicEvent, Is.EqualTo(obj));
        }
Пример #20
0
        public async Task SenderReceiver_WhenBoundAndConnected_PassesMessage()
        {
            // Arrange
            var    responseStr     = "Hello, World!";
            var    requestStr      = "Hello";
            var    receivedRequest = string.Empty;
            ushort port            = 6555;
            var    called          = false;

            mockRequestDispatcher
            .Setup(m => m.Handle(ref It.Ref <RequestTask> .IsAny))
            .Callback(new Handler((ref RequestTask task) => {
                called          = true;
                receivedRequest = (string)task.Request;
                task.ResponseSender(responseStr);
            }));

            var packageFactory  = new PackageFactory();
            var serializer      = new DotNetSerializer();
            var serializerCache = new SerializerCache();
            var messageFactory  = new NetMQMessageFactory(serializerCache, packageFactory);
            var sender          = new NetMQSender(new DealerSocket(), messageFactory);
            var receiver        = new NetMQReceiver(new RouterSocket(), messageFactory, requestDispatcher);
            var poller          = new NetMQPoller();

            serializerCache.AddSerializer(serializer);

            sender.AddAddress(TcpAddress.Localhost(port));
            sender.InitializeConnection();

            receiver.AddAddress(TcpAddress.Wildcard(port));
            receiver.InitializeConnection();

            poller.Add(sender.PollableSocket);
            poller.Add(receiver.PollableSocket);
            poller.RunAsync();

            var package = new DataPackage <string>(new GuidPackageId(), requestStr);

            // Act
            var response = await sender.SendAndReceive(package, TimeSpan.FromSeconds(5));

            // Cleanup
            poller.StopAsync();
            sender.TerminateConnection();
            receiver.TerminateConnection();

            // Assert
            Assert.That(called, Is.True);
            Assert.That(receivedRequest, Is.EqualTo(requestStr));
            Assert.That((string)response, Is.EqualTo(responseStr));
        }
Пример #21
0
        public void ExtractRequest_WithMessage_ReturnsSameAddress()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = messageFactory.CreateRequestMessage(obj, requestId);

            message.Push(address); // NetMQ prepends an address frame

            // Act
            var(request, retAddress, retRequestId, name) = messageFactory.ExtractRequest(message);

            // Assert
            Assert.That(retAddress, Is.EqualTo(address));
        }
Пример #22
0
        public void ExtractRequest_WithMessage_DeserializesPackage()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = messageFactory.CreateRequestMessage(obj, requestId);

            message.Push(address); // NetMQ prepends an address frame

            // Act
            var(request, retAddress, retRequestId, name) = messageFactory.ExtractRequest(message);

            // Assert
            mockSerializer.Verify(m => m.Deserialize <Package>(It.IsIn <byte[]>(data)), Times.Once);
        }
Пример #23
0
        public void ExtractRequest_WithMessage_UnpacksRequestObject()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = messageFactory.CreateRequestMessage(obj, requestId);

            message.Push(address); // NetMQ prepends an address frame

            // Act
            var(request, retAddress, retRequestId, name) = messageFactory.ExtractRequest(message);

            // Assert
            mockPackageFactory.Verify(m => m.Unpack(It.IsIn <Package>(package)), Times.Once);
        }
Пример #24
0
        public void IsValidRequestMessage_WithFiveFrameMessage_IsTrue()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = messageFactory.CreateRequestMessage(obj, 1);

            message.Push(address);

            // Act
            var isValid = messageFactory.IsValidRequestMessage(message);

            // Assert
            Assert.That(isValid, Is.True);
        }
Пример #25
0
        public void IsValidRequestMessage_WithEmptyAddress_IsFalse()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = messageFactory.CreateRequestMessage(obj, requestId);

            message.PushEmptyFrame();

            // Act
            var isValid = messageFactory.IsValidRequestMessage(message);

            // Assert
            Assert.That(isValid, Is.False);
        }
Пример #26
0
        public void IsValidTopicMessage_WithWellFormedMessage_IsTrue()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = new NetMQMessage(2);

            message.Push("Topic");
            message.Push(data);

            // Act
            var isValid = messageFactory.IsValidTopicMessage(message);

            // Assert
            Assert.That(isValid, Is.True);
        }
Пример #27
0
        public void IsValidTopicMessage_WithNoData_IsFalse()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = new NetMQMessage(2);

            message.Push("Topic");
            message.PushEmptyFrame();

            // Act
            var isValid = messageFactory.IsValidTopicMessage(message);

            // Assert
            Assert.That(isValid, Is.False);
        }
Пример #28
0
        public void IsValidResponseMessage_WithEmptyDataFrame_IsFalse()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = new NetMQMessage(4);

            message.AppendEmptyFrame();
            message.Append(requestId);
            message.AppendEmptyFrame();
            message.AppendEmptyFrame();

            // Act
            var isValid = messageFactory.IsValidResponseMessage(message);

            // Assert
            Assert.That(isValid, Is.False);
        }
Пример #29
0
        public void ExtractResponse_WithMessage_UnpacksResponseObject()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = new NetMQMessage(4);

            message.AppendEmptyFrame();
            message.Append(requestId);
            message.AppendEmptyFrame();
            message.Append(data);

            // Act
            var(retRequestId, response) = messageFactory.ExtractResponse(message);

            // Assert
            mockPackageFactory.Verify(m => m.Unpack(It.IsIn(package)), Times.Once);
        }
Пример #30
0
        public void ExtractResponse_WithMessage_DeserializesPackage()
        {
            // Arrange
            var messageFactory = new NetMQMessageFactory(serializerCache, packageFactory);
            var message        = new NetMQMessage(4);

            message.AppendEmptyFrame();
            message.Append(requestId);
            message.AppendEmptyFrame();
            message.Append(data);

            // Act
            var(retRequestId, response) = messageFactory.ExtractResponse(message);

            // Assert
            mockSerializer.Verify(m => m.Deserialize <Package>(It.IsIn <byte[]>(data)), Times.Once);
        }