github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/system/trace/workload_statistic_test.go (about)

     1  package trace
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  )
     7  
     8  func TestWorkload(t *testing.T) {
     9  	abciWorkload := time.Second
    10  	lastRunWorkload := 2 * time.Minute
    11  	persistWorkload := time.Second
    12  	expectWorkload := int64((lastRunWorkload + persistWorkload).Seconds())
    13  
    14  	trc := NewTracer(ApplyBlock)
    15  	trc.EnableSummary()
    16  	trc.SetWorkloadStatistic(GetApplyBlockWorkloadSttistic())
    17  
    18  	defer func() {
    19  		GetElapsedInfo().AddInfo(RunTx, trc.Format())
    20  
    21  		time.Sleep(time.Second)
    22  		summary := GetApplyBlockWorkloadSttistic().summary()
    23  		for _, sum := range summary {
    24  			workload := int64(sum.workload.Seconds())
    25  			if workload != expectWorkload {
    26  				t.Errorf("period %d: expect workload %v but got %v\n", sum.period, expectWorkload, workload)
    27  			}
    28  		}
    29  	}()
    30  
    31  	trc.Pin(Abci)
    32  	time.Sleep(abciWorkload)
    33  	GetApplyBlockWorkloadSttistic().Add(LastRun, time.Now(), lastRunWorkload)
    34  
    35  	trc.Pin(Persist)
    36  	time.Sleep(persistWorkload)
    37  
    38  }