Implement per-second rate behavior for rate().

pull/43/head
Julius Volz 2013-01-22 01:49:00 +01:00
parent 93670aa129
commit 49c87348b5
1 changed files with 10 additions and 1 deletions

View File

@ -98,7 +98,16 @@ func deltaImpl(timestamp *time.Time, args []Node) interface{} {
// === rate(node *MatrixNode) ===
func rateImpl(timestamp *time.Time, args []Node) interface{} {
args = append(args, &ScalarLiteral{value: 1})
return deltaImpl(timestamp, args)
vector := deltaImpl(timestamp, args).(Vector)
// TODO: could be other type of MatrixNode in the future (right now, only
// MatrixLiteral exists). Find a better way of getting the duration of a
// matrix, such as looking at the samples themselves.
interval := args[0].(*MatrixLiteral).interval
for _, sample := range vector {
sample.Value /= model.SampleValue(interval / time.Second)
}
return vector
}
// === sampleVectorImpl() ===