Beispiel #1
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));
        }
Beispiel #2
0
        public void Deserialize_WithStringDataZeroOffset_ReproducesString()
        {
            // Arrange
            var serializer = new DotNetSerializer();
            var str        = "Some string";
            var data       = serializer.Serialize(str);

            // Act
            var deserializedStr = serializer.Deserialize <string>(data, 0);

            // Assert
            Assert.AreEqual(str, deserializedStr);
        }
Beispiel #3
0
        public void Deserialize_WithStringData_ReproducesString()
        {
            // Arrange
            var serializer = new DotNetSerializer();
            var str        = "Some string";
            var bytes      = serializer.Serialize(str);

            // Act
            var deserializedStr = serializer.Deserialize <string>(bytes);

            // Assert
            Assert.That(deserializedStr, Is.EqualTo(str));
        }
Beispiel #4
0
        public void Serialize_WithString_ProducesByteArray()
        {
            // Arrange
            var serializer = new DotNetSerializer();
            var str        = "Some string";

            // Act
            var bytes = serializer.Serialize(str);

            // Assert
            Assert.That(bytes, Is.Not.Null);
            CollectionAssert.IsNotEmpty(bytes);
        }
Beispiel #5
0
        public void Deserialize_WithStringDataOffset_ReproducesString()
        {
            // Arrange
            var serializer = new DotNetSerializer();
            var str        = "Some string";
            var offset     = (new Random()).Next(100);
            var data       = serializer.Serialize(str, offset);

            // Act
            var deserialized = serializer.Deserialize <string>(data, offset);

            // Assert
            Assert.AreEqual(str, deserialized);
        }
Beispiel #6
0
        public void Serialize_WithStringAndOffset_ConsistentWithNoOffset()
        {
            // Arrange
            var serializer = new DotNetSerializer();
            var offset     = (new Random()).Next(100);
            var str        = "Some string";

            // Act
            var bytes1 = serializer.Serialize(str);
            var bytes2 = serializer.Serialize(str, offset).Skip(offset).ToArray();

            // Assert
            Assert.AreEqual(bytes1, bytes2);
        }