@@ -339,9 +339,9 @@ remote(sum by (pod, region) (rate(http_requests_total[2m]) * 60))))`,
339339 expr : `sum_over_time(max(http_requests_total)[5m:1m])` ,
340340 expected : `
341341sum_over_time(max(dedup(
342- remote(max by (region) (http_requests_total)) [1969-12-31 23:55:00 +0000 UTC],
343- remote(max by (region) (http_requests_total)) [1969-12-31 23:55:00 +0000 UTC]
344- )) [5m:1m])` ,
342+ remote(max by (region) (http_requests_total)) [1969-12-31 23:55:00 +0000 UTC, 1970-01-01 00:00:00 +0000 UTC],
343+ remote(max by (region) (http_requests_total)) [1969-12-31 23:55:00 +0000 UTC, 1970-01-01 00:00:00 +0000 UTC])
344+ )[5m:1m])` ,
345345 },
346346 {
347347 name : "label based pruning matches one engine" ,
@@ -493,7 +493,7 @@ func TestDistributedExecutionWithLongSelectorRanges(t *testing.T) {
493493 expected : `
494494dedup(
495495 remote(sum_over_time(metric[5m])),
496- remote(sum_over_time(metric[5m])) [1970-01-01 06:05:00 +0000 UTC]
496+ remote(sum_over_time(metric[5m])) [1970-01-01 06:05:00 +0000 UTC, 1970-01-01 12:00:00 +0000 UTC ]
497497)` ,
498498 },
499499 {
@@ -510,7 +510,7 @@ dedup(
510510 expected : `
511511dedup(
512512 remote(sum_over_time(metric[2h])),
513- remote(sum_over_time(metric[2h])) [1970-01-01 08:00:00 +0000 UTC]
513+ remote(sum_over_time(metric[2h])) [1970-01-01 08:00:00 +0000 UTC, 1970-01-01 12:00:00 +0000 UTC ]
514514)` ,
515515 },
516516 {
@@ -527,7 +527,7 @@ dedup(
527527 expected : `
528528dedup(
529529 remote(sum_over_time(sum_over_time(metric[1h])[1h:30m])),
530- remote(sum_over_time(sum_over_time(metric[1h])[1h:30m])) [1970-01-01 08:00:00 +0000 UTC]
530+ remote(sum_over_time(sum_over_time(metric[1h])[1h:30m])) [1970-01-01 08:00:00 +0000 UTC, 1970-01-01 12:00:00 +0000 UTC ]
531531)` ,
532532 },
533533 {
@@ -543,7 +543,7 @@ dedup(
543543 expr : `max_over_time(sum_over_time(sum_over_time(metric[5m])[45m:10m])[15m:15m])` ,
544544 expected : `dedup(
545545 remote(max_over_time(sum_over_time(sum_over_time(metric[5m])[45m:10m])[15m:15m])),
546- remote(max_over_time(sum_over_time(sum_over_time(metric[5m])[45m:10m])[15m:15m])) [1970-01-01 07:05:00 +0000 UTC])` ,
546+ remote(max_over_time(sum_over_time(sum_over_time(metric[5m])[45m:10m])[15m:15m])) [1970-01-01 07:05:00 +0000 UTC, 1970-01-01 12:00:00 +0000 UTC ])` ,
547547 },
548548 {
549549 name : "subquery with a total 4h range is cannot be distributed" ,
@@ -571,6 +571,36 @@ dedup(
571571 expr : `sum_over_time(metric[3h])` ,
572572 expected : `sum_over_time(metric[3h])` ,
573573 },
574+ {
575+ name : "distribute queries with timestamp" ,
576+ firstEngineOpts : engineOpts {
577+ minTime : queryStart ,
578+ maxTime : time .Unix (0 , 0 ).Add (eightHours ),
579+ },
580+ secondEngineOpts : engineOpts {
581+ minTime : time .Unix (0 , 0 ).Add (sixHours ),
582+ maxTime : queryEnd ,
583+ },
584+ expr : `sum(metric @ 25200)` ,
585+ expected : `
586+ sum(dedup(
587+ remote(sum by (region) (metric @ 25200.000)),
588+ remote(sum by (region) (metric @ 25200.000)) [1970-01-01 06:00:00 +0000 UTC, 1970-01-01 12:00:00 +0000 UTC]
589+ ))` ,
590+ },
591+ {
592+ name : "skip distributing queries with timestamps outside of the range of an engine" ,
593+ firstEngineOpts : engineOpts {
594+ minTime : queryStart ,
595+ maxTime : time .Unix (0 , 0 ).Add (eightHours ),
596+ },
597+ secondEngineOpts : engineOpts {
598+ minTime : time .Unix (0 , 0 ).Add (sixHours ),
599+ maxTime : queryEnd ,
600+ },
601+ expr : `sum(metric @ 18000)` ,
602+ expected : `sum(sum by (region) (metric @ 18000.000))` ,
603+ },
574604 }
575605
576606 for _ , tcase := range cases {
@@ -616,14 +646,14 @@ func TestDistributedExecutionPruningByTime(t *testing.T) {
616646 expr : `sum(metric)` ,
617647 queryStart : time .Unix (0 , 0 ).Add (7 * time .Hour ),
618648 queryEnd : time .Unix (0 , 0 ).Add (8 * time .Hour ),
619- expected : `sum(dedup(remote(sum by (region) (metric)) [1970-01-01 07:00:00 +0000 UTC]))` ,
649+ expected : `sum(dedup(remote(sum by (region) (metric)) [1970-01-01 07:00:00 +0000 UTC, 1970-01-01 08:00:00 +0000 UTC ]))` ,
620650 },
621651 {
622652 name : "1 hour range query at the start of the range prunes the second engine" ,
623653 expr : `sum(metric)` ,
624654 queryStart : time .Unix (0 , 0 ).Add (1 * time .Hour ),
625655 queryEnd : time .Unix (0 , 0 ).Add (2 * time .Hour ),
626- expected : `sum(dedup(remote(sum by (region) (metric)) [1970-01-01 01:00:00 +0000 UTC]))` ,
656+ expected : `sum(dedup(remote(sum by (region) (metric)) [1970-01-01 01:00:00 +0000 UTC, 1970-01-01 02:00:00 +0000 UTC ]))` ,
627657 },
628658 {
629659 name : "instant query in the overlapping range queries both engines" ,
@@ -633,8 +663,8 @@ func TestDistributedExecutionPruningByTime(t *testing.T) {
633663 expected : `
634664sum(
635665 dedup(
636- remote(sum by (region) (metric)) [1970-01-01 06:00:00 +0000 UTC],
637- remote(sum by (region) (metric)) [1970-01-01 06:00:00 +0000 UTC]
666+ remote(sum by (region) (metric)) [1970-01-01 06:00:00 +0000 UTC, 1970-01-01 06:00:00 +0000 UTC],
667+ remote(sum by (region) (metric)) [1970-01-01 06:00:00 +0000 UTC, 1970-01-01 06:00:00 +0000 UTC ]
638668 )
639669)` ,
640670 },
0 commit comments