public void SerializeToString_WhenBatchedVersionedMessage_ExpectCorrectString()
        {
            // Arrange
            var serializerSettings = new SerializerSettings {
                SerializerType = SerializerType.Json
            };
            var messageSerializer = new MessageSerializer(serializerSettings);

            var testEntity = new TestEntity {
                Data = "val"
            }.SerializeToVersionedMessage(SerializerType.Json);

            var batchedVersionedMessage = new BatchedVersionedMessage {
                Messages = new List <VersionedMessage> {
                    testEntity
                }
            };

            // Act
            var stopwatch               = Stopwatch.StartNew();
            var serializeToString       = messageSerializer.SerializeToString(batchedVersionedMessage);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(serializeToString, Is.EqualTo("{\"m\":[{\"v\":{\"T\":\"TestEntity\",\"Ma\":1,\"Mi\":0,\"P\":0,\"VT\":0,\"VTV\":0},\"d\":\"{\\\"Data\\\":\\\"val\\\"}\"}]}"));
        }
        public void VersionedMessageHandler_WhenBatchedVersionedMessage_ExpectAllProcessed()
        {
            // Arrange
            var entityOne    = default(TestEntityOne);
            var entityTwo    = default(TestEntityTwo);
            var defaultValue = default(string);
            var exception    = default(Exception);

            var versionedMessageHandler = new VersionedMessageHandler(SerializerType.ProtocolBuffers, true)
                                          .On <TestEntityOne>(e => entityOne = e)
                                          .On <TestEntityTwo>(e => entityTwo = e)
                                          .Else(s => defaultValue            = s)
                                          .OnError(e => exception            = e);

            var batchedVersionedMessage = new BatchedVersionedMessage
            {
                Messages = new List <VersionedMessage>
                {
                    new TestEntityOne {
                        Value1 = "test", Value2 = 42
                    }.SerializeToVersionedMessage(),
                    new TestEntityTwo {
                        Value1 = "Value1", Value2 = new DateTime(2018, 1, 1)
                    }.SerializeToVersionedMessage(),
                    new TestEntityThree {
                        Value1 = 3
                    }.SerializeToVersionedMessage(),
                },
            };

            // Act
            var stopwatch = Stopwatch.StartNew();

            versionedMessageHandler.Post(batchedVersionedMessage);
            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(entityOne, Is.Not.Null);
            Assert.That(entityTwo, Is.Not.Null);
            Assert.That(defaultValue, Is.Not.Null);
            Assert.That(exception, Is.Null);

            Assert.That(entityOne.Value1, Is.EqualTo("test"));
            Assert.That(entityOne.Value2, Is.EqualTo(42));

            Assert.That(entityTwo.Value1, Is.EqualTo("Value1"));
            Assert.That(entityTwo.Value2, Is.EqualTo(new DateTime(2018, 1, 1)));

            Assert.That(defaultValue.Deserialize <TestEntityThree>().Value1, Is.EqualTo(3));
        }
        public void VersionedMessageHandler_WhenBatchedVersionedMessageWithNoHandler_ExpectNoAction()
        {
            // Arrange
            var entityOne    = default(TestEntityOne);
            var entityTwo    = default(TestEntityTwo);
            var defaultValue = default(string);
            var exception    = default(Exception);

            var versionedMessageHandler = new VersionedMessageHandler(SerializerType.ProtocolBuffers, false);

            var batchedVersionedMessage = new BatchedVersionedMessage
            {
                Messages = new List <VersionedMessage>
                {
                    new TestEntityOne {
                        Value1 = "test", Value2 = 42
                    }.SerializeToVersionedMessage(),
                    new TestEntityTwo {
                        Value1 = "Value1", Value2 = new DateTime(2018, 1, 1)
                    }.SerializeToVersionedMessage(),
                    new TestEntityThree {
                        Value1 = 3
                    }.SerializeToVersionedMessage(),
                },
            };

            // Act
            var stopwatch = Stopwatch.StartNew();

            versionedMessageHandler.Post(batchedVersionedMessage);
            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Assert.That(entityOne, Is.Null);
            Assert.That(entityTwo, Is.Null);
            Assert.That(defaultValue, Is.Null);
            Assert.That(exception, Is.Null);
        }
        public void SerializeToString_WhenBatchedVersionedMessageWithProtoBuf_ExpectData()
        {
            // Arrange
            var serializerSettings = new SerializerSettings {
                SerializerType = SerializerType.ProtocolBuffers
            };
            var messageSerializer = new MessageSerializer(serializerSettings);

            var testEntity = new TestEntity {
                Data = "val"
            }.SerializeToVersionedMessage(SerializerType.ProtocolBuffers);

            var batchedVersionedMessage = new BatchedVersionedMessage {
                Messages = new List <VersionedMessage> {
                    testEntity
                }
            };

            // Act
            var stopwatch               = Stopwatch.StartNew();
            var serializeToString       = messageSerializer.SerializeToString(batchedVersionedMessage);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            var deserialize = serializeToString.Deserialize <BatchedVersionedMessage>();

            Assert.That(deserialize, Is.Not.Null);

            var message = deserialize.Messages.First();

            Assert.That(message, Is.Not.Null);
            Assert.That(message.Version, Is.EqualTo(new DtoVersion(typeof(TestEntity), 1, 0, 0)));
        }
Пример #5
0
        /// <summary>
        /// Serializes to string.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <returns>
        /// The <see cref="string" />
        /// </returns>
        public string SerializeToString(BatchedVersionedMessage source)
        {
            var serializerType = this.serializerSettings.SerializerType;

            return(source.SerializeToString(serializerType));
        }
        public void VersionedMessageHandler_WhenBatchedVersionedMessage_ExpectAllProcessed()
        {
            // Arrange
            var exception = default(Exception);

            var versionedMessageHandler =
                new VersionedMessageHandler <TestEntityOne>(SerializerType.ProtocolBuffers, true)
                .On <TestEntityOne>(e => e)
                .On <TestEntityTwo>(e => new TestEntityOne {
                Value1 = e.Value1, Value2 = 5
            })
                .Else(s => new TestEntityOne {
                Value2 = 42, Value1 = "DEFAULT"
            })
                .OnError(
                    e =>
            {
                exception = e;
                return(default(TestEntityOne));
            });

            var batchedVersionedMessage = new BatchedVersionedMessage
            {
                Messages = new List <VersionedMessage>
                {
                    new TestEntityOne {
                        Value1 = "test", Value2 = 42
                    }.SerializeToVersionedMessage(),
                    new TestEntityTwo {
                        Value1 = "Value1", Value2 = new DateTime(2018, 1, 1)
                    }.SerializeToVersionedMessage(),
                    new TestEntityThree {
                        Value1 = 3
                    }.SerializeToVersionedMessage(),
                },
            };

            // Act
            var stopwatch = Stopwatch.StartNew();
            var results   = versionedMessageHandler.Post(batchedVersionedMessage);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            var resultsList = results.ToList();

            Assert.That(resultsList[0], Is.Not.Null);
            Assert.That(resultsList[1], Is.Not.Null);
            Assert.That(resultsList[2], Is.Not.Null);
            Assert.That(exception, Is.Null);

            Assert.That(resultsList[0].Value1, Is.EqualTo("test"));
            Assert.That(resultsList[0].Value2, Is.EqualTo(42));

            Assert.That(resultsList[1].Value1, Is.EqualTo("Value1"));
            Assert.That(resultsList[1].Value2, Is.EqualTo(5));

            Assert.That(resultsList[2].Value1, Is.EqualTo("DEFAULT"));
            Assert.That(resultsList[2].Value2, Is.EqualTo(42));
        }