@@ -21,7 +21,9 @@ import (
21
21
. "github.com/onsi/gomega"
22
22
appsv1 "k8s.io/api/apps/v1"
23
23
v1 "k8s.io/api/core/v1"
24
- "k8s.io/apimachinery/pkg/util/sets"
24
+ "k8s.io/apimachinery/pkg/api/resource"
25
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26
+ "k8s.io/apimachinery/pkg/labels"
25
27
"knative.dev/pkg/ptr"
26
28
27
29
"github.com/aws/karpenter/pkg/apis/awsnodetemplate/v1alpha1"
@@ -56,19 +58,24 @@ var _ = Describe("KubeletConfiguration Overrides", func() {
56
58
MaxPods : ptr .Int32 (1 + int32 (dsCount )),
57
59
}
58
60
59
- pods := []* v1.Pod {test .Pod (), test .Pod (), test .Pod ()}
60
- env .ExpectCreated (provisioner , provider )
61
- for _ , pod := range pods {
62
- env .ExpectCreated (pod )
63
- }
64
- env .EventuallyExpectHealthy (pods ... )
65
- env .ExpectCreatedNodeCount ("==" , 3 )
61
+ numPods := 3
62
+ dep := test .Deployment (test.DeploymentOptions {
63
+ Replicas : int32 (numPods ),
64
+ PodOptions : test.PodOptions {
65
+ ObjectMeta : metav1.ObjectMeta {
66
+ Labels : map [string ]string {"app" : "large-app" },
67
+ },
68
+ ResourceRequirements : v1.ResourceRequirements {
69
+ Requests : v1.ResourceList {v1 .ResourceCPU : resource .MustParse ("100m" )},
70
+ },
71
+ },
72
+ })
73
+ selector := labels .SelectorFromSet (dep .Spec .Selector .MatchLabels )
74
+ env .ExpectCreated (provisioner , provider , dep )
66
75
67
- nodeNames := sets .NewString ()
68
- for _ , pod := range pods {
69
- nodeNames .Insert (pod .Spec .NodeName )
70
- }
71
- Expect (len (nodeNames )).To (BeNumerically ("==" , 3 ))
76
+ env .EventuallyExpectHealthyPodCount (selector , numPods )
77
+ env .ExpectCreatedNodeCount ("==" , 3 )
78
+ env .ExpectUniqueNodeNames (selector , 3 )
72
79
})
73
80
It ("should schedule pods onto separate nodes when podsPerCore is set" , func () {
74
81
provider := test .AWSNodeTemplate (v1alpha1.AWSNodeTemplateSpec {AWS : awsv1alpha1.AWS {
@@ -92,6 +99,19 @@ var _ = Describe("KubeletConfiguration Overrides", func() {
92
99
},
93
100
},
94
101
})
102
+ numPods := 4
103
+ dep := test .Deployment (test.DeploymentOptions {
104
+ Replicas : int32 (numPods ),
105
+ PodOptions : test.PodOptions {
106
+ ObjectMeta : metav1.ObjectMeta {
107
+ Labels : map [string ]string {"app" : "large-app" },
108
+ },
109
+ ResourceRequirements : v1.ResourceRequirements {
110
+ Requests : v1.ResourceList {v1 .ResourceCPU : resource .MustParse ("100m" )},
111
+ },
112
+ },
113
+ })
114
+ selector := labels .SelectorFromSet (dep .Spec .Selector .MatchLabels )
95
115
96
116
// Get the DS pod count and use it to calculate the DS pod overhead
97
117
// We calculate podsPerCore to split the test pods and the DS pods between two nodes:
@@ -106,19 +126,10 @@ var _ = Describe("KubeletConfiguration Overrides", func() {
106
126
PodsPerCore : ptr .Int32 (int32 (math .Ceil (float64 (2 + dsCount ) / 2 ))),
107
127
}
108
128
109
- pods := []* v1.Pod {test .Pod (), test .Pod (), test .Pod (), test .Pod ()}
110
- env .ExpectCreated (provisioner , provider )
111
- for _ , pod := range pods {
112
- env .ExpectCreated (pod )
113
- }
114
- env .EventuallyExpectHealthy (pods ... )
129
+ env .ExpectCreated (provisioner , provider , dep )
130
+ env .EventuallyExpectHealthyPodCount (selector , numPods )
115
131
env .ExpectCreatedNodeCount ("==" , 2 )
116
-
117
- nodeNames := sets .NewString ()
118
- for _ , pod := range pods {
119
- nodeNames .Insert (pod .Spec .NodeName )
120
- }
121
- Expect (len (nodeNames )).To (BeNumerically ("==" , 2 ))
132
+ env .ExpectUniqueNodeNames (selector , 2 )
122
133
})
123
134
It ("should ignore podsPerCore value when Bottlerocket is used" , func () {
124
135
provider := test .AWSNodeTemplate (v1alpha1.AWSNodeTemplateSpec {AWS : awsv1alpha1.AWS {
@@ -141,14 +152,24 @@ var _ = Describe("KubeletConfiguration Overrides", func() {
141
152
},
142
153
},
143
154
})
155
+ numPods := 6
156
+ dep := test .Deployment (test.DeploymentOptions {
157
+ Replicas : int32 (numPods ),
158
+ PodOptions : test.PodOptions {
159
+ ObjectMeta : metav1.ObjectMeta {
160
+ Labels : map [string ]string {"app" : "large-app" },
161
+ },
162
+ ResourceRequirements : v1.ResourceRequirements {
163
+ Requests : v1.ResourceList {v1 .ResourceCPU : resource .MustParse ("100m" )},
164
+ },
165
+ },
166
+ })
167
+ selector := labels .SelectorFromSet (dep .Spec .Selector .MatchLabels )
144
168
145
- pods := []* v1.Pod {test .Pod (), test .Pod (), test .Pod (), test .Pod (), test .Pod (), test .Pod ()}
146
- env .ExpectCreated (provisioner , provider )
147
- for _ , pod := range pods {
148
- env .ExpectCreated (pod )
149
- }
150
- env .EventuallyExpectHealthy (pods ... )
169
+ env .ExpectCreated (provisioner , provider , dep )
170
+ env .EventuallyExpectHealthyPodCount (selector , numPods )
151
171
env .ExpectCreatedNodeCount ("==" , 1 )
172
+ env .ExpectUniqueNodeNames (selector , 1 )
152
173
})
153
174
})
154
175
0 commit comments