From 625c4f1f532ef9d26a80028cecb4a0031cf4c92d Mon Sep 17 00:00:00 2001 From: Cyril Tovena Date: Wed, 7 Aug 2019 11:18:53 -0400 Subject: [PATCH] Move to milliseconds for samples to follow prometheus convention --- pkg/logql/engine_test.go | 134 ++++++++++++++++----------------- pkg/logql/range_vector.go | 10 ++- pkg/logql/range_vector_test.go | 4 +- 3 files changed, 75 insertions(+), 73 deletions(-) diff --git a/pkg/logql/engine_test.go b/pkg/logql/engine_test.go index 9f8dcde020..27788cfdba 100644 --- a/pkg/logql/engine_test.go +++ b/pkg/logql/engine_test.go @@ -60,7 +60,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { []SelectParams{ {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app="foo"}|~".+bar"`}}, }, - promql.Vector{promql.Sample{Point: promql.Point{T: 60000000000, V: 1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}}, + promql.Vector{promql.Sample{Point: promql.Point{T: 60 * 1000, V: 1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}}, }, { `rate({app="foo"}[30s])`, time.Unix(60, 0), logproto.FORWARD, 10, @@ -71,7 +71,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { []SelectParams{ {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(30, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app="foo"}`}}, }, - promql.Vector{promql.Sample{Point: promql.Point{T: 60000000000, V: 0.5}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}}, + promql.Vector{promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.5}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}}, }, { `count_over_time({app="foo"} |~".+bar" [1m])`, time.Unix(60, 0), logproto.BACKWARD, 10, @@ -81,7 +81,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { []SelectParams{ {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app="foo"}|~".+bar"`}}, }, - promql.Vector{promql.Sample{Point: promql.Point{T: 60000000000, V: 6}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}}, + promql.Vector{promql.Sample{Point: promql.Point{T: 60 * 1000, V: 6}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}}, }, { `count_over_time(({app="foo"} |~".+bar")[5m])`, time.Unix(5*60, 0), logproto.BACKWARD, 10, @@ -91,7 +91,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { []SelectParams{ {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(5*60, 0), Limit: 0, Selector: `{app="foo"}|~".+bar"`}}, }, - promql.Vector{promql.Sample{Point: promql.Point{T: 5 * 60000000000, V: 30}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}}, + promql.Vector{promql.Sample{Point: promql.Point{T: 5 * 60 * 1000, V: 30}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}}, }, { `avg(count_over_time({app=~"foo|bar"} |~".+bar" [1m]))`, time.Unix(60, 0), logproto.FORWARD, 100, @@ -102,7 +102,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 6}, Metric: labels.Labels{}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 6}, Metric: labels.Labels{}}, }, }, { @@ -114,7 +114,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.1}, Metric: labels.Labels{}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.1}, Metric: labels.Labels{}}, }, }, { @@ -126,8 +126,8 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.2}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.2}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, }, }, { @@ -139,7 +139,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.2}, Metric: labels.Labels{}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.2}, Metric: labels.Labels{}}, }, }, { @@ -151,7 +151,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.4}, Metric: labels.Labels{}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.4}, Metric: labels.Labels{}}, }, }, { @@ -163,8 +163,8 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 6}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, - promql.Sample{Point: promql.Point{T: 60000000000, V: 6}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 6}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 6}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, }, }, { @@ -176,7 +176,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 2}, Metric: labels.Labels{}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 2}, Metric: labels.Labels{}}, }, }, { @@ -188,7 +188,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 9}, Metric: labels.Labels{}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 9}, Metric: labels.Labels{}}, }, }, { @@ -200,7 +200,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 12}, Metric: labels.Labels{}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 12}, Metric: labels.Labels{}}, }, }, { @@ -212,8 +212,8 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.25}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.25}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, }, }, { @@ -225,8 +225,8 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.25}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.25}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, }, }, { @@ -238,7 +238,7 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.25}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.25}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, }, }, { @@ -251,10 +251,10 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.25}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, - promql.Sample{Point: promql.Point{T: 60000000000, V: 1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "buzz"}}}, - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.2}, Metric: labels.Labels{labels.Label{Name: "app", Value: "fuzz"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.25}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "buzz"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.2}, Metric: labels.Labels{labels.Label{Name: "app", Value: "fuzz"}}}, }, }, { @@ -267,8 +267,8 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.2}, Metric: labels.Labels{labels.Label{Name: "app", Value: "fuzz"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.2}, Metric: labels.Labels{labels.Label{Name: "app", Value: "fuzz"}}}, }, }, { @@ -281,9 +281,9 @@ func TestEngine_NewInstantQuery(t *testing.T) { {&logproto.QueryRequest{Direction: logproto.FORWARD, Start: time.Unix(0, 0), End: time.Unix(60, 0), Limit: 0, Selector: `{app=~"foo|bar"}|~".+bar"`}}, }, promql.Vector{ - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.25}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, - promql.Sample{Point: promql.Point{T: 60000000000, V: 0.2}, Metric: labels.Labels{labels.Label{Name: "app", Value: "fuzz"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.25}, Metric: labels.Labels{labels.Label{Name: "app", Value: "bar"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.1}, Metric: labels.Labels{labels.Label{Name: "app", Value: "foo"}}}, + promql.Sample{Point: promql.Point{T: 60 * 1000, V: 0.2}, Metric: labels.Labels{labels.Label{Name: "app", Value: "fuzz"}}}, }, }, } { @@ -350,7 +350,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, - Points: []promql.Point{{T: 60000000000, V: 1}, {T: 120000000000, V: 1}}, + Points: []promql.Point{{T: 60 * 1000, V: 1}, {T: 120 * 1000, V: 1}}, }, }, }, @@ -365,7 +365,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, - Points: []promql.Point{{T: 60000000000, V: 0.5}, {T: 75000000000, V: 0.5}, {T: 90000000000, V: 0.5}, {T: 105000000000, V: 0.5}, {T: 120000000000, V: 0.5}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.5}, {T: 75 * 1000, V: 0.5}, {T: 90 * 1000, V: 0.5}, {T: 105 * 1000, V: 0.5}, {T: 120 * 1000, V: 0.5}}, }, }, }, @@ -380,7 +380,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, - Points: []promql.Point{{T: 60000000000, V: 6}, {T: 90000000000, V: 6}, {T: 120000000000, V: 6}}, + Points: []promql.Point{{T: 60 * 1000, V: 6}, {T: 90 * 1000, V: 6}, {T: 120 * 1000, V: 6}}, }, }, }, @@ -396,17 +396,17 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, Points: []promql.Point{ - {T: 300000000000, V: 30}, - {T: 330000000000, V: 30}, - {T: 360000000000, V: 30}, - {T: 390000000000, V: 30}, - {T: 420000000000, V: 30}, - {T: 450000000000, V: 30}, - {T: 480000000000, V: 30}, - {T: 510000000000, V: 30}, - {T: 540000000000, V: 30}, - {T: 570000000000, V: 30}, - {T: 600000000000, V: 30}, + {T: 300 * 1000, V: 30}, + {T: 330 * 1000, V: 30}, + {T: 360 * 1000, V: 30}, + {T: 390 * 1000, V: 30}, + {T: 420 * 1000, V: 30}, + {T: 450 * 1000, V: 30}, + {T: 480 * 1000, V: 30}, + {T: 510 * 1000, V: 30}, + {T: 540 * 1000, V: 30}, + {T: 570 * 1000, V: 30}, + {T: 600 * 1000, V: 30}, }, }, }, @@ -422,7 +422,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{}, - Points: []promql.Point{{T: 60000000000, V: 6}, {T: 90000000000, V: 6}, {T: 120000000000, V: 6}, {T: 150000000000, V: 6}, {T: 180000000000, V: 6}}, + Points: []promql.Point{{T: 60 * 1000, V: 6}, {T: 90 * 1000, V: 6}, {T: 120 * 1000, V: 6}, {T: 150 * 1000, V: 6}, {T: 180 * 1000, V: 6}}, }, }, }, @@ -437,7 +437,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{}, - Points: []promql.Point{{T: 60000000000, V: 0.1}, {T: 90000000000, V: 0.1}, {T: 120000000000, V: 0.1}, {T: 150000000000, V: 0.1}, {T: 180000000000, V: 0.1}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.1}, {T: 90 * 1000, V: 0.1}, {T: 120 * 1000, V: 0.1}, {T: 150 * 1000, V: 0.1}, {T: 180 * 1000, V: 0.1}}, }, }, }, @@ -452,11 +452,11 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "bar"}}, - Points: []promql.Point{{T: 60000000000, V: 0.2}, {T: 90000000000, V: 0.2}, {T: 120000000000, V: 0.2}, {T: 150000000000, V: 0.2}, {T: 180000000000, V: 0.2}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.2}, {T: 90 * 1000, V: 0.2}, {T: 120 * 1000, V: 0.2}, {T: 150 * 1000, V: 0.2}, {T: 180 * 1000, V: 0.2}}, }, promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, - Points: []promql.Point{{T: 60000000000, V: 0.1}, {T: 90000000000, V: 0.1}, {T: 120000000000, V: 0.1}, {T: 150000000000, V: 0.1}, {T: 180000000000, V: 0.1}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.1}, {T: 90 * 1000, V: 0.1}, {T: 120 * 1000, V: 0.1}, {T: 150 * 1000, V: 0.1}, {T: 180 * 1000, V: 0.1}}, }, }, }, @@ -471,7 +471,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{}, - Points: []promql.Point{{T: 60000000000, V: 0.2}, {T: 90000000000, V: 0.2}, {T: 120000000000, V: 0.2}, {T: 150000000000, V: 0.2}, {T: 180000000000, V: 0.2}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.2}, {T: 90 * 1000, V: 0.2}, {T: 120 * 1000, V: 0.2}, {T: 150 * 1000, V: 0.2}, {T: 180 * 1000, V: 0.2}}, }, }, }, @@ -486,7 +486,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{}, - Points: []promql.Point{{T: 60000000000, V: 0.4}, {T: 90000000000, V: 0.4}, {T: 120000000000, V: 0.4}, {T: 150000000000, V: 0.4}, {T: 180000000000, V: 0.4}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.4}, {T: 90 * 1000, V: 0.4}, {T: 120 * 1000, V: 0.4}, {T: 150 * 1000, V: 0.4}, {T: 180 * 1000, V: 0.4}}, }, }, }, @@ -501,11 +501,11 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "bar"}}, - Points: []promql.Point{{T: 60000000000, V: 12}, {T: 90000000000, V: 12}, {T: 120000000000, V: 12}, {T: 150000000000, V: 12}, {T: 180000000000, V: 12}}, + Points: []promql.Point{{T: 60 * 1000, V: 12}, {T: 90 * 1000, V: 12}, {T: 120 * 1000, V: 12}, {T: 150 * 1000, V: 12}, {T: 180 * 1000, V: 12}}, }, promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, - Points: []promql.Point{{T: 60000000000, V: 6}, {T: 90000000000, V: 6}, {T: 120000000000, V: 6}, {T: 150000000000, V: 6}, {T: 180000000000, V: 6}}, + Points: []promql.Point{{T: 60 * 1000, V: 6}, {T: 90 * 1000, V: 6}, {T: 120 * 1000, V: 6}, {T: 150 * 1000, V: 6}, {T: 180 * 1000, V: 6}}, }, }, }, @@ -520,7 +520,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{}, - Points: []promql.Point{{T: 60000000000, V: 2}, {T: 90000000000, V: 2}, {T: 120000000000, V: 2}, {T: 150000000000, V: 2}, {T: 180000000000, V: 2}}, + Points: []promql.Point{{T: 60 * 1000, V: 2}, {T: 90 * 1000, V: 2}, {T: 120 * 1000, V: 2}, {T: 150 * 1000, V: 2}, {T: 180 * 1000, V: 2}}, }, }, }, @@ -535,7 +535,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{}, - Points: []promql.Point{{T: 60000000000, V: 9}, {T: 90000000000, V: 9}, {T: 120000000000, V: 9}, {T: 150000000000, V: 9}, {T: 180000000000, V: 9}}, + Points: []promql.Point{{T: 60 * 1000, V: 9}, {T: 90 * 1000, V: 9}, {T: 120 * 1000, V: 9}, {T: 150 * 1000, V: 9}, {T: 180 * 1000, V: 9}}, }, }, }, @@ -550,7 +550,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{}, - Points: []promql.Point{{T: 60000000000, V: 12}, {T: 90000000000, V: 12}, {T: 120000000000, V: 12}, {T: 150000000000, V: 12}, {T: 180000000000, V: 12}}, + Points: []promql.Point{{T: 60 * 1000, V: 12}, {T: 90 * 1000, V: 12}, {T: 120 * 1000, V: 12}, {T: 150 * 1000, V: 12}, {T: 180 * 1000, V: 12}}, }, }, }, @@ -565,11 +565,11 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "bar"}}, - Points: []promql.Point{{T: 60000000000, V: 0.2}, {T: 90000000000, V: 0.2}, {T: 120000000000, V: 0.2}, {T: 150000000000, V: 0.2}, {T: 180000000000, V: 0.2}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.2}, {T: 90 * 1000, V: 0.2}, {T: 120 * 1000, V: 0.2}, {T: 150 * 1000, V: 0.2}, {T: 180 * 1000, V: 0.2}}, }, promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, - Points: []promql.Point{{T: 60000000000, V: 0.1}, {T: 90000000000, V: 0.1}, {T: 120000000000, V: 0.1}, {T: 150000000000, V: 0.1}, {T: 180000000000, V: 0.1}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.1}, {T: 90 * 1000, V: 0.1}, {T: 120 * 1000, V: 0.1}, {T: 150 * 1000, V: 0.1}, {T: 180 * 1000, V: 0.1}}, }, }, }, @@ -584,11 +584,11 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "bar"}}, - Points: []promql.Point{{T: 60000000000, V: 0.2}, {T: 90000000000, V: 0.2}, {T: 120000000000, V: 0.2}, {T: 150000000000, V: 0.2}, {T: 180000000000, V: 0.2}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.2}, {T: 90 * 1000, V: 0.2}, {T: 120 * 1000, V: 0.2}, {T: 150 * 1000, V: 0.2}, {T: 180 * 1000, V: 0.2}}, }, promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, - Points: []promql.Point{{T: 60000000000, V: 0.1}, {T: 90000000000, V: 0.1}, {T: 120000000000, V: 0.1}, {T: 150000000000, V: 0.1}, {T: 180000000000, V: 0.1}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.1}, {T: 90 * 1000, V: 0.1}, {T: 120 * 1000, V: 0.1}, {T: 150 * 1000, V: 0.1}, {T: 180 * 1000, V: 0.1}}, }, }, }, @@ -603,7 +603,7 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "bar"}}, - Points: []promql.Point{{T: 60000000000, V: 0.2}, {T: 90000000000, V: 0.2}, {T: 120000000000, V: 0.2}, {T: 150000000000, V: 0.2}, {T: 180000000000, V: 0.2}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.2}, {T: 90 * 1000, V: 0.2}, {T: 120 * 1000, V: 0.2}, {T: 150 * 1000, V: 0.2}, {T: 180 * 1000, V: 0.2}}, }, }, }, @@ -619,15 +619,15 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "buzz"}}, - Points: []promql.Point{{T: 60000000000, V: 1}, {T: 90000000000, V: 1}, {T: 120000000000, V: 1}, {T: 150000000000, V: 1}, {T: 180000000000, V: 1}}, + Points: []promql.Point{{T: 60 * 1000, V: 1}, {T: 90 * 1000, V: 1}, {T: 120 * 1000, V: 1}, {T: 150 * 1000, V: 1}, {T: 180 * 1000, V: 1}}, }, promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, - Points: []promql.Point{{T: 60000000000, V: 0.1}, {T: 90000000000, V: 0.1}, {T: 120000000000, V: 0.1}, {T: 150000000000, V: 0.1}, {T: 180000000000, V: 0.1}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.1}, {T: 90 * 1000, V: 0.1}, {T: 120 * 1000, V: 0.1}, {T: 150 * 1000, V: 0.1}, {T: 180 * 1000, V: 0.1}}, }, promql.Series{ Metric: labels.Labels{{Name: "app", Value: "fuzz"}}, - Points: []promql.Point{{T: 60000000000, V: 0.2}, {T: 90000000000, V: 0.2}, {T: 120000000000, V: 0.2}, {T: 150000000000, V: 0.2}, {T: 180000000000, V: 0.2}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.2}, {T: 90 * 1000, V: 0.2}, {T: 120 * 1000, V: 0.2}, {T: 150 * 1000, V: 0.2}, {T: 180 * 1000, V: 0.2}}, }, }, }, @@ -643,11 +643,11 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "bar"}}, - Points: []promql.Point{{T: 60000000000, V: 0.05}, {T: 90000000000, V: 0.05}, {T: 120000000000, V: 0.05}, {T: 150000000000, V: 0.05}, {T: 180000000000, V: 0.05}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.05}, {T: 90 * 1000, V: 0.05}, {T: 120 * 1000, V: 0.05}, {T: 150 * 1000, V: 0.05}, {T: 180 * 1000, V: 0.05}}, }, promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, - Points: []promql.Point{{T: 60000000000, V: 0.1}, {T: 90000000000, V: 0.1}, {T: 120000000000, V: 0.1}, {T: 150000000000, V: 0.1}, {T: 180000000000, V: 0.1}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.1}, {T: 90 * 1000, V: 0.1}, {T: 120 * 1000, V: 0.1}, {T: 150 * 1000, V: 0.1}, {T: 180 * 1000, V: 0.1}}, }, }, }, @@ -663,15 +663,15 @@ func TestEngine_NewRangeQuery(t *testing.T) { promql.Matrix{ promql.Series{ Metric: labels.Labels{{Name: "app", Value: "bar"}}, - Points: []promql.Point{{T: 60000000000, V: 0.05}, {T: 90000000000, V: 0.05}, {T: 120000000000, V: 0.05}, {T: 150000000000, V: 0.05}, {T: 180000000000, V: 0.05}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.05}, {T: 90 * 1000, V: 0.05}, {T: 120 * 1000, V: 0.05}, {T: 150 * 1000, V: 0.05}, {T: 180 * 1000, V: 0.05}}, }, promql.Series{ Metric: labels.Labels{{Name: "app", Value: "foo"}}, - Points: []promql.Point{{T: 60000000000, V: 0.1}, {T: 90000000000, V: 0.1}, {T: 120000000000, V: 0.1}, {T: 150000000000, V: 0.1}, {T: 180000000000, V: 0.1}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.1}, {T: 90 * 1000, V: 0.1}, {T: 120 * 1000, V: 0.1}, {T: 150 * 1000, V: 0.1}, {T: 180 * 1000, V: 0.1}}, }, promql.Series{ Metric: labels.Labels{{Name: "app", Value: "fuzz"}}, - Points: []promql.Point{{T: 60000000000, V: 0.2}, {T: 90000000000, V: 0.2}, {T: 120000000000, V: 0.2}, {T: 150000000000, V: 0.2}, {T: 180000000000, V: 0.2}}, + Points: []promql.Point{{T: 60 * 1000, V: 0.2}, {T: 90 * 1000, V: 0.2}, {T: 120 * 1000, V: 0.2}, {T: 150 * 1000, V: 0.2}, {T: 180 * 1000, V: 0.2}}, }, }, }, diff --git a/pkg/logql/range_vector.go b/pkg/logql/range_vector.go index 8c8f76678a..8ec3bc1087 100644 --- a/pkg/logql/range_vector.go +++ b/pkg/logql/range_vector.go @@ -6,7 +6,7 @@ import ( ) // RangeVectorAggregator aggregates samples for a given range of samples. -// It receives the current nano-seconds timestamp and the list of point within +// It receives the current milliseconds timestamp and the list of point within // the range. type RangeVectorAggregator func(int64, []promql.Point) float64 @@ -110,6 +110,8 @@ func (r *rangeVectorIterator) load(start, end int64) { func (r *rangeVectorIterator) At(aggregator RangeVectorAggregator) (int64, promql.Vector) { result := make([]promql.Sample, 0, len(r.window)) + // convert ts from nano to milli seconds as the iterator work with nanoseconds + ts := r.current / 1e+6 for lbs, series := range r.window { labels, err := promql.ParseMetric(lbs) if err != nil { @@ -118,12 +120,12 @@ func (r *rangeVectorIterator) At(aggregator RangeVectorAggregator) (int64, promq result = append(result, promql.Sample{ Point: promql.Point{ - V: aggregator(r.current, series.Points), - T: r.current, + V: aggregator(ts, series.Points), + T: ts, }, Metric: labels, }) } - return r.current, result + return ts, result } diff --git a/pkg/logql/range_vector_test.go b/pkg/logql/range_vector_test.go index 16969b3503..879b6c7e42 100644 --- a/pkg/logql/range_vector_test.go +++ b/pkg/logql/range_vector_test.go @@ -42,7 +42,7 @@ func newEntryIterator() iter.EntryIterator { } func newPoint(t time.Time, v float64) promql.Point { - return promql.Point{T: t.UnixNano(), V: v} + return promql.Point{T: t.UnixNano() / 1e+6, V: v} } func Test_RangeVectorIterator(t *testing.T) { @@ -128,7 +128,7 @@ func Test_RangeVectorIterator(t *testing.T) { for it.Next() { ts, v := it.At(count) require.ElementsMatch(t, tt.expectedVectors[i], v) - require.Equal(t, tt.expectedTs[i].UnixNano(), ts) + require.Equal(t, tt.expectedTs[i].UnixNano()/1e+6, ts) i++ } require.Equal(t, len(tt.expectedTs), i)