Пример #1
0
 public StopwatchWrapper(AvgTimer timer)
 {
     _timer     = timer;
     _stopwatch = new Stopwatch();
 }
Пример #2
0
        public void SpeedTest(string database, string userName, string password)
        {
            var emptyLogger = new EmptyLogger();

            using (var logger = new Logger("Speedtest"))
            {
                // Authorize
                this.Request(emptyLogger, null, "Authorization/", WebMethod.PUT, new ApiAuthorize()
                {
                    Username = userName,
                    Password = password,
                    Database = database
                });

                logger.WriteLine("Running a speedtest.");
                logger.WriteLine("1. Loading items via PurchaseSinceDate");

                // - Requesting purchases of today
                this.Request(emptyLogger, $"Temp/Purchases", $"PurchaseSinceDate/{DateTime.Now.ToString("yyyyMMdd")}", WebMethod.GET, null);

                // Reading purchase Id's from request
                var retrievedFile = string.Join("\r\n", File.ReadAllLines(@"Temp/Purchases.json"));
                var purchaseIds   = JArray.Parse(retrievedFile)
                                    .Where(a => a.Type == JTokenType.Object)
                                    .Select(a => ((JObject)a).Value <string>("Id"))
                                    .ToList();

                logger.WriteLine($" - Retrieved {purchaseIds.Count} items");

                // Fetching ListArticleSort items:
                {
                    var items = Math.Min(purchaseIds.Count, 50);
                    logger.WriteLine($"2. Fetching {items} items, 100 times, using /ListArticleSort to get complete information of {items} items (name, description etc):");
                    var avgTimer = new AvgTimer();
                    for (var x = 0; x < 100; x++)
                    {
                        var timer = avgTimer.StartNew();
                        this.Request(emptyLogger, null, "ListArticleSort", WebMethod.PUT, new ApiListArticleSort()
                        {
                            ListArticleSorts = purchaseIds.Take(items)
                        });
                        timer.Stop();
                        Console.Write(".");
                    }
                    Console.WriteLine();

                    var times = avgTimer.GetTimes();
                    logger.WriteLine($" - avg: {times.Average()}ms, max: {times.Max()}ms, min: {times.Min()}ms");
                }

                // Fetching DebtorListArticleSortPrice items:
                {
                    var items = Math.Min(purchaseIds.Count, 25);
                    logger.WriteLine($"3. Fetching {items} items, 100 times, using /DebtorListArticleSortPrice to get stock/price information:");
                    var avgTimer = new AvgTimer();
                    for (var x = 0; x < 100; x++)
                    {
                        var timer = avgTimer.StartNew();
                        this.Request(emptyLogger, null, "DebtorListArticleSortPrice", WebMethod.PUT, new ApiDebtorListArticleSortPrice()
                        {
                            DebtorId         = 6340, // 000723
                            ListArticleSorts = purchaseIds.Take(items)
                        });
                        timer.Stop();
                        Console.Write(".");
                    }
                    Console.WriteLine();

                    var times = avgTimer.GetTimes();
                    logger.WriteLine($" - avg: {times.Average()}ms, max: {times.Max()}ms, min: {times.Min()}ms");
                }
            }
        }