Ejemplo n.º 1
0
        private static void AddSingleCallResult(IRpcService service, string calledMethod, TimeSpan elapsed)
        {
            if (!initialized)
            {
                return;
            }

            if (SingleCallResults.TryGetValue(service, out TestSummary summary))
            {
                summary.RegisterSingleCallResult(calledMethod, elapsed);
            }
        }
Ejemplo n.º 2
0
        private static void DumpSingleCallsSummary(OutputWriter writer, UnitOfTimeFormatter timeFormatter)
        {
            if (SingleCallResults.Count == 0 || SingleCallResults.First().Value.Details.Count == 0)
            {
                return;
            }

            List <IRpcService> services      = SingleCallResults.Keys.ToList();
            List <string>      testedMethods = SingleCallResults.First().Value.Details.Keys.ToList();

            writer?.WriteLine("Summary of batch method calls:");
            TableBuilder singleCallsTable = new TableBuilder(writer)
                                            .AddColumn(new ColumnDefinition {
                Label = "Tested Method", Width = 1 + testedMethods.Max(methodName => methodName.Length), Alignment = ColumnAlignment.Left
            })
                                            .AddColumn(new ColumnDefinition {
                Label = "Samples", Width = 10, Alignment = ColumnAlignment.Left
            })
                                            .AddColumns(services.Select(service => new ColumnDefinition {
                Label = $"{service.Name} (min; max; avg)", Width = 30, Alignment = ColumnAlignment.Left
            }).ToArray())
                                            .Prepare()
                                            .Start()
            ;

            foreach (string testedMethod in testedMethods)
            {
                List <string> values = new List <string> {
                    testedMethod,                                                                     //tested method
                    SingleCallResults.Values.FirstOrDefault()?.Details[testedMethod].Count.ToString() // samples count.
                };

                values.AddRange(
                    from service in services
                    let serviceResults                                                   = SingleCallResults[service].Details[testedMethod]
                                                             let min                     = timeFormatter.Format(serviceResults.Min(r => r.Elapsed), false)
                                                                                 let max = timeFormatter.Format(serviceResults.Max(r => r.Elapsed), false)
                                                                                           let average = timeFormatter.Format(TimeSpan.FromTicks((long)serviceResults.Average(r => r.Elapsed.Ticks)), false)
                                                                                                         select $"{min}; {max}; {average} ({timeFormatter.GetUnitString()})"
                    );

                singleCallsTable.DrawRow(values.ToArray());
            }

            singleCallsTable.End();
        }