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 }