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  }