(t *testing.T)
| 1714 | } |
| 1715 | |
| 1716 | func TestRulerEvalWithQueryFrontend(t *testing.T) { |
| 1717 | s, err := e2e.NewScenario(networkName) |
| 1718 | require.NoError(t, err) |
| 1719 | defer s.Close() |
| 1720 | |
| 1721 | // Start dependencies. |
| 1722 | consul := e2edb.NewConsul() |
| 1723 | minio := e2edb.NewMinio(9000, bucketName, rulestoreBucketName) |
| 1724 | require.NoError(t, s.StartAndWaitReady(consul, minio)) |
| 1725 | |
| 1726 | // Configure the ruler. |
| 1727 | flags := mergeFlags( |
| 1728 | BlocksStorageFlags(), |
| 1729 | RulerFlags(), |
| 1730 | map[string]string{ |
| 1731 | // Evaluate rules often, so that we don't need to wait for metrics to show up. |
| 1732 | "-ruler.evaluation-interval": "2s", |
| 1733 | // We run single ingester only, no replication. |
| 1734 | "-distributor.replication-factor": "1", |
| 1735 | }, |
| 1736 | ) |
| 1737 | |
| 1738 | const namespace = "test" |
| 1739 | const user = "user" |
| 1740 | |
| 1741 | distributor := e2ecortex.NewDistributor("distributor", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "") |
| 1742 | ingester := e2ecortex.NewIngester("ingester", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), flags, "") |
| 1743 | require.NoError(t, s.StartAndWaitReady(distributor, ingester)) |
| 1744 | for _, format := range []string{"protobuf", "json"} { |
| 1745 | t.Run(fmt.Sprintf("format:%s", format), func(t *testing.T) { |
| 1746 | queryFrontendFlag := mergeFlags(flags, map[string]string{ |
| 1747 | "-ruler.query-response-format": format, |
| 1748 | "-frontend.query-stats-enabled": "true", |
| 1749 | }) |
| 1750 | queryFrontend := e2ecortex.NewQueryFrontend("query-frontend", queryFrontendFlag, "") |
| 1751 | require.NoError(t, s.Start(queryFrontend)) |
| 1752 | |
| 1753 | querier := e2ecortex.NewQuerier("querier", e2ecortex.RingStoreConsul, consul.NetworkHTTPEndpoint(), mergeFlags(queryFrontendFlag, map[string]string{ |
| 1754 | "-querier.frontend-address": queryFrontend.NetworkGRPCEndpoint(), |
| 1755 | }), "") |
| 1756 | require.NoError(t, s.StartAndWaitReady(querier)) |
| 1757 | |
| 1758 | rulerFlag := mergeFlags(queryFrontendFlag, map[string]string{ |
| 1759 | "-ruler.frontend-address": queryFrontend.NetworkGRPCEndpoint(), |
| 1760 | }) |
| 1761 | ruler := e2ecortex.NewRuler("ruler", consul.NetworkHTTPEndpoint(), rulerFlag, "") |
| 1762 | require.NoError(t, s.StartAndWaitReady(ruler)) |
| 1763 | |
| 1764 | t.Cleanup(func() { |
| 1765 | _ = s.Stop(ruler) |
| 1766 | _ = s.Stop(queryFrontend) |
| 1767 | _ = s.Stop(querier) |
| 1768 | }) |
| 1769 | |
| 1770 | c, err := e2ecortex.NewClient("", "", "", ruler.HTTPEndpoint(), user) |
| 1771 | require.NoError(t, err) |
| 1772 | |
| 1773 | expression := "metric" // vector |
nothing calls this directly
no test coverage detected