github.com/lingyao2333/mo-zero@v1.4.1/core/stat/metrics_test.go (about) 1 package stat 2 3 import ( 4 "strconv" 5 "testing" 6 "time" 7 8 "github.com/lingyao2333/mo-zero/core/logx" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestMetrics(t *testing.T) { 13 logx.Disable() 14 DisableLog() 15 defer logEnabled.Set(true) 16 17 counts := []int{1, 5, 10, 100, 1000, 1000} 18 for _, count := range counts { 19 m := NewMetrics("foo") 20 m.SetName("bar") 21 for i := 0; i < count; i++ { 22 m.Add(Task{ 23 Duration: time.Millisecond * time.Duration(i), 24 Description: strconv.Itoa(i), 25 }) 26 } 27 m.AddDrop() 28 var writer mockedWriter 29 SetReportWriter(&writer) 30 m.executor.Flush() 31 assert.Equal(t, "bar", writer.report.Name) 32 } 33 } 34 35 type mockedWriter struct { 36 report *StatReport 37 } 38 39 func (m *mockedWriter) Write(report *StatReport) error { 40 m.report = report 41 return nil 42 }