public void Should_Process_Update_Message()
        {
            var level1MessageHandler = new Level1MessageHandler();

            // Arrange
            var msg      = "Q,AAPL,322.7500,40,16:53:23.256494,11,37629453,322.6800,100,322.8700,100,312.6000,318.4000,312.1900,308.9500,ba,873D17,2,17\r\n";
            var msgBytes = Encoding.ASCII.GetBytes(msg);
            var count    = msgBytes.Length;

            level1MessageHandler.Update += message => { };

            const int ExecutionsCount = 5;
            var       results         = new double[ExecutionsCount];

            for (int i = 0; i < ExecutionsCount; i++)
            {
                var sw = Stopwatch.StartNew();
                for (var j = 0; j < 1000000; j++)
                {
                    level1MessageHandler.ProcessMessages(msgBytes, count);
                }
                sw.Stop();

                results[i] = sw.Elapsed.TotalMilliseconds;
                Console.WriteLine(sw.Elapsed.TotalMilliseconds);
            }

            Console.WriteLine($"Min: {results.Min()}");
            Console.WriteLine($"Avg: {results.Average()}");
            Console.WriteLine($"Max: {results.Max()}");
        }
        public void Should_Return_FundamentalMessage()
        {
            // TODO: full fundamental message assertion
            var message        = @"F,MSFT,5,65.6,28624000,97.9500,67.1400,97.9500,83.8300,,,,,,,,,,,1.49,,0.06,06,,MICROSOFT,MSFT,76.800,1.27,,159851.0,64527.0,03/31/2018,76073.0,7683198,,0.50 02/18/2003,0.50 03/29/1999,,,14,4,7372,24.82,1,21,05/10/2018,05/18/2017,05/10/2018,02/09/2018,85.5400,,,,,511210,,,,";
            var values         = Level1MessageHandler.GetValuesFromMessage(message);
            var fundamentalMsg = FundamentalMessage.CreateFundamentalMessage(values);

            Assert.AreEqual(fundamentalMsg.Symbol, "MSFT");
            Assert.AreEqual(fundamentalMsg.ExchangeId, "5");

            Assert.AreEqual(fundamentalMsg.OptionsPremiumMultiplier, null);
            Assert.AreEqual(fundamentalMsg.OptionsMultipleDeliverables, null);
        }
Esempio n. 3
0
        public void Should_Process_Update_Message()
        {
            var level1MessageHandler = new Level1MessageHandler();

            // Arrange
            var msg      = "Q,AAPL,322.7500,40,16:53:23.256494,11,37629453,322.6800,100,322.8700,100,312.6000,318.4000,312.1900,308.9500,ba,873D17,\r\n";
            var msgBytes = Encoding.ASCII.GetBytes(msg);
            var count    = msgBytes.Length;

            level1MessageHandler.Update += message => { };

            var sw = Stopwatch.StartNew();

            for (int i = 0; i < 1000000; i++)
            {
                level1MessageHandler.ProcessMessages(msgBytes, count);
            }
            sw.Stop();

            Console.WriteLine(sw.Elapsed.TotalMilliseconds);
        }