fix(e2e): resourcepool condition (#1773)

Signed-off-by: CorentinPtrl <pitrel.corentin@gmail.com>
This commit is contained in:
Corentin Pitrel
2025-12-08 09:37:19 +01:00
committed by GitHub
parent b9a20a1e24
commit 711cef90c8
+79 -6
View File
@@ -5,6 +5,8 @@ package e2e
import (
"context"
"slices"
"strings"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
@@ -832,7 +834,13 @@ var _ = Describe("ResourcePool Tests", Label("resourcepool"), func() {
err = k8sClient.Get(context.TODO(), client.ObjectKey{Name: claim.Name, Namespace: claim.Namespace}, claim)
Expect(err).Should(Succeed())
Expect(claim.Status.Condition.Message).To(Equal("requested: requests.cpu=4, available: requests.cpu=2"), "Actual message"+claim.Status.Condition.Message)
conditions := extractResourcePoolMessage(claim.Status.Condition.Message)
expected := []string{
"requested.requests.cpu=4",
"available.requests.cpu=2",
}
Expect(containsAll(conditions, expected)).To(BeTrue(), "Actual message"+claim.Status.Condition.Message)
Expect(claim.Status.Condition.Reason).To(Equal(meta.PoolExhaustedReason))
Expect(claim.Status.Condition.Status).To(Equal(metav1.ConditionFalse))
Expect(claim.Status.Condition.Type).To(Equal(meta.BoundCondition))
@@ -934,7 +942,13 @@ var _ = Describe("ResourcePool Tests", Label("resourcepool"), func() {
err = k8sClient.Get(context.TODO(), client.ObjectKey{Name: claim.Name, Namespace: claim.Namespace}, claim)
Expect(err).Should(Succeed())
Expect(claim.Status.Condition.Message).To(Equal("requested: requests.cpu=4, available: requests.cpu=0"), "Actual message"+claim.Status.Condition.Message)
conditions := extractResourcePoolMessage(claim.Status.Condition.Message)
expected := []string{
"requested.requests.cpu=4",
"available.requests.cpu=0",
}
Expect(containsAll(conditions, expected)).To(BeTrue(), "Actual message"+claim.Status.Condition.Message)
Expect(claim.Status.Condition.Reason).To(Equal(meta.PoolExhaustedReason))
Expect(claim.Status.Condition.Status).To(Equal(metav1.ConditionFalse))
Expect(claim.Status.Condition.Type).To(Equal(meta.BoundCondition))
@@ -1090,7 +1104,13 @@ var _ = Describe("ResourcePool Tests", Label("resourcepool"), func() {
err = k8sClient.Get(context.TODO(), client.ObjectKey{Name: claim.Name, Namespace: claim.Namespace}, claim)
Expect(err).Should(Succeed())
Expect(claim.Status.Condition.Message).To(Equal("requested: requests.cpu=4, available: requests.cpu=2"), "Actual message"+claim.Status.Condition.Message)
conditions := extractResourcePoolMessage(claim.Status.Condition.Message)
expected := []string{
"requested.requests.cpu=4",
"available.requests.cpu=2",
}
Expect(containsAll(conditions, expected)).To(BeTrue(), "Actual message"+claim.Status.Condition.Message)
Expect(claim.Status.Condition.Reason).To(Equal(meta.PoolExhaustedReason))
Expect(claim.Status.Condition.Status).To(Equal(metav1.ConditionFalse))
Expect(claim.Status.Condition.Type).To(Equal(meta.BoundCondition))
@@ -1117,7 +1137,13 @@ var _ = Describe("ResourcePool Tests", Label("resourcepool"), func() {
err = k8sClient.Get(context.TODO(), client.ObjectKey{Name: claim.Name, Namespace: claim.Namespace}, claim)
Expect(err).Should(Succeed())
Expect(claim.Status.Condition.Message).To(Equal("requested: limits.cpu=4, available: limits.cpu=2"), "Actual message"+claim.Status.Condition.Message)
conditions := extractResourcePoolMessage(claim.Status.Condition.Message)
expected := []string{
"requested.limits.cpu=4",
"available.limits.cpu=2",
}
Expect(containsAll(conditions, expected)).To(BeTrue(), "Actual message"+claim.Status.Condition.Message)
Expect(claim.Status.Condition.Reason).To(Equal(meta.PoolExhaustedReason))
Expect(claim.Status.Condition.Status).To(Equal(metav1.ConditionFalse))
Expect(claim.Status.Condition.Type).To(Equal(meta.BoundCondition))
@@ -1145,7 +1171,15 @@ var _ = Describe("ResourcePool Tests", Label("resourcepool"), func() {
err = k8sClient.Get(context.TODO(), client.ObjectKey{Name: claim.Name, Namespace: claim.Namespace}, claim)
Expect(err).Should(Succeed())
Expect(claim.Status.Condition.Message).To(Equal("requested: limits.cpu=2, queued: limits.cpu=4; requested: requests.cpu=2, queued: requests.cpu=4"), "Actual message"+claim.Status.Condition.Message)
conditions := extractResourcePoolMessage(claim.Status.Condition.Message)
expected := []string{
"requested.limits.cpu=2",
"queued.limits.cpu=4",
"requested.requests.cpu=2",
"queued.requests.cpu=4",
}
Expect(containsAll(conditions, expected)).To(BeTrue(), "Actual message"+claim.Status.Condition.Message)
Expect(claim.Status.Condition.Reason).To(Equal(meta.QueueExhaustedReason))
Expect(claim.Status.Condition.Status).To(Equal(metav1.ConditionFalse))
Expect(claim.Status.Condition.Type).To(Equal(meta.BoundCondition))
@@ -1275,8 +1309,15 @@ var _ = Describe("ResourcePool Tests", Label("resourcepool"), func() {
err = k8sClient.Get(context.TODO(), client.ObjectKey{Name: claim.Name, Namespace: claim.Namespace}, claim)
Expect(err).Should(Succeed())
conditions := extractResourcePoolMessage(claim.Status.Condition.Message)
expected := []string{
"requested.limits.cpu=2",
"available.limits.cpu=0",
"requested.requests.cpu=2",
"available.requests.cpu=0",
}
Expect(claim.Status.Condition.Message).To(Equal("requested: limits.cpu=2, available: limits.cpu=0; requested: requests.cpu=2, available: requests.cpu=0"), "Actual message "+claim.Status.Condition.Message)
Expect(containsAll(conditions, expected)).To(BeTrue(), "Actual message"+claim.Status.Condition.Message)
Expect(claim.Status.Condition.Reason).To(Equal(meta.PoolExhaustedReason))
Expect(claim.Status.Condition.Status).To(Equal(metav1.ConditionFalse))
Expect(claim.Status.Condition.Type).To(Equal(meta.BoundCondition))
@@ -2024,3 +2065,35 @@ func isBoundToPool(pool *capsulev1beta2.ResourcePool, claim *capsulev1beta2.Reso
return true
}
func containsAll[T comparable](haystack []T, needles []T) bool {
for _, n := range needles {
if !slices.Contains(haystack, n) {
return false
}
}
return true
}
func extractResourcePoolMessage(msg string) []string {
var out []string
parts := strings.FieldsFunc(msg, func(r rune) bool {
return r == ',' || r == ';'
})
for _, p := range parts {
p = strings.TrimSpace(p)
kv := strings.SplitN(p, ": ", 2)
if len(kv) != 2 {
continue
}
kind := kv[0]
value := kv[1]
out = append(out, kind+"."+value)
}
return out
}