in metric/latency.go [32:54]
func (m *LatencyMetric) Setup(options interface{}) error {
opts, ok := options.(LatencyMetricOptions)
if !ok {
return tester.ErrInvalidOptions
}
unit := opts.GetUnit()
opts.AddRecorder(func(msg interface{}) {
switch msg := msg.(type) {
case *bender.StartEvent:
m.points = make([]tester.DataPoint, 0)
case *bender.EndRequestEvent:
m.mutex.Lock()
m.points = append(m.points, tester.DataPoint{
Time: time.Unix(msg.Start, 0),
Value: float64(msg.End-msg.Start) / float64(unit),
})
m.mutex.Unlock()
}
})
return nil
}