Skip to content

Commit b5feba5

Browse files
binbin0325louyuting
authored andcommitted
enhanced core/stat module unit test
1 parent cecfc86 commit b5feba5

File tree

4 files changed

+146
-0
lines changed

4 files changed

+146
-0
lines changed

core/stat/base/bucket_leap_array_test.go

+34
Original file line numberDiff line numberDiff line change
@@ -125,3 +125,37 @@ func TestBucketLeapArray_resetBucketTo(t *testing.T) {
125125
t.Errorf("BucketLeapArray.ResetBucketTo() execute fail.")
126126
}
127127
}
128+
129+
func TestAddCount(t *testing.T) {
130+
bla := NewBucketLeapArray(SampleCount, IntervalInMs)
131+
bla.AddCount(base.MetricEventPass, 1)
132+
passCount := bla.Count(base.MetricEventPass)
133+
assert.True(t, passCount == 1)
134+
}
135+
136+
func TestMinRt(t *testing.T) {
137+
t.Run("TestMinRt_Default", func(t *testing.T) {
138+
bla := NewBucketLeapArray(SampleCount, IntervalInMs)
139+
minRt := bla.MinRt()
140+
assert.True(t, minRt == base.DefaultStatisticMaxRt)
141+
})
142+
143+
t.Run("TestMinRt", func(t *testing.T) {
144+
bla := NewBucketLeapArray(SampleCount, IntervalInMs)
145+
bla.AddCount(base.MetricEventRt, 100)
146+
minRt := bla.MinRt()
147+
assert.True(t, minRt == 100)
148+
})
149+
}
150+
151+
func TestGetIntervalInSecond(t *testing.T) {
152+
bla := NewBucketLeapArray(SampleCount, IntervalInMs)
153+
second := bla.GetIntervalInSecond()
154+
assert.True(t, float64(IntervalInMs)/1000.0 == second)
155+
}
156+
157+
func TestDataType(t *testing.T) {
158+
bla := NewBucketLeapArray(SampleCount, IntervalInMs)
159+
dataType := bla.DataType()
160+
assert.True(t, dataType == "MetricBucket")
161+
}

core/stat/base/leap_array_test.go

+21
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"testing"
77
"unsafe"
88

9+
"github.com/stretchr/testify/assert"
10+
911
"github.com/alibaba/sentinel-golang/util"
1012
"github.com/stretchr/testify/mock"
1113
)
@@ -264,3 +266,22 @@ func Test_leapArray_isBucketDeprecated_normal(t *testing.T) {
264266
})
265267
}
266268
}
269+
270+
func TestNewLeapArray(t *testing.T) {
271+
t.Run("TestNewLeapArray_Normal", func(t *testing.T) {
272+
_, err := NewLeapArray(SampleCount, IntervalInMs, &leapArrayMock{})
273+
assert.Nil(t, err)
274+
})
275+
276+
t.Run("TestNewLeapArray_Generator_Nil", func(t *testing.T) {
277+
leapArray, err := NewLeapArray(SampleCount, IntervalInMs, nil)
278+
assert.Nil(t, leapArray)
279+
assert.Error(t, err, "Invalid parameters, BucketGenerator is nil")
280+
})
281+
282+
t.Run("TestNewLeapArray_Invalid_Parameters", func(t *testing.T) {
283+
leapArray, err := NewLeapArray(30, IntervalInMs, nil)
284+
assert.Nil(t, leapArray)
285+
assert.Error(t, err, "Invalid parameters, intervalInMs is 10000, sampleCount is 30")
286+
})
287+
}

core/stat/base/metric_bucket_test.go

+9
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"unsafe"
77

88
"github.com/alibaba/sentinel-golang/core/base"
9+
"github.com/stretchr/testify/assert"
910
)
1011

1112
func Test_metricBucket_MemSize(t *testing.T) {
@@ -112,3 +113,11 @@ func Test_metricBucket_Concurrent(t *testing.T) {
112113
t.Error("unexpect count MetricEventRt")
113114
}
114115
}
116+
117+
func Test_Reset(t *testing.T) {
118+
mb := NewMetricBucket()
119+
mb.AddRt(100)
120+
mb.reset()
121+
rt := mb.MinRt()
122+
assert.True(t, rt == base.DefaultStatisticMaxRt)
123+
}

core/stat/base/sliding_window_metric_test.go

+82
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package base
33
import (
44
"testing"
55

6+
"github.com/alibaba/sentinel-golang/util"
7+
68
"github.com/alibaba/sentinel-golang/core/base"
79
"github.com/stretchr/testify/assert"
810
)
@@ -166,3 +168,83 @@ func TestSlidingWindowMetric_GetIntervalSumWithTime(t *testing.T) {
166168
})
167169
}
168170
}
171+
172+
func TestGetSum(t *testing.T) {
173+
got, err := NewSlidingWindowMetric(4, 2000, NewBucketLeapArray(SampleCount, IntervalInMs))
174+
assert.True(t, err == nil && got != nil)
175+
passSum := got.GetSum(base.MetricEventPass)
176+
assert.True(t, passSum == 0)
177+
}
178+
179+
func TestGetQPS(t *testing.T) {
180+
got, err := NewSlidingWindowMetric(4, 2000, NewBucketLeapArray(SampleCount, IntervalInMs))
181+
assert.True(t, err == nil && got != nil)
182+
qps := got.GetQPS(base.MetricEventPass)
183+
assert.True(t, qps == 0)
184+
}
185+
186+
func TestGetPreviousQPS(t *testing.T) {
187+
got, err := NewSlidingWindowMetric(4, 2000, NewBucketLeapArray(SampleCount, IntervalInMs))
188+
assert.True(t, err == nil && got != nil)
189+
previousQPS := got.GetPreviousQPS(base.MetricEventPass)
190+
assert.True(t, previousQPS == 0)
191+
}
192+
193+
func TestGetQPSWithTime(t *testing.T) {
194+
got, err := NewSlidingWindowMetric(4, 2000, NewBucketLeapArray(SampleCount, IntervalInMs))
195+
assert.True(t, err == nil && got != nil)
196+
qps := got.getQPSWithTime(util.CurrentTimeMillis(), base.MetricEventPass)
197+
assert.True(t, qps == 0)
198+
}
199+
200+
func TestGetMaxOfSingleBucket(t *testing.T) {
201+
got, err := NewSlidingWindowMetric(4, 2000, NewBucketLeapArray(SampleCount, IntervalInMs))
202+
assert.True(t, err == nil && got != nil)
203+
got.real.AddCount(base.MetricEventPass, 100)
204+
max := got.GetMaxOfSingleBucket(base.MetricEventPass)
205+
assert.True(t, max == 100)
206+
}
207+
208+
func TestMinRT(t *testing.T) {
209+
got, err := NewSlidingWindowMetric(4, 2000, NewBucketLeapArray(SampleCount, IntervalInMs))
210+
assert.True(t, err == nil && got != nil)
211+
minRt := got.MinRT()
212+
assert.True(t, minRt == float64(base.DefaultStatisticMaxRt))
213+
}
214+
215+
func TestAvgRT(t *testing.T) {
216+
got, err := NewSlidingWindowMetric(4, 2000, NewBucketLeapArray(SampleCount, IntervalInMs))
217+
assert.True(t, err == nil && got != nil)
218+
got.real.AddCount(base.MetricEventRt, 100)
219+
got.real.AddCount(base.MetricEventComplete, 100)
220+
avgRT := got.AvgRT()
221+
assert.True(t, avgRT == 1)
222+
}
223+
224+
func TestMetricItemFromBuckets(t *testing.T) {
225+
got, err := NewSlidingWindowMetric(4, 2000, NewBucketLeapArray(SampleCount, IntervalInMs))
226+
assert.True(t, err == nil && got != nil)
227+
got.real.AddCount(base.MetricEventPass, 100)
228+
item := got.metricItemFromBuckets(util.CurrentTimeMillis(), got.real.data.array.data)
229+
assert.True(t, item.PassQps == 100)
230+
}
231+
232+
func TestMetricItemFromBucket(t *testing.T) {
233+
got, err := NewSlidingWindowMetric(4, 2000, NewBucketLeapArray(SampleCount, IntervalInMs))
234+
assert.True(t, err == nil && got != nil)
235+
got.real.AddCount(base.MetricEventPass, 100)
236+
currentBucket, err := got.real.data.CurrentBucket(&leapArrayMock{})
237+
assert.Nil(t, err)
238+
item := got.metricItemFromBucket(currentBucket)
239+
assert.True(t, item.PassQps == 100)
240+
}
241+
242+
func TestSecondMetricsOnCondition(t *testing.T) {
243+
got, err := NewSlidingWindowMetric(4, 2000, NewBucketLeapArray(SampleCount, IntervalInMs))
244+
assert.True(t, err == nil && got != nil)
245+
start, end := got.getBucketStartRange(util.CurrentTimeMillis())
246+
items := got.SecondMetricsOnCondition(func(ws uint64) bool {
247+
return ws >= start && ws <= end
248+
})
249+
assert.True(t, len(items) == 1)
250+
}

0 commit comments

Comments
 (0)