var now … type Phase … func (phase *Phase) ended() bool { … } // End marks the phase as ended, unless it had already been ended before. func (phase *Phase) End() { … } func (phase *Phase) label() string { … } func (phase *Phase) duration() time.Duration { … } func (phase *Phase) humanReadable() string { … } type TestPhaseTimer … // NewTestPhaseTimer creates a new TestPhaseTimer. func NewTestPhaseTimer() *TestPhaseTimer { … } // StartPhase starts a new phase. // sequenceNumber is an integer prepended to phaseName in the output, such that lexicographic sorting // of phases in perfdash reconstructs the order of execution. Unfortunately it needs to be // provided manually, since a simple incrementing counter would have the effect that inserting // a new phase would renumber subsequent phases, breaking the continuity of historical records. func (timer *TestPhaseTimer) StartPhase(sequenceNumber int, phaseName string) *Phase { … } // SummaryKind returns the summary of test summary. func (timer *TestPhaseTimer) SummaryKind() string { … } // PrintHumanReadable returns durations of all phases. func (timer *TestPhaseTimer) PrintHumanReadable() string { … } // PrintJSON returns durations of all phases with JSON format. func (timer *TestPhaseTimer) PrintJSON() string { … }