private void Benchmark(SharpMessagingClient client)
        {
            var buffer = MessageSize < 12
                ? Encoding.ASCII.GetBytes("1".PadLeft(MessageSize, '0'))
                : Encoding.ASCII.GetBytes("\"hello world ".PadRight(9999) + "\"");
            var payload = new ArraySegment <byte>(buffer);

            Console.WriteLine(DateTime.UtcNow.ToString("HH:mm:ss.fff") + " Starting");
            for (var i = 1; i < MessageCount; i++)
            {
                var frame = new MessageFrame
                {
                    PayloadBuffer = payload
                };
                client.Send(frame);
            }

            // packet to mark the end.
            client.Send(new MessageFrame
            {
                PayloadBuffer =
                    new ArraySegment <byte>(new[]
                                            { (byte)'"', (byte)'m', (byte)'o', (byte)'t', (byte)'h', (byte)'e', (byte)'r', (byte)'"' })
            });
        }
        public void Start()
        {
            var registry = new ExtensionRegistry();

            //registry.AddRequiredExtension(new JsonExtension());
            if (MessagesPerAck == 1)
            {
                registry.AddRequiredExtension(new SingleAckExtension());
            }
            else if (MessagesPerAck != 0)
            {
                registry.AddRequiredExtension(new BatchAckExtension
                {
                    MessagesPerAck             = MessagesPerAck,
                    MaxAmountOfPendingMessages = 1000000,
                    AckExpireTime = TimeSpan.FromSeconds(120) // as we queue up msgs a lot faster than they can be sent.
                });
            }

            registry.AddRequiredExtension(new DotNetTypeExtension());
            var parts = RemoteHost.Split(':');
            var port  = int.Parse(parts[1]);

            _client = new SharpMessagingClient("TestClient", registry);
            _client.Start(parts[0], port);
            _client.FrameReceived = OnTimingFrame;

            //start timing
            var buffer = Encoding.ASCII.GetBytes(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.ffff"));

            _client.Send(new MessageFrame(buffer));

            Console.WriteLine("All enqueued");
        }
示例#3
0
        public static void CreateClient()
        {
            var client = new SharpMessagingClient();

            client.Start("localhost", 8334);
            client.Send(new MessageFrame(Encoding.ASCII.GetBytes("hello")));
            Console.WriteLine("Sent!");
            Console.ReadLine();
        }
示例#4
0
 public static void CreateClient()
 {
     var registry = new ExtensionRegistry();
     registry.AddRequiredExtension(new AckExtension()
     {
         MessagesPerAck = 10,
         AckExpireTime = TimeSpan.FromSeconds(1)
     });
     //registry.AddRequiredExtension(new FastJsonExtension());
     var client = new SharpMessagingClient("MyClient", registry);
     client.Start("localhost", 8334);
     client.Send(new MessageFrame("Hello"));
     Console.WriteLine("Sent!");
     Console.ReadLine();
 }
示例#5
0
        public static void CreateClient()
        {
            var registry = new ExtensionRegistry();

            registry.AddRequiredExtension(new AckExtension()
            {
                MessagesPerAck = 10,
                AckExpireTime  = TimeSpan.FromSeconds(1)
            });
            //registry.AddRequiredExtension(new FastJsonExtension());
            var client = new SharpMessagingClient("MyClient", registry);

            client.Start("localhost", 8334);
            client.Send(new MessageFrame("Hello"));
            Console.WriteLine("Sent!");
            Console.ReadLine();
        }
        private void OnTimingFrame(MessageFrame frame)
        {
            var data = Encoding.ASCII.GetString(frame.PayloadBuffer.Array, frame.PayloadBuffer.Offset,
                                                frame.PayloadBuffer.Count);

            var parts = data.Split(';');

            if (data == "completed")
            {
                var clockSyncAndNetworkDelay = TimeSpan.FromMilliseconds(_timings.Average());
                var elapsedTime = DateTime.UtcNow.Subtract(Started).Subtract(clockSyncAndNetworkDelay);
                var mbits       = (MessageCount * MessageSize * 8L / elapsedTime.TotalSeconds) / 1000000;
                Console.WriteLine(DateTime.UtcNow.ToString("HH:mm:ss.fff") + " completed.");
                Console.WriteLine("Duration:      {0} ms", elapsedTime.TotalMilliseconds);
                Console.WriteLine("Message Size:  {0} bytes", MessageSize.ToString("N0"));
                Console.WriteLine("Message Count: {0}", MessageCount.ToString("N0"));
                Console.WriteLine("Total size:    {0} bytes", (MessageSize * MessageCount).ToString("N0"));
                Console.WriteLine("Msgs/sec:      {0}", (MessageCount / elapsedTime.TotalSeconds).ToString("N0"));
                Console.WriteLine("Throughput:    {0} Mbit/s", mbits.ToString("N1"));

                if (!File.Exists("result.csv"))
                {
                    File.AppendAllText("result.csv", "sep=,\r\n");
                    File.AppendAllText("result.csv", @"""Message size (bytes)"",""Message count"",""Transfer size (bytes)"",""Msgs/Ack"",""Duration (ms)"",""Msgs/sec"",""Troughput (Mbit/s)""" + "\r\n");
                }

                File.AppendAllText(@"result.csv",
                                   string.Format("{0},{1},{2},{3},{4},{5},{6}\r\n",
                                                 MessageSize.ToString(CultureInfo.InvariantCulture),
                                                 MessageCount.ToString(CultureInfo.InvariantCulture),
                                                 (MessageSize * MessageCount).ToString(CultureInfo.InvariantCulture),
                                                 MessagesPerAck,
                                                 ((long)elapsedTime.TotalMilliseconds).ToString(CultureInfo.InvariantCulture),
                                                 ((long)(MessageCount / elapsedTime.TotalSeconds)).ToString(CultureInfo.InvariantCulture),
                                                 mbits.ToString(CultureInfo.InvariantCulture)));
                _completedEvent.Set();

                return;
            }

            var timing = int.Parse(parts[0]);

            _timings.Add(timing);
            var date       = DateTime.Parse(parts[1], CultureInfo.InvariantCulture);
            var difference = DateTime.UtcNow.Subtract(date).TotalMilliseconds;

            _timings.Add((int)difference);

            if (_timings.Count == 10)
            {
                var buffer = Encoding.ASCII.GetBytes(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.ffff") + ";end");
                _client.Send(new MessageFrame(buffer));
            }
            else if (_timings.Count == 12)
            {
                Started = DateTime.UtcNow;
                Benchmark(_client);
            }
            else
            {
                var buffer = Encoding.ASCII.GetBytes(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.ffff"));
                _client.Send(new MessageFrame(buffer));
            }
        }
        private void Benchmark(SharpMessagingClient client)
        {
            var buffer = MessageSize < 12
                ? Encoding.ASCII.GetBytes("1".PadLeft(MessageSize, '0'))
                : Encoding.ASCII.GetBytes("\"hello world ".PadRight(9999) + "\"");
            var payload = new ArraySegment<byte>(buffer);

            Console.WriteLine(DateTime.UtcNow.ToString("HH:mm:ss.fff") + " Starting");
            for (var i = 1; i < MessageCount; i++)
            {
                var frame = new MessageFrame
                {
                    PayloadBuffer = payload
                };
                client.Send(frame);
            }

            // packet to mark the end.
            client.Send(new MessageFrame
            {
                PayloadBuffer =
                    new ArraySegment<byte>(new[]
                    {(byte) '"', (byte) 'm', (byte) 'o', (byte) 't', (byte) 'h', (byte) 'e', (byte) 'r', (byte) '"'})
            });
        }
        public void Start()
        {
            var registry = new ExtensionRegistry();
            //registry.AddRequiredExtension(new JsonExtension());
            if (MessagesPerAck != 0)
            {
                registry.AddRequiredExtension(new AckExtension
                {
                    MessagesPerAck = MessagesPerAck,
                    AckExpireTime = TimeSpan.FromSeconds(120) // as we queue up msgs a lot faster than they can be sent.
                });
            }

            registry.AddRequiredExtension(new DotNetTypeExtension());
            var parts = RemoteHost.Split(':');
            var port = int.Parse(parts[1]);

            _client = new SharpMessagingClient("TestClient", registry);
            _client.Start(parts[0], port);
            _client.FrameReceived = OnTimingFrame;

            //start timing
            var buffer = Encoding.ASCII.GetBytes(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.ffff"));
            _client.Send(new MessageFrame(buffer));

            Console.WriteLine("All enqueued");
        }