From fa4dc151cac07d62be47bccb697f3d338914597a Mon Sep 17 00:00:00 2001 From: Kevin Wan Date: Wed, 13 Oct 2021 22:42:54 +0800 Subject: [PATCH] test: add more tests (#1134) --- core/logx/limitedexecutor_test.go | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 core/logx/limitedexecutor_test.go diff --git a/core/logx/limitedexecutor_test.go b/core/logx/limitedexecutor_test.go new file mode 100644 index 00000000..80615bda --- /dev/null +++ b/core/logx/limitedexecutor_test.go @@ -0,0 +1,62 @@ +package logx + +import ( + "sync/atomic" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/tal-tech/go-zero/core/timex" +) + +func TestLimitedExecutor_logOrDiscard(t *testing.T) { + tests := []struct { + name string + threshold time.Duration + lastTime time.Duration + discarded uint32 + executed bool + }{ + { + name: "nil executor", + executed: true, + }, + { + name: "regular", + threshold: time.Hour, + lastTime: timex.Now(), + discarded: 10, + executed: false, + }, + { + name: "slow", + threshold: time.Duration(1), + lastTime: -1000, + discarded: 10, + executed: true, + }, + } + + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + t.Parallel() + + executor := newLimitedExecutor(0) + executor.threshold = test.threshold + executor.discarded = test.discarded + executor.lastTime.Set(test.lastTime) + + var run int32 + executor.logOrDiscard(func() { + atomic.AddInt32(&run, 1) + }) + if test.executed { + assert.Equal(t, int32(1), atomic.LoadInt32(&run)) + } else { + assert.Equal(t, int32(0), atomic.LoadInt32(&run)) + assert.Equal(t, test.discarded+1, atomic.LoadUint32(&executor.discarded)) + } + }) + } +}