mirror of
https://github.com/fluxcd/flagger.git
synced 2026-04-15 06:57:34 +00:00
Merge pull request #1582 from LiZhenCheng9527/fix-metric-bug
return an error for missing metric templates
This commit is contained in:
@@ -356,6 +356,10 @@ func newDaemonSetTestCanaryAB() *flaggerv1.Canary {
|
||||
Min: toFloatPtr(0),
|
||||
Max: toFloatPtr(500000),
|
||||
},
|
||||
TemplateRef: &flaggerv1.CrossNamespaceObjectReference{
|
||||
Name: "envoy",
|
||||
Namespace: "default",
|
||||
},
|
||||
Interval: "1m",
|
||||
Query: "fake",
|
||||
},
|
||||
|
||||
@@ -396,6 +396,10 @@ func newDeploymentTestCanaryAB() *flaggerv1.Canary {
|
||||
Min: toFloatPtr(0),
|
||||
Max: toFloatPtr(500000),
|
||||
},
|
||||
TemplateRef: &flaggerv1.CrossNamespaceObjectReference{
|
||||
Name: "envoy",
|
||||
Namespace: "default",
|
||||
},
|
||||
Interval: "1m",
|
||||
Query: "fake",
|
||||
},
|
||||
|
||||
@@ -306,6 +306,9 @@ func (c *Controller) runMetricChecks(canary *flaggerv1.Canary) bool {
|
||||
canary.Name, canary.Namespace, metric.Name, val, metric.Threshold)
|
||||
return false
|
||||
}
|
||||
} else if metric.Name != "request-success-rate" && metric.Name != "request-duration" {
|
||||
c.recordEventErrorf(canary, "Metric query failed for no usable metrics template were configured")
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -107,4 +107,36 @@ func TestController_runMetricChecks(t *testing.T) {
|
||||
}
|
||||
assert.Equal(t, true, ctrl.runMetricChecks(canary))
|
||||
})
|
||||
|
||||
t.Run("undefined metric", func(t *testing.T) {
|
||||
ctrl := newDeploymentFixture(nil).ctrl
|
||||
analysis := &flaggerv1.CanaryAnalysis{Metrics: []flaggerv1.CanaryMetric{{
|
||||
Name: "undefined metric",
|
||||
ThresholdRange: &flaggerv1.CanaryThresholdRange{
|
||||
Min: toFloatPtr(0),
|
||||
Max: toFloatPtr(100),
|
||||
},
|
||||
}}}
|
||||
canary := &flaggerv1.Canary{
|
||||
ObjectMeta: metav1.ObjectMeta{Namespace: "default"},
|
||||
Spec: flaggerv1.CanarySpec{Analysis: analysis},
|
||||
}
|
||||
assert.Equal(t, false, ctrl.runMetricChecks(canary))
|
||||
})
|
||||
|
||||
t.Run("builtinMetric", func(t *testing.T) {
|
||||
ctrl := newDeploymentFixture(nil).ctrl
|
||||
analysis := &flaggerv1.CanaryAnalysis{Metrics: []flaggerv1.CanaryMetric{{
|
||||
Name: "request-success-rate",
|
||||
ThresholdRange: &flaggerv1.CanaryThresholdRange{
|
||||
Min: toFloatPtr(0),
|
||||
Max: toFloatPtr(100),
|
||||
},
|
||||
}}}
|
||||
canary := &flaggerv1.Canary{
|
||||
ObjectMeta: metav1.ObjectMeta{Namespace: "default"},
|
||||
Spec: flaggerv1.CanarySpec{Analysis: analysis},
|
||||
}
|
||||
assert.Equal(t, true, ctrl.runMetricChecks(canary))
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user