(t *testing.T)
| 575 | } |
| 576 | |
| 577 | func TestQueryRangeMaxSeries(t *testing.T) { |
| 578 | util.RunIntegrationTests(t, util.TestHarnessConfig{ |
| 579 | ConfigOverlay: configQueryRangeMaxSeries, |
| 580 | }, func(h *util.TempoHarness) { |
| 581 | h.WaitTracesWritable(t) |
| 582 | |
| 583 | ticker := time.NewTicker(500 * time.Millisecond) |
| 584 | defer ticker.Stop() |
| 585 | timer := time.NewTimer(5 * time.Second) |
| 586 | defer timer.Stop() |
| 587 | |
| 588 | tracesSent := 0 |
| 589 | sendLoop: |
| 590 | for { |
| 591 | select { |
| 592 | case <-ticker.C: |
| 593 | require.NoError(t, h.WriteJaegerBatch(util.MakeThriftBatch(), "")) |
| 594 | tracesSent++ |
| 595 | case <-timer.C: |
| 596 | break sendLoop |
| 597 | } |
| 598 | } |
| 599 | |
| 600 | require.Greater(t, tracesSent, 3) |
| 601 | h.WaitTracesQueryable(t, tracesSent) |
| 602 | |
| 603 | callQueryRange(t, h, queryRangeRequest{ |
| 604 | Query: "{} | rate() by (span:id)", |
| 605 | Start: time.Now().Add(-5 * time.Minute), |
| 606 | End: time.Now(), |
| 607 | Step: "5s", |
| 608 | Exemplars: 100, |
| 609 | }, func(queryRangeRes *tempopb.QueryRangeResponse, err error) { |
| 610 | require.NoError(t, err) |
| 611 | require.NotNil(t, queryRangeRes) |
| 612 | require.Equal(t, tempopb.PartialStatus_PARTIAL, queryRangeRes.GetStatus()) |
| 613 | require.Equal(t, "Response exceeds maximum series limit of 3, a partial response is returned. Warning: the accuracy of each individual value is not guaranteed.", queryRangeRes.GetMessage()) |
| 614 | require.Equal(t, 3, len(queryRangeRes.GetSeries())) |
| 615 | }) |
| 616 | }) |
| 617 | } |
| 618 | |
| 619 | func TestQueryRangeMaxSeriesDisabled(t *testing.T) { |
| 620 | util.RunIntegrationTests(t, util.TestHarnessConfig{ |
nothing calls this directly
no test coverage detected