From 00450d862d9bfcd4291752916c756bfa4101b798 Mon Sep 17 00:00:00 2001 From: lilasxie Date: Mon, 27 May 2024 13:34:27 +0800 Subject: [PATCH] test: add some missing test cases --- metrics/counter_float_64_test.go | 9 ++++- metrics/counter_test.go | 31 ++++++++++++++++- metrics/gauge_test.go | 60 ++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 2 deletions(-) diff --git a/metrics/counter_float_64_test.go b/metrics/counter_float_64_test.go index c21bd3307f..e56766f134 100644 --- a/metrics/counter_float_64_test.go +++ b/metrics/counter_float_64_test.go @@ -25,9 +25,16 @@ func BenchmarkCounterFloat64Parallel(b *testing.B) { } wg.Done() }() + wg.Add(1) + go func() { + for i := 0; i < b.N; i++ { + c.Dec(1.0) + } + wg.Done() + }() } wg.Wait() - if have, want := c.Snapshot().Count(), 10.0*float64(b.N); have != want { + if have, want := c.Snapshot().Count(), float64(0); have != want { b.Fatalf("have %f want %f", have, want) } } diff --git a/metrics/counter_test.go b/metrics/counter_test.go index 1b15b23f21..3909bef0b9 100644 --- a/metrics/counter_test.go +++ b/metrics/counter_test.go @@ -1,6 +1,9 @@ package metrics -import "testing" +import ( + "sync" + "testing" +) func BenchmarkCounter(b *testing.B) { c := NewCounter() @@ -10,6 +13,32 @@ func BenchmarkCounter(b *testing.B) { } } +func BenchmarkCounterParallel(b *testing.B) { + c := NewCounter() + b.ResetTimer() + var wg sync.WaitGroup + for i := 0; i < 10; i++ { + wg.Add(1) + go func() { + for i := 0; i < b.N; i++ { + c.Inc(1) + } + wg.Done() + }() + wg.Add(1) + go func() { + for i := 0; i < b.N; i++ { + c.Dec(1) + } + wg.Done() + }() + } + wg.Wait() + if have, want := c.Snapshot().Count(), int64(0); have != want { + b.Fatalf("have %d want %d", have, want) + } +} + func TestCounterClear(t *testing.T) { c := NewCounter() c.Inc(1) diff --git a/metrics/gauge_test.go b/metrics/gauge_test.go index f2ba930bc4..4982915f09 100644 --- a/metrics/gauge_test.go +++ b/metrics/gauge_test.go @@ -1,6 +1,7 @@ package metrics import ( + "sync" "testing" ) @@ -12,6 +13,65 @@ func BenchmarkGauge(b *testing.B) { } } +func BenchmarkGaugeIncDecParallel(b *testing.B) { + g := NewGauge() + b.ResetTimer() + var wg sync.WaitGroup + for i := 0; i < 10; i++ { + wg.Add(1) + go func() { + for i := 0; i < b.N; i++ { + g.Inc(1) + } + wg.Done() + }() + wg.Add(1) + go func() { + for i := 0; i < b.N; i++ { + g.Dec(1) + } + wg.Done() + }() + } + wg.Wait() + if have, want := g.Snapshot().Value(), int64(0); have != want { + b.Fatalf("have %d want %d", have, want) + } +} + +func TestGaugeUpdateIfGt(t *testing.T) { + g := NewGauge() + g.Update(int64(47)) + g.UpdateIfGt(int64(0)) + if v := g.Snapshot().Value(); v != 47 { + t.Errorf("g.Value(): 47 != %v\n", v) + } + g.UpdateIfGt(int64(58)) + if v := g.Snapshot().Value(); v != 58 { + t.Errorf("g.Value(): 58 != %v\n", v) + } +} + +func TestGaugeUpdateIfGtParallel(t *testing.T) { + g := NewGauge() + g.Update(int64(45)) + if v := g.Snapshot().Value(); v != 45 { + t.Errorf("g.Value(): 45 != %v\n", v) + } + var wg sync.WaitGroup + for i := 50; i >= 40; i-- { + wg.Add(1) + go func(i int) { + g.UpdateIfGt(int64(i)) + wg.Done() + }(i) + } + wg.Wait() + if v := g.Snapshot().Value(); v != 50 { + t.Errorf("g.Value(): 50 != %v\n", v) + } +} + func TestGaugeSnapshot(t *testing.T) { g := NewGauge() g.Update(int64(47))