From dd29bd399915eb515aa1984ac0a236a2a46db0da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Miri=C4=87?= Date: Tue, 15 Oct 2019 11:19:45 +0200 Subject: [PATCH] refactor(ui): bring back SummaryData, minor cleanup As per [1], it would be preferable to keep this struct. Though I renamed some fields and removed the dependency on the entire lib.Options, since it only requires one value. This also renames Summary.Write to Summary.SummarizeMetrics, as it's a more accurate description of what happens, despite of the "Summary.Summarize" stutter. [1]: https://github.com/loadimpact/k6/pull/1143#discussion_r334360502 --- cmd/run.go | 9 +++++++-- ui/summary.go | 19 +++++++++++++------ ui/summary_test.go | 10 ++++++++-- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/cmd/run.go b/cmd/run.go index 6de0045ffdf..ff44b920cba 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -451,8 +451,13 @@ a commandline interface for interacting with it.`, } fprintf(stdout, "\n") - s.Write(stdout, "", engine.Executor.GetRunner().GetDefaultGroup(), - engine.Executor.GetTime(), conf.SummaryTimeUnit.String, engine.Metrics) + s.SummarizeMetrics(stdout, "", ui.SummaryData{ + Metrics: engine.Metrics, + RootGroup: engine.Executor.GetRunner().GetDefaultGroup(), + Time: engine.Executor.GetTime(), + TimeUnit: conf.Options.SummaryTimeUnit.String, + }) + fprintf(stdout, "\n") } diff --git a/ui/summary.go b/ui/summary.go index 4b483388838..84fee0e93a9 100644 --- a/ui/summary.go +++ b/ui/summary.go @@ -370,11 +370,18 @@ func (s *Summary) summarizeMetrics(w io.Writer, indent string, t time.Duration, } } -// Write writes the metrics summary to w -func (s *Summary) Write(w io.Writer, indent string, group *lib.Group, - t time.Duration, timeUnit string, metrics map[string]*stats.Metric) { - if group != nil { - summarizeGroup(w, indent+" ", group) +// SummaryData represents data passed to Summary.SummarizeMetrics +type SummaryData struct { + Metrics map[string]*stats.Metric + RootGroup *lib.Group + Time time.Duration + TimeUnit string +} + +// SummarizeMetrics creates a summary of provided metrics and writes it to w. +func (s *Summary) SummarizeMetrics(w io.Writer, indent string, data SummaryData) { + if data.RootGroup != nil { + summarizeGroup(w, indent+" ", data.RootGroup) } - s.summarizeMetrics(w, indent+" ", t, timeUnit, metrics) + s.summarizeMetrics(w, indent+" ", data.Time, data.TimeUnit, data.Metrics) } diff --git a/ui/summary_test.go b/ui/summary_test.go index e053c209b4d..96595ecac37 100644 --- a/ui/summary_test.go +++ b/ui/summary_test.go @@ -57,7 +57,7 @@ func TestSummary(t *testing.T) { } }) - t.Run("Write", func(t *testing.T) { + t.Run("SummarizeMetrics", func(t *testing.T) { var ( checksOut = " ✓ checks......: 100.00% ✓ 3 ✗ 0 \n" countOut = " ✗ http_reqs...: 3 3/s\n" @@ -80,7 +80,13 @@ func TestSummary(t *testing.T) { t.Run(fmt.Sprintf("%v", tc.stats), func(t *testing.T) { var w bytes.Buffer s, _ := NewSummary(tc.stats) - s.Write(&w, " ", nil, time.Second, "", metrics) + + s.SummarizeMetrics(&w, " ", SummaryData{ + Metrics: metrics, + RootGroup: nil, + Time: time.Second, + TimeUnit: "", + }) assert.Equal(t, tc.expected, w.String()) }) }