From 6923857ce480ce1c5d67a0b376f8ebf7852316ae Mon Sep 17 00:00:00 2001 From: John Fercher <4752636+johnfercher@users.noreply.github.com> Date: Tue, 10 Dec 2024 10:45:47 -0300 Subject: [PATCH] add report tests (#500) --- .gitignore | 4 +- pkg/metrics/metrics_test.go | 118 ++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b1536607..10ca703f 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,6 @@ ignore.sh .vscode -node_modules/* \ No newline at end of file +node_modules/* + +report-test-demo.txt \ No newline at end of file diff --git a/pkg/metrics/metrics_test.go b/pkg/metrics/metrics_test.go index 6ff799ed..74a51f15 100644 --- a/pkg/metrics/metrics_test.go +++ b/pkg/metrics/metrics_test.go @@ -264,3 +264,121 @@ func TestSizeMetric_String(t *testing.T) { // Assert assert.Equal(t, "keyMetric -> 2000.00b", s) } + +func TestReport_String(t *testing.T) { + t.Run("when formating, then do it correctly", func(t *testing.T) { + // Arrange + report := &metrics.Report{ + TimeMetrics: []metrics.TimeMetric{ + { + Key: "keyMetric", + Times: []*metrics.Time{ + { + Value: 60, + Scale: metrics.Nano, + }, + { + Value: 100, + Scale: metrics.Milli, + }, + }, + Avg: &metrics.Time{ + Value: 100, + Scale: metrics.Milli, + }, + }, + }, + } + + // Act + s := report.String() + + // Assert + assert.Equal(t, "keyMetric -> avg: 100.00ms, executions: [60.00ns, 100.00ms]", s) + }) +} + +func TestReport_Normalize(t *testing.T) { + t.Run("when normalize, do it correctly", func(t *testing.T) { + // Arrange + report := &metrics.Report{ + TimeMetrics: []metrics.TimeMetric{ + { + Key: "keyMetric", + Times: []*metrics.Time{ + { + Value: 6000, + Scale: metrics.Nano, + }, + { + Value: 2000, + Scale: metrics.Micro, + }, + }, + Avg: &metrics.Time{ + Value: 100, + Scale: metrics.Milli, + }, + }, + }, + SizeMetric: metrics.SizeMetric{ + Key: "keyMetric", + Size: metrics.Size{ + Value: 2000, + Scale: metrics.Byte, + }, + }, + } + + // Act + normalized := report.Normalize() + + // Assert + assert.Equal(t, 2.0, normalized.SizeMetric.Size.Value) + assert.Equal(t, metrics.KiloByte, normalized.SizeMetric.Size.Scale) + assert.Equal(t, 6.0, normalized.TimeMetrics[0].Times[0].Value) + assert.Equal(t, metrics.Micro, normalized.TimeMetrics[0].Times[0].Scale) + assert.Equal(t, 2.0, normalized.TimeMetrics[0].Times[1].Value) + assert.Equal(t, metrics.Milli, normalized.TimeMetrics[0].Times[1].Scale) + }) +} + +func TestReport_Save(t *testing.T) { + t.Run("when saving, then do it correctly", func(t *testing.T) { + // Arrange + report := &metrics.Report{ + TimeMetrics: []metrics.TimeMetric{ + { + Key: "keyMetric", + Times: []*metrics.Time{ + { + Value: 6000, + Scale: metrics.Nano, + }, + { + Value: 2000, + Scale: metrics.Micro, + }, + }, + Avg: &metrics.Time{ + Value: 100, + Scale: metrics.Milli, + }, + }, + }, + SizeMetric: metrics.SizeMetric{ + Key: "keyMetric", + Size: metrics.Size{ + Value: 2000, + Scale: metrics.Byte, + }, + }, + } + + // Act + err := report.Save("report-test-demo.txt") + + // Assert + assert.NoError(t, err) + }) +}