protected virtual void OnWriteWorkloadResultVerboseInfo(WorkloadResult workloadResult)
 {
     Console.WriteLine("{0}[Operation results]", Indent);
     foreach (var operationResult in workloadResult.GetOperationResults())
     {
         Console.WriteLine("{0}{0}[Duration (ms):{1}]", Indent, operationResult.TimeTaken);
         Console.WriteLine("{0}{0}[Succeeded:{1}]", Indent, operationResult.Succeeded);
         Console.WriteLine("{0}{0}[Message:{1}]", Indent, operationResult.Message.RemoveNewLines());
     }
 }
        public virtual void Write(WorkloadResult workloadResult)
        {
            WriteIsolated(ConsoleColor.Yellow, () =>
            {
                OnWriteWorkloadResultShortInfo(workloadResult);
                OnWriteWorkloadGroupedFailedOperations(workloadResult);

                if (Verbose)
                {
                    OnWriteWorkloadResultVerboseInfo(workloadResult);
                }

                Console.WriteLine();
            });
        }
        protected virtual void OnWriteWorkloadGroupedFailedOperations(WorkloadResult workloadResult)
        {
            var failedOperations = workloadResult.GetGroupedFailedOperations();

            if (!failedOperations.Any())
            {
                return;
            }

            OnWrite(ConsoleColor.Magenta, () =>
            {
                Console.WriteLine("{0}[Grouped failed operations: #{1}]", Indent, failedOperations.Count);

                foreach (var failedOperation in failedOperations)
                {
                    Console.WriteLine("{0}{0}[Message:{1}]", Indent, failedOperation.Key.RemoveNewLines());
                    Console.WriteLine("{0}{0}[Count:{1}]", Indent, failedOperation.Value);
                }
            });
        }
        protected virtual void OnWriteWorkloadResultShortInfo(WorkloadResult workloadResult)
        {
            WriteIsolated(ConsoleColor.Yellow, () =>
            {
                Console.WriteLine();
                Console.WriteLine("[Completed workload: {0}]", workloadResult.Description);
                Console.WriteLine("{0}[Workload size: {1}]", Indent, workloadResult.WorkloadSize);
                Console.WriteLine("{0}[Total docsize: {1}]", Indent, workloadResult.GetTotalDocSize());
                Console.WriteLine("{0}[Total operations: {1}]", Indent, workloadResult.CountOperations());
                Console.WriteLine("{0}[Failed operations: {1}]", Indent, workloadResult.CountFailedOperations());
                Console.WriteLine("{0}[Total time (ms): {1}]", Indent, workloadResult.TimeTaken.TotalMilliseconds);
                Console.WriteLine("{0}[Avg operations per/second: {1}]", Indent, Math.Round(workloadResult.CountOperations() / workloadResult.TimeTaken.TotalSeconds));

                if (workloadResult.HasPerOperationTimings())
                {
                    Console.WriteLine("{0}[Avg operation time (ms): {1}]", Indent, workloadResult.GetAverageOperationMs());
                    Console.WriteLine("{0}[Min successful operation time (ms): {1}]", Indent, workloadResult.GetSuccessfulOperationMinDurationMs());
                    Console.WriteLine("{0}[Max successful operation time (ms): {1}]", Indent, workloadResult.GetSuccessfulOperationMaxDurationMs());
                    Console.WriteLine("{0}[95th percentile operation time (ms): {1}]", Indent, workloadResult.GetSuccessfullOperationPercentile(0.95));
                    Console.WriteLine("{0}[98th percentile operation time (ms): {1}]", Indent, workloadResult.GetSuccessfullOperationPercentile(0.98));
                    Console.WriteLine("{0}[99th percentile operation time (ms): {1}]", Indent, workloadResult.GetSuccessfullOperationPercentile(0.99));
                }
            });
        }
Example #5
0
        private Task CreateWorkloadTask(IBucket bucket, int workloadIndex, int index, WorkloadResult workloadResult)
        {
            Func <TimeSpan> getTiming;

            if (_enableTiming)
            {
                var sw = Stopwatch.StartNew();
                getTiming = () => sw.Elapsed;
            }
            else
            {
                getTiming = () => TimeSpan.Zero;
            }

            try
            {
                return(OnExecuteStep(bucket, workloadIndex, index, getTiming)
                       .ContinueWith(task => task.IsFaulted
                        ? workloadResult.Register(new WorkloadOperationResult(task.Exception, getTiming()))
                        : workloadResult.Register(task.Result)));
            }
            catch (Exception ex)
            {
                return(workloadResult.Register(new WorkloadOperationResult(ex, getTiming())));
            }
        }