static void Main(string[] args)
        {
            XmlConfigurator.Configure();
            args = new  [] { "-f", "ServerAddresses.txt" };

            string[] replicaAddresses;
            if (!TryGetReplicaAddresses(args, out replicaAddresses))
            {
                return;
            }

            var replicaAverageDelay = new ConcurrentDictionary <string, Tuple <long, int> >();


            try
            {
                var clients = new ClusterClientBase[]
                {
                    //new RandomClusterClient(replicaAddresses),
                    //new GrayListClusterClient(replicaAddresses, TimeSpan.FromMilliseconds(1000)),
                    //new AllAtOneTimeClusterClient(replicaAddresses),
                    //new RoundRobinClusterClient(replicaAddresses),
                    new SmartClusterClient(replicaAddresses),
                    //new HistoryClusterClient(replicaAddresses)
                };
                var queries = new[]
                {
                    "От", "топота", "копыт", "пыль", "по", "полю", "летит", "На", "дворе", "трава", "на", "траве", "дрова",
                };

                foreach (var client in clients)
                {
                    Console.WriteLine("Testing {0} started", client.GetType());
                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            var result = await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(6));

                            Console.WriteLine("Processed query \"{0}\" in {1} ms", query, timer.ElapsedMilliseconds);
                        }
                        catch (TimeoutException)
                        {
                            Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query, timer.ElapsedMilliseconds);
                        }
                    }).ToArray());
                    Console.WriteLine("Testing {0} finished", client.GetType());
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Log.Fatal(e);
            }
        }
        static void Main(string[] args)
        {
            Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);


            if (!TryGetReplicaAddresses(args, out var replicaAddresses))
            {
                return;
            }

            try
            {
                var clients = new ClusterClientBase[]
                {
                    // new RandomClusterClient(replicaAddresses),
                    // new AnyClusterClient(replicaAddresses),
                    // new RoundRobin(replicaAddresses),
                    new SmartClusterClient(replicaAddresses),
                };

                var queries = new[]
                {
                    "lorem", "ipsum", "dolor", "sit", "amet", "consectetuer",
                    "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod",
                    "tincidunt", "ut", "laoreet", "dolore", "magna", "aliquam", "erat"
                };

                foreach (var client in clients)
                {
                    Console.WriteLine("Testing {0} started", client.GetType());
                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            // await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(1));
                            await client.ProcessRequestAsync(query, TimeSpan.FromMilliseconds(10));

                            Console.WriteLine("Processed query \"{0}\" in {1} ms", query,
                                              timer.ElapsedMilliseconds);
                        }
                        catch (TimeoutException)
                        {
                            Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query, timer.ElapsedMilliseconds);
                        }
                    }).ToArray());
                    Console.WriteLine("Testing {0} finished", client.GetType());
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"E :{e}");
            }
        }
Beispiel #3
0
        private static void Main(string[] args)
        {
            XmlConfigurator.Configure();

            if (!TryGetReplicaAddresses(args, out var replicaAddresses))
            {
                return;
            }

            try
            {
                var clients = new ClusterClientBase[]
                {
//                    new RoundRobinWithLimitedReplicasClusterClient(replicaAddresses),
//                    new RoundRobinClusterClient(replicaAddresses),
                    new SmartRoundRobinClusterClient(replicaAddresses),
//                    new ParallelOnAllClusterClient(replicaAddresses),
//                    new RandomClusterClient(replicaAddresses),
                };
                var queries = new[]
                {
                    "От", "топота", "копыт", "пыль", "по", "полю", "летит", "На", "дворе", "трава", "на", "траве",
                    "дрова"
                };
//                var queries = Enumerable.Range(1,500).Select(x=>x.ToString());
                foreach (var client in clients)
                {
                    Console.WriteLine("Testing {0} started", client.GetType());
                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(3));

                            Console.WriteLine("Processed query \"{0}\" in {1} ms", query,
                                              timer.ElapsedMilliseconds);
                        }
                        catch (TimeoutException)
                        {
                            Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query, timer.ElapsedMilliseconds);
                        }
                    }).ToArray());
                    Console.WriteLine("Testing {0} finished", client.GetType());
                }
            }
            catch (Exception e)
            {
//                Console.WriteLine(e);
                Log.Fatal(e);
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            XmlConfigurator.Configure();

            string[] replicaAddresses;
            if (!TryGetReplicaAddresses(args, out replicaAddresses))
            {
                return;
            }

            try
            {
                var clients = new ClusterClientBase[]
                {
                    //  new RandomClusterClient(replicaAddresses),
                    // new SimultaneousClient(replicaAddresses),
                    // new RoundRobinClient(replicaAddresses),
                    new SmartClient(replicaAddresses),
                };
                var queries = new[] { "От", "топота", "копыт", "пыль", "по", "полю", "летит", "На", "дворе", "трава", "на", "траве", "дрова" };

                foreach (var client in clients)
                {
                    Console.WriteLine("Testing {0} started", client.GetType());
                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            if (await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(6)) != null)
                            {
                                Console.WriteLine("Processed query \"{0}\" in {1} ms", query, timer.ElapsedMilliseconds);
                            }
                            else
                            {
                                Console.WriteLine("Something bad happened :(");
                            }
                        }
                        catch (TimeoutException)
                        {
                            Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query, timer.ElapsedMilliseconds);
                        }
                    }).ToArray());
                    Console.WriteLine("Testing {0} finished", client.GetType());
                }
            }
            catch (Exception e)
            {
                Log.Fatal(e);
            }
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            XmlConfigurator.Configure();

            if (!TryGetReplicaAddresses(args, out var replicaAddresses))
            {
                return;
            }

            try
            {
                var clients = new ClusterClientBase[]
                {
                    new RandomClusterClient(replicaAddresses),
                    new BalancingClusterClient(replicaAddresses)
                };

                var queries = new[]
                {
                    "lorem", "ipsum", "dolor", "sit", "amet", "consectetuer",
                    "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod",
                    "tincidunt", "ut", "laoreet", "dolore", "magna", "aliquam", "erat"
                };

                foreach (var client in clients)
                {
                    Console.WriteLine("Testing {0} started", client.GetType());
                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(6));

                            Console.WriteLine("Processed query \"{0}\" in {1} ms", query, timer.ElapsedMilliseconds);
                        }
                        catch (TimeoutException)
                        {
                            Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query, timer.ElapsedMilliseconds);
                        }
                    }).ToArray());
                    Console.WriteLine("Testing {0} finished", client.GetType());
                }
            }
            catch (Exception e)
            {
                Log.Fatal(e);
                Console.WriteLine($"E :{e}");
            }
        }
Beispiel #6
0
        static void Main(string[] args)
        {
            XmlConfigurator.Configure();

            if (!TryGetReplicaAddresses(args, out var replicaAddresses))
            {
                return;
            }

            try
            {
                var clients = new ClusterClientBase[]
                {
                    new RandomClusterClient(replicaAddresses),
                    new ParallelClusterClient(replicaAddresses),
                    new RoundRobinClusterClient(replicaAddresses),
                    new SmartClusterClient(replicaAddresses),
                    new EmergencyAsyncClient(replicaAddresses),
                    new EmergencyAsyncClient(replicaAddresses, replicaAddresses[3])
                };
                var queries = new[] { "От", "топота", "копыт", "пыль", "по", "полю", "летит", "На", "дворе", "трава", "на", "траве", "дрова" };

                foreach (var client in clients)
                {
                    var clientName = client.GetType().ToString().Split('.').Last();
                    Console.WriteLine("Testing {0} started", clientName);
                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(6));

                            Console.WriteLine("Processed query \"{0}\" in {1} ms", query, timer.ElapsedMilliseconds);
                        }
                        catch (TimeoutException)
                        {
                            Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query, timer.ElapsedMilliseconds);
                        }
                    }).ToArray());
                    Console.WriteLine("Testing {0} finished", clientName);
                }
            }
            catch (Exception e)
            {
                Log.Fatal(e);
            }
            Console.ReadKey();
        }
Beispiel #7
0
        private static void Main(string[] args)
        {
            XmlConfigurator.Configure();

            if (!ClientArguments.TryGetReplicaAddresses(args, out var replicaAddresses))
            {
                Console.WriteLine("Faulted: Pass arguments to preconfigurate client.");
                return;
            }

            try
            {
                var queries = File.ReadAllLines("Queries.txt");
                var clients = new ClusterClientBase[]
                {
                    new RandomClusterClient(replicaAddresses),
                    new BroadcastClusterClient(replicaAddresses),
                    new RoundRobinClusterClient(replicaAddresses),
                    new SmartClusterClient(replicaAddresses)
                };

                foreach (var client in clients)
                {
                    Log.Debug($"Testing {client.GetType()} started.");

                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            await client.ProceedRequestAsync(query, TimeSpan.FromMilliseconds(500));

                            Log.Info($"Query processed [{query}] in {timer.ElapsedMilliseconds} ms.");
                        }
                        catch (TimeoutException)
                        {
                            Log.Warn($"Query [{query}] timeout ({timer.ElapsedMilliseconds} ms).");
                        }
                    }).ToArray());

                    Log.Debug($"Testing {client.GetType()} finished.");
                }
            }
            catch (Exception e)
            {
                Log.Fatal(e);
            }
        }
Beispiel #8
0
        public static void Main(string[] args)
        {
            Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
            XmlConfigurator.Configure(LogManager.GetRepository(Assembly.GetCallingAssembly()), new FileInfo("log4net.config"));
            ThreadPool.SetMinThreads(20, 20);
            if (!TryGetReplicaAddresses(args, out var replicaAddresses))
            {
                return;
            }

            try
            {
                var vsc     = new VerySmartClusterClient(replicaAddresses);
                var clients = new ClusterClientBase[]
                {
                    // new RandomClusterClient(replicaAddresses),
                    // new AllClusterClient(replicaAddresses),
                    // new RoundRobinClusterClient(replicaAddresses),

                    vsc,
                    vsc,
                    vsc,
                    vsc,
                    vsc,
                    vsc,
                    vsc,
                    vsc,
                    vsc,
                    vsc,
                };

                var queries = new[]
                {
                    "lorem", "ipsum", "dolor", "sit", "amet", "consectetuer",
                    "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod",
                    "tincidunt", "ut", "laoreet", "dolore", "magna", "aliquam", "erat"
                };

                foreach (var client in clients)
                {
                    Console.WriteLine("Testing {0} started", client.GetType());
                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(6));

                            Console.WriteLine("Processed query \"{0}\" in {1} ms", query, timer.ElapsedMilliseconds);
                        }
                        catch (TimeoutException)
                        {
                            Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query, timer.ElapsedMilliseconds);
                        }
                    }).ToArray());
                    Console.WriteLine("Testing {0} finished", client.GetType());
                }
            }
            catch (Exception e)
            {
                Log.Fatal(e);
                Console.WriteLine($"E :{e}");
            }
        }
Beispiel #9
0
        static void Main(string[] args)
        {
            XmlConfigurator.Configure();

            string[] replicaAddresses;
            //            if (!TryGetReplicaAddresses(args, out replicaAddresses))
            //                return;

            replicaAddresses = new[]
            {
                "http://127.0.0.1:8060/qqq/",
                "http://127.0.0.1:8010/qqq/",
                "http://127.0.0.1:8020/qqq/"
            };


            try
            {
                var clients = new ClusterClientBase[]
                {
                    new RandomClusterClient(replicaAddresses),
                    new AllTogetherClusterClient(replicaAddresses),
                    new RoundRobinClient(replicaAddresses),
                    new SmartClient(replicaAddresses),
                    new MyClient(replicaAddresses),
                };
                var queries = new[]
                {
                    "От",
                    "топота",
                    "копыт",
                    "пыль",
                    "по",
                    "полу",
                    "летит"
                };

                foreach (var client in clients)
                {
                    Console.WriteLine("Testing {0} started", client.GetType());

                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(20));
                            Console.WriteLine("Processed query \"{0}\" in {1} ms", query, timer.ElapsedMilliseconds);
                        }
                        catch (TimeoutException)
                        {
                            Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query, timer.ElapsedMilliseconds);
                        }
                    }).ToArray());
                    Console.WriteLine("Testing {0} finished", client.GetType());
                }
            }
            catch (Exception e)
            {
                Log.Fatal(e);
            }
        }
Beispiel #10
0
        static void Main(string[] args)
        {
            XmlConfigurator.Configure();
            if (!TryGetReplicaAddresses(args, out var replicaAddresses, out var delay))
            {
                return;
            }
            try
            {
                var clients = new ClusterClientBase[]
                {
                    new RandomClusterClient(replicaAddresses),
                    new BroadcastClusterClient(replicaAddresses),
                    new RoundRobinClusterClient(replicaAddresses),
                    new SmartClusterClient(replicaAddresses),
                    new GrayListClusterClient(replicaAddresses),
                    new RRClusterClientWithPriority(replicaAddresses),
                    new SmartClusterClientWithPriority(replicaAddresses),
                    new BroadCastClusterClientWithCancellation(replicaAddresses),
                    new BroadCastClusterClientWithCache(replicaAddresses),
                };
                var queries = new[] { "От", "топота", "копыт", "пыль", "по", "полю", "летит", "На", "дворе", "трава", "на", "траве", "дрова" };

                foreach (var client in clients)
                {
                    Log.Info(client.GetType());
                    Console.WriteLine("Testing {0} started", client.GetType());
                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(delay));

                            Console.WriteLine("Processed query \"{0}\" in {1} ms", query, timer.ElapsedMilliseconds);
                        }
                        catch (TimeoutException)
                        {
                            Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query, timer.ElapsedMilliseconds);
                        }
                        timer.Reset();
                    }).ToArray());
                    Task.WaitAll(queries.Select(
                                     async query =>
                    {
                        var timer = Stopwatch.StartNew();
                        try
                        {
                            await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(delay));

                            Console.WriteLine("Processed query \"{0}\" in {1} ms", query, timer.ElapsedMilliseconds);
                        }
                        catch (TimeoutException)
                        {
                            Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query, timer.ElapsedMilliseconds);
                        }
                        timer.Reset();
                    }).ToArray());
                    Console.WriteLine("Testing {0} finished", client.GetType());
                }
            }
            catch (Exception e)
            {
                Log.Fatal(e);
            }
        }
Beispiel #11
0
        static void Main(string[] args)
        {
            XmlConfigurator.Configure();

            string[] replicaAddresses;
            if (!TryGetReplicaAddresses(args, out replicaAddresses))
            {
                return;
            }

            try
            {
                var clients = new ClusterClientBase[]
                {
                    new RandomClusterClient(replicaAddresses),
                    new SmartClusterClient(replicaAddresses),
                    new ConcurrentClusterClient(replicaAddresses),
                    new RoundRobinClusterClient(replicaAddresses),
                    //new BatchClusterClient(replicaAddresses, replicaAddresses.Length / 2),
                };
                //for (int i = 0; i < 2; i++)
                {
                    var queries = new[]
                    {
                        "От",
                        ///*"топота", "копыт", "пыль", "по", "полю", "летит", "На", "дворе", "трава", "на", */"траве", "дрова"
                    };

                    foreach (var client in clients)
                    {
                        Console.WriteLine("Testing {0} started", client.GetType());
                        Task.WaitAll(queries.Select(
                                         async query =>
                        {
                            var timer = Stopwatch.StartNew();
                            try
                            {
                                await client.ProcessRequestAsync(query, TimeSpan.FromSeconds(5));

                                Console.WriteLine("Processed query \"{0}\" in {1} ms", query,
                                                  timer.ElapsedMilliseconds);
                            }
                            catch (TimeoutException)
                            {
                                Console.WriteLine("Query \"{0}\" timeout ({1} ms)", query,
                                                  timer.ElapsedMilliseconds);
                            }
                            catch (ClusterClientException e)
                            {
                                Console.WriteLine(e.Message);
                            }
                        }).ToArray());
                        Console.WriteLine("Testing {0} finished", client.GetType());
                    }
                    //Thread.Sleep(5000);
                }
            }
            catch (Exception e)
            {
                Log.Fatal(e);
            }
        }