github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/sync/initial-sync/fsm_benchmark_test.go (about)

     1  package initialsync
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/prysmaticlabs/prysm/shared/testutil/require"
     7  )
     8  
     9  func BenchmarkStateMachine_trigger(b *testing.B) {
    10  	sm := newStateMachineManager()
    11  
    12  	handlerFn := func(m *stateMachine, in interface{}) (id stateID, err error) {
    13  		response, ok := in.(*fetchRequestParams)
    14  		if !ok {
    15  			return 0, errInputNotFetchRequestParams
    16  		}
    17  		_ = response.count
    18  		return stateScheduled, nil
    19  	}
    20  
    21  	sm.addEventHandler(eventTick, stateNew, handlerFn)
    22  	sm.addEventHandler(eventTick, stateScheduled, handlerFn)
    23  	sm.addEventHandler(eventTick, stateDataParsed, handlerFn)
    24  	sm.addEventHandler(eventTick, stateSkipped, handlerFn)
    25  	sm.addEventHandler(eventTick, stateSent, handlerFn)
    26  	sm.addStateMachine(64)
    27  
    28  	b.ReportAllocs()
    29  	b.ResetTimer()
    30  
    31  	for i := 0; i < b.N; i++ {
    32  		data := &fetchRequestParams{
    33  			start: 23,
    34  			count: 32,
    35  		}
    36  		err := sm.machines[64].trigger(eventTick, data)
    37  		require.NoError(b, err)
    38  	}
    39  }