@@ -1670,42 +1670,64 @@ func TestRulerEvalWithQueryFrontend(t *testing.T) {
1670
1670
distributor := e2ecortex .NewDistributor ("distributor" , e2ecortex .RingStoreConsul , consul .NetworkHTTPEndpoint (), flags , "" )
1671
1671
ingester := e2ecortex .NewIngester ("ingester" , e2ecortex .RingStoreConsul , consul .NetworkHTTPEndpoint (), flags , "" )
1672
1672
require .NoError (t , s .StartAndWaitReady (distributor , ingester ))
1673
- queryFrontend := e2ecortex .NewQueryFrontend ("query-frontend" , flags , "" )
1674
- require .NoError (t , s .Start (queryFrontend ))
1675
-
1676
- ruler := e2ecortex .NewRuler ("ruler" , consul .NetworkHTTPEndpoint (), mergeFlags (flags , map [string ]string {
1677
- "-ruler.frontend-address" : queryFrontend .NetworkGRPCEndpoint (),
1678
- }), "" )
1679
- querier := e2ecortex .NewQuerier ("querier" , e2ecortex .RingStoreConsul , consul .NetworkHTTPEndpoint (), mergeFlags (flags , map [string ]string {
1680
- "-querier.frontend-address" : queryFrontend .NetworkGRPCEndpoint (),
1681
- }), "" )
1682
- require .NoError (t , s .StartAndWaitReady (ruler , querier ))
1683
-
1684
- c , err := e2ecortex .NewClient ("" , "" , "" , ruler .HTTPEndpoint (), user )
1685
- require .NoError (t , err )
1673
+ for _ , format := range []string {"protobuf" , "json" } {
1674
+ t .Run (fmt .Sprintf ("format:%s" , format ), func (t * testing.T ) {
1675
+ queryFrontendFlag := mergeFlags (flags , map [string ]string {
1676
+ "-ruler.query-response-format" : format ,
1677
+ })
1678
+ queryFrontend := e2ecortex .NewQueryFrontend ("query-frontend" , queryFrontendFlag , "" )
1679
+ require .NoError (t , s .Start (queryFrontend ))
1686
1680
1687
- expression := "metric"
1688
- groupName := "rule_group"
1689
- ruleName := "rule_name"
1690
- require .NoError (t , c . SetRuleGroup ( ruleGroupWithRule ( groupName , ruleName , expression ), namespace ))
1681
+ querier := e2ecortex . NewQuerier ( "querier" , e2ecortex . RingStoreConsul , consul . NetworkHTTPEndpoint (), mergeFlags ( queryFrontendFlag , map [ string ] string {
1682
+ "-querier.frontend-address" : queryFrontend . NetworkGRPCEndpoint (),
1683
+ }), "" )
1684
+ require .NoError (t , s . StartAndWaitReady ( querier ))
1691
1685
1692
- rgMatcher := ruleGroupMatcher ( user , namespace , groupName )
1693
- // Wait until ruler has loaded the group.
1694
- require . NoError ( t , ruler . WaitSumMetricsWithOptions ( e2e . Equals ( 1 ), [] string { "cortex_prometheus_rule_group_rules" }, e2e . WithLabelMatchers ( rgMatcher ), e2e . WaitMissingMetrics ) )
1695
- // Wait until rule group has tried to evaluate the rule.
1696
- require .NoError (t , ruler . WaitSumMetricsWithOptions ( e2e . GreaterOrEqual ( 1 ), [] string { "cortex_prometheus_rule_evaluations_total" }, e2e . WithLabelMatchers ( rgMatcher ), e2e . WaitMissingMetrics ))
1686
+ rulerFlag := mergeFlags ( queryFrontendFlag , map [ string ] string {
1687
+ "- ruler.frontend-address" : queryFrontend . NetworkGRPCEndpoint (),
1688
+ } )
1689
+ ruler := e2ecortex . NewRuler ( "ruler" , consul . NetworkHTTPEndpoint (), rulerFlag , "" )
1690
+ require .NoError (t , s . StartAndWaitReady ( ruler ))
1697
1691
1698
- matcher := labels .MustNewMatcher (labels .MatchEqual , "user" , user )
1699
- // Check that cortex_ruler_query_frontend_clients went up
1700
- require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .Equals (1 ), []string {"cortex_ruler_query_frontend_clients" }, e2e .WaitMissingMetrics ))
1701
- // Check that cortex_ruler_queries_total went up
1702
- require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .GreaterOrEqual (1 ), []string {"cortex_ruler_queries_total" }, e2e .WithLabelMatchers (matcher ), e2e .WaitMissingMetrics ))
1703
- // Check that cortex_ruler_queries_failed_total is zero
1704
- require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .Equals (0 ), []string {"cortex_ruler_queries_failed_total" }, e2e .WithLabelMatchers (matcher ), e2e .WaitMissingMetrics ))
1705
- // Check that cortex_ruler_write_requests_total went up
1706
- require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .GreaterOrEqual (1 ), []string {"cortex_ruler_write_requests_total" }, e2e .WithLabelMatchers (matcher ), e2e .WaitMissingMetrics ))
1707
- // Check that cortex_ruler_write_requests_failed_total is zero
1708
- require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .Equals (0 ), []string {"cortex_ruler_write_requests_failed_total" }, e2e .WithLabelMatchers (matcher ), e2e .WaitMissingMetrics ))
1692
+ t .Cleanup (func () {
1693
+ _ = s .Stop (ruler )
1694
+ _ = s .Stop (queryFrontend )
1695
+ _ = s .Stop (querier )
1696
+ })
1697
+
1698
+ c , err := e2ecortex .NewClient ("" , "" , "" , ruler .HTTPEndpoint (), user )
1699
+ require .NoError (t , err )
1700
+
1701
+ expression := "metric" // vector
1702
+ //expression := "scalar(count(up == 1)) > bool 1" // scalar
1703
+ groupName := "rule_group"
1704
+ ruleName := "rule_name"
1705
+ require .NoError (t , c .SetRuleGroup (ruleGroupWithRule (groupName , ruleName , expression ), namespace ))
1706
+
1707
+ rgMatcher := ruleGroupMatcher (user , namespace , groupName )
1708
+ // Wait until ruler has loaded the group.
1709
+ require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .Equals (1 ), []string {"cortex_prometheus_rule_group_rules" }, e2e .WithLabelMatchers (rgMatcher ), e2e .WaitMissingMetrics ))
1710
+ // Wait until rule group has tried to evaluate the rule.
1711
+ require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .GreaterOrEqual (1 ), []string {"cortex_prometheus_rule_evaluations_total" }, e2e .WithLabelMatchers (rgMatcher ), e2e .WaitMissingMetrics ))
1712
+ // Make sure not to fail
1713
+ require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .Equals (0 ), []string {"cortex_prometheus_rule_evaluation_failures_total" }, e2e .WithLabelMatchers (rgMatcher ), e2e .WaitMissingMetrics ))
1714
+
1715
+ matcher := labels .MustNewMatcher (labels .MatchEqual , "user" , user )
1716
+ sourceMatcher := labels .MustNewMatcher (labels .MatchEqual , "source" , "ruler" )
1717
+ // Check that cortex_ruler_query_frontend_clients went up
1718
+ require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .Equals (1 ), []string {"cortex_ruler_query_frontend_clients" }, e2e .WaitMissingMetrics ))
1719
+ // Check that cortex_ruler_queries_total went up
1720
+ require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .GreaterOrEqual (1 ), []string {"cortex_ruler_queries_total" }, e2e .WithLabelMatchers (matcher ), e2e .WaitMissingMetrics ))
1721
+ // Check that cortex_ruler_queries_failed_total is zero
1722
+ require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .Equals (0 ), []string {"cortex_ruler_queries_failed_total" }, e2e .WithLabelMatchers (matcher ), e2e .WaitMissingMetrics ))
1723
+ // Check that cortex_ruler_write_requests_total went up
1724
+ require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .GreaterOrEqual (1 ), []string {"cortex_ruler_write_requests_total" }, e2e .WithLabelMatchers (matcher ), e2e .WaitMissingMetrics ))
1725
+ // Check that cortex_ruler_write_requests_failed_total is zero
1726
+ require .NoError (t , ruler .WaitSumMetricsWithOptions (e2e .Equals (0 ), []string {"cortex_ruler_write_requests_failed_total" }, e2e .WithLabelMatchers (matcher ), e2e .WaitMissingMetrics ))
1727
+ // Check that cortex_query_frontend_queries_total went up
1728
+ require .NoError (t , queryFrontend .WaitSumMetricsWithOptions (e2e .GreaterOrEqual (1 ), []string {"cortex_query_frontend_queries_total" }, e2e .WithLabelMatchers (matcher , sourceMatcher ), e2e .WaitMissingMetrics ))
1729
+ })
1730
+ }
1709
1731
}
1710
1732
1711
1733
func parseAlertFromRule (t * testing.T , rules interface {}) * alertingRule {
0 commit comments