(t *testing.T)
| 489 | } |
| 490 | |
| 491 | func TestIngesterRequests(t *testing.T) { |
| 492 | synctest.Test(t, func(t *testing.T) { |
| 493 | nownow := time.Now() |
| 494 | |
| 495 | now := int(nownow.Unix()) |
| 496 | |
| 497 | ago := func(d string) int { |
| 498 | duration, err := time.ParseDuration(d) |
| 499 | require.NoError(t, err) |
| 500 | return int(nownow.Add(-duration).Unix()) |
| 501 | } |
| 502 | tenMinutesAgo := int(nownow.Add(-10 * time.Minute).Unix()) |
| 503 | fifteenMinutesAgo := int(nownow.Add(-15 * time.Minute).Unix()) |
| 504 | twentyMinutesAgo := int(nownow.Add(-20 * time.Minute).Unix()) |
| 505 | |
| 506 | tests := []struct { |
| 507 | request string |
| 508 | queryBackendAfter time.Duration |
| 509 | ingesterShards int |
| 510 | expectedURI []string |
| 511 | expectedError error |
| 512 | }{ |
| 513 | // start/end is outside queryBackendAfter |
| 514 | { |
| 515 | request: "/?tags=foo%3Dbar&minDuration=10ms&maxDuration=30ms&limit=50&start=10&end=20", |
| 516 | queryBackendAfter: 10 * time.Minute, |
| 517 | expectedURI: []string{}, |
| 518 | ingesterShards: 1, |
| 519 | }, |
| 520 | // start/end is inside queryBackendAfter |
| 521 | { |
| 522 | request: "/?tags=foo%3Dbar&minDuration=10ms&maxDuration=30ms&limit=50&start=" + strconv.Itoa(tenMinutesAgo) + "&end=" + strconv.Itoa(now), |
| 523 | queryBackendAfter: 30 * time.Minute, |
| 524 | expectedURI: []string{"/querier?end=" + strconv.Itoa(now) + "&limit=50&maxDuration=30ms&minDuration=10ms&spss=3&start=" + strconv.Itoa(tenMinutesAgo) + "&tags=foo%3Dbar"}, |
| 525 | ingesterShards: 1, |
| 526 | }, |
| 527 | // queryBackendAfter = 0 results in no ingester query |
| 528 | { |
| 529 | request: "/?tags=foo%3Dbar&minDuration=10ms&maxDuration=30ms&limit=50&start=" + strconv.Itoa(tenMinutesAgo) + "&end=" + strconv.Itoa(now), |
| 530 | queryBackendAfter: 0, |
| 531 | expectedURI: []string{}, |
| 532 | ingesterShards: 1, |
| 533 | }, |
| 534 | // start/end = 20 - 10 mins ago - break across query backend after |
| 535 | // ingester start/End = 15 - 10 mins ago |
| 536 | { |
| 537 | request: "/?tags=foo%3Dbar&minDuration=10ms&maxDuration=30ms&limit=50&start=" + strconv.Itoa(twentyMinutesAgo) + "&end=" + strconv.Itoa(tenMinutesAgo), |
| 538 | queryBackendAfter: 15 * time.Minute, |
| 539 | expectedURI: []string{"/querier?end=" + strconv.Itoa(tenMinutesAgo) + "&limit=50&maxDuration=30ms&minDuration=10ms&spss=3&start=" + strconv.Itoa(fifteenMinutesAgo) + "&tags=foo%3Dbar"}, |
| 540 | ingesterShards: 1, |
| 541 | }, |
| 542 | // start/end = 10 - now mins ago - break across query backend after |
| 543 | // ingester start/End = 10 - now mins ago |
| 544 | // backend start/End = 15 - 10 mins ago |
| 545 | { |
| 546 | request: "/?tags=foo%3Dbar&minDuration=10ms&maxDuration=30ms&limit=50&start=" + strconv.Itoa(tenMinutesAgo) + "&end=" + strconv.Itoa(now), |
| 547 | queryBackendAfter: 15 * time.Minute, |
| 548 | expectedURI: []string{"/querier?end=" + strconv.Itoa(now) + "&limit=50&maxDuration=30ms&minDuration=10ms&spss=3&start=" + strconv.Itoa(tenMinutesAgo) + "&tags=foo%3Dbar"}, |
nothing calls this directly
no test coverage detected