(t *testing.T)
| 729 | } |
| 730 | |
| 731 | func TestQuerierMaxSamplesLimit(t *testing.T) { |
| 732 | const blockRangePeriod = 5 * time.Second |
| 733 | |
| 734 | s, err := e2e.NewScenario(networkName) |
| 735 | require.NoError(t, err) |
| 736 | defer s.Close() |
| 737 | |
| 738 | // Configure the blocks storage to frequently compact TSDB head |
| 739 | // and ship blocks to the storage. |
| 740 | flags := mergeFlags(BlocksStorageFlags(), map[string]string{ |
| 741 | "-blocks-storage.tsdb.block-ranges-period": blockRangePeriod.String(), |
| 742 | "-blocks-storage.tsdb.ship-interval": "1s", |
| 743 | "-blocks-storage.tsdb.retention-period": ((blockRangePeriod * 2) - 1).String(), |
| 744 | "-querier.max-samples": "1", |
| 745 | }) |
| 746 | |
| 747 | // Start dependencies. |
| 748 | minio := e2edb.NewMinio(9000, flags["-blocks-storage.s3.bucket-name"]) |
| 749 | consul := e2edb.NewConsul() |
| 750 | require.NoError(t, s.StartAndWaitReady(consul, minio)) |
| 751 | |
| 752 | // Start Cortex components for the write path. |
| 753 | distributor := e2ecortex.NewDistributor("distributor", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "") |
| 754 | ingester := e2ecortex.NewIngester("ingester", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "") |
| 755 | require.NoError(t, s.StartAndWaitReady(distributor, ingester)) |
| 756 | |
| 757 | queryFrontend := e2ecortex.NewQueryFrontendWithConfigFile("query-frontend", "", flags, "") |
| 758 | require.NoError(t, s.Start(queryFrontend)) |
| 759 | |
| 760 | querier := e2ecortex.NewQuerier("querier", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), mergeFlags(flags, map[string]string{ |
| 761 | "-querier.frontend-address": queryFrontend.NetworkGRPCEndpoint(), |
| 762 | }), "") |
| 763 | require.NoError(t, s.StartAndWaitReady(querier)) |
| 764 | |
| 765 | // Wait until the distributor and querier has updated the ring. |
| 766 | require.NoError(t, distributor.WaitSumMetrics(e2e.Equals(512), "cortex_ring_tokens_total")) |
| 767 | require.NoError(t, querier.WaitSumMetrics(e2e.Equals(512), "cortex_ring_tokens_total")) |
| 768 | |
| 769 | c, err := e2ecortex.NewClient(distributor.HTTPEndpoint(), queryFrontend.HTTPEndpoint(), "", "", "user-1") |
| 770 | require.NoError(t, err) |
| 771 | |
| 772 | // Push some series to Cortex. |
| 773 | series1Timestamp := time.Now() |
| 774 | series1, _ := generateSeries("series_1", series1Timestamp, prompb.Label{Name: "job", Value: "test"}) |
| 775 | series2, _ := generateSeries("series_2", series1Timestamp, prompb.Label{Name: "job", Value: "test"}) |
| 776 | |
| 777 | res, err := c.Push(series1) |
| 778 | require.NoError(t, err) |
| 779 | require.Equal(t, 200, res.StatusCode) |
| 780 | res, err = c.Push(series2) |
| 781 | require.NoError(t, err) |
| 782 | require.Equal(t, 200, res.StatusCode) |
| 783 | |
| 784 | retries := backoff.New(context.Background(), backoff.Config{ |
| 785 | MinBackoff: 5 * time.Second, |
| 786 | MaxBackoff: 10 * time.Second, |
| 787 | MaxRetries: 5, |
| 788 | }) |
nothing calls this directly
no test coverage detected