func()

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
}