Exemplo n.º 1
0
        static async Task Main(string[] args)
        {
            var messageDispatched = 0;
            //var resolver = new UnityDependencyResolver();
            //using (new InformationLogEventWriter())
            //{
            //    ApplicationConfiguration.RegisterDependencyResolver(() => resolver);
            //    ApplicationConfiguration.RegisterServerInitialiserFactory(() => new ServerInitialiser());

            //    Program.InitializeServer();
            //}
            var compressor = new DeflateCompressor();
            var serialaser = new InMemorySerializer(compressor);
            var logger = new MockLogProvider();
            var transport = new InMemoryQueueTransport(logger, () => new TransportConfiguration());
            await transport.Start();
            var transportManager = new TransportManager(transport, null);
            var dispatcher = new TransportDispatcher(transportManager ,serialaser);//resolver.Resolve<ITranspontDispatcher>();


            var internalListener = new MessageListener();
            await dispatcher.TransportManager.RegisterListener(internalListener);
            var tasks = new List<Task>();
            for (var i = 0; i < 1; i++)
            {
                var batch = i;
                var task = Task.Factory.StartNew(async () =>
                {
                    for (var j = 0; j < 1; j++)
                    {
                        var command = new LogErrorCommand(Guid.NewGuid(), Guid.NewGuid());
                        Interlocked.Increment(ref messageDispatched);
                        Console.WriteLine(String.Format("Dispatched message No: {0}, batch: {1}. Total number messages: {2}", j, batch, messageDispatched));
                        //Thread.Sleep(10);
                        await dispatcher.SendMessage(command);
                    }
                });

                tasks.Add(task);
            }

            Console.ReadLine();
        }
        public async Task Serialised_with_cmpression_test()
        {
            //ARRANGE
            var         compression         = new DeflateCompressor();
            var         serialiser          = new InMemorySerializer(compression);
            var         command             = new TestCommand(Guid.NewGuid(), Guid.NewGuid());
            TestCommand commandDeserialised = null;

            for (var i = 0; i < 1000; i++)
            {
                command.Data.Add(i);
            }
            //ACT
            using (var ms = new MemoryStream())
            {
                await serialiser.SerialiseAsync(ms, command);

                commandDeserialised = await serialiser.Deserialize(ms) as TestCommand;
            }
            //ASSERT
            Assert.AreEqual(command.Id, commandDeserialised.Id);
            Assert.AreEqual(command.CorrelationId, commandDeserialised.CorrelationId);
            Assert.True(command.Data.SequenceEqual(commandDeserialised.Data));
        }