@@ -3,6 +3,8 @@ package base
3
3
import (
4
4
"testing"
5
5
6
+ "github.com/alibaba/sentinel-golang/util"
7
+
6
8
"github.com/alibaba/sentinel-golang/core/base"
7
9
"github.com/stretchr/testify/assert"
8
10
)
@@ -166,3 +168,83 @@ func TestSlidingWindowMetric_GetIntervalSumWithTime(t *testing.T) {
166
168
})
167
169
}
168
170
}
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