@@ -4,10 +4,12 @@ import (
44 "context"
55 "testing"
66
7+ appsv1 "k8s.io/api/apps/v1"
78 corev1 "k8s.io/api/core/v1"
89 rbacv1 "k8s.io/api/rbac/v1"
910 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1011 "k8s.io/apimachinery/pkg/runtime"
12+ "k8s.io/apimachinery/pkg/util/intstr"
1113 v1addr "knative.dev/pkg/client/injection/ducks/duck/v1/addressable"
1214 "knative.dev/pkg/configmap"
1315 "knative.dev/pkg/controller"
@@ -23,13 +25,15 @@ import (
2325
2426const (
2527 tBrokerImage = "image.test:v.test"
26- testNamespace = "test-namespace"
27- testName = "test-name"
28+ tNamespace = "test-namespace"
29+ tName = "test-name"
30+ tBrokerSuffix = "-mb-broker"
2831)
2932
3033var (
31- tKey = testNamespace + "/" + testName
32- tTrue = true
34+ tKey = tNamespace + "/" + tName
35+ tTrue = true
36+ tReplicas int32 = 1
3337)
3438
3539func TestAllCases (t * testing.T ) {
@@ -46,12 +50,17 @@ func TestAllCases(t *testing.T) {
4650 Name : "new broker" ,
4751 Key : tKey ,
4852 Objects : []runtime.Object {
49- tmtv1alpha1 .NewMemoryBroker (testNamespace , testName ),
53+ tmtv1alpha1 .NewMemoryBroker (tNamespace , tName ),
5054 },
5155 WantCreates : []runtime.Object {
52- newSecretForBroker (testNamespace , testName ),
53- newServiceAccountForBroker (testNamespace , testName ),
54- newRoleBindingForBroker (testNamespace , testName ),
56+ newSecretForBroker (tNamespace , tName ),
57+ newServiceAccountForBroker (tNamespace , tName ),
58+ newRoleBindingForBroker (tNamespace , tName ),
59+ newDeploymentForBroker (tNamespace , tName ),
60+ newServiceForBroker (tNamespace , tName ),
61+ },
62+ WantEvents : []string {
63+ knt .Eventf (corev1 .EventTypeWarning , "UnavailableEndpoints" , `Endpoints for broker service "` + tNamespace + `/` + tName + `-mb-broker" do not exist` ),
5564 },
5665 },
5766 }
@@ -127,10 +136,10 @@ func newServiceAccountForBroker(namespace, name string) *corev1.ServiceAccount {
127136 },
128137 ObjectMeta : metav1.ObjectMeta {
129138 Namespace : namespace ,
130- Name : name + "-mb-broker" ,
139+ Name : name + tBrokerSuffix ,
131140 Labels : map [string ]string {
132141 "app.kubernetes.io/component" : "broker-serviceaccount" ,
133- "app.kubernetes.io/instance" : name + "-mb-broker" ,
142+ "app.kubernetes.io/instance" : name + tBrokerSuffix ,
134143 "app.kubernetes.io/managed-by" : "triggermesh-core" ,
135144 "app.kubernetes.io/name" : "memorybroker" ,
136145 "app.kubernetes.io/part-of" : "triggermesh" ,
@@ -158,10 +167,10 @@ func newRoleBindingForBroker(namespace, name string) *rbacv1.RoleBinding {
158167 },
159168 ObjectMeta : metav1.ObjectMeta {
160169 Namespace : namespace ,
161- Name : name + "-mb-broker" ,
170+ Name : name + tBrokerSuffix ,
162171 Labels : map [string ]string {
163172 "app.kubernetes.io/component" : "broker-rolebinding" ,
164- "app.kubernetes.io/instance" : name + "mb-broker" ,
173+ "app.kubernetes.io/instance" : name + tBrokerSuffix ,
165174 "app.kubernetes.io/managed-by" : "triggermesh-core" ,
166175 "app.kubernetes.io/name" : "memorybroker" ,
167176 "app.kubernetes.io/part-of" : "triggermesh" ,
@@ -177,7 +186,7 @@ func newRoleBindingForBroker(namespace, name string) *rbacv1.RoleBinding {
177186 },
178187 },
179188 Subjects : []rbacv1.Subject {
180- {Kind : "ServiceAccount" , Name : name + "-mb-broker" , Namespace : namespace },
189+ {Kind : "ServiceAccount" , Name : name + tBrokerSuffix , Namespace : namespace },
181190 },
182191 RoleRef : rbacv1.RoleRef {
183192 APIGroup : "rbac.authorization.k8s.io" ,
@@ -188,3 +197,135 @@ func newRoleBindingForBroker(namespace, name string) *rbacv1.RoleBinding {
188197
189198 return rb
190199}
200+
201+ func newServiceForBroker (namespace , name string ) * corev1.Service {
202+ s := & corev1.Service {
203+ TypeMeta : metav1.TypeMeta {
204+ APIVersion : "v1" ,
205+ Kind : "Service" ,
206+ },
207+ ObjectMeta : metav1.ObjectMeta {
208+ Namespace : namespace ,
209+ Name : name + tBrokerSuffix ,
210+ Labels : map [string ]string {
211+ "app.kubernetes.io/component" : "broker-service" ,
212+ "app.kubernetes.io/instance" : name + tBrokerSuffix ,
213+ "app.kubernetes.io/managed-by" : "triggermesh-core" ,
214+ "app.kubernetes.io/name" : "memorybroker" ,
215+ "app.kubernetes.io/part-of" : "triggermesh" ,
216+ },
217+ OwnerReferences : []metav1.OwnerReference {
218+ {
219+ APIVersion : "eventing.triggermesh.io/v1alpha1" ,
220+ Kind : "MemoryBroker" ,
221+ Name : name ,
222+ Controller : & tTrue ,
223+ BlockOwnerDeletion : & tTrue ,
224+ },
225+ },
226+ },
227+ Spec : corev1.ServiceSpec {
228+ Selector : map [string ]string {
229+ "app.kubernetes.io/component" : "broker-deployment" ,
230+ "app.kubernetes.io/instance" : name + "-mb-broker" ,
231+ },
232+ Ports : []corev1.ServicePort {
233+ {
234+ Name : "httpce" ,
235+ Port : 80 ,
236+ TargetPort : intstr.IntOrString {
237+ IntVal : 8080 ,
238+ },
239+ },
240+ },
241+ Type : corev1 .ServiceTypeClusterIP ,
242+ },
243+ }
244+
245+ return s
246+ }
247+
248+ func newDeploymentForBroker (namespace , name string ) * appsv1.Deployment {
249+ d := & appsv1.Deployment {
250+ TypeMeta : metav1.TypeMeta {
251+ APIVersion : "apps/v1" ,
252+ Kind : "Deployment" ,
253+ },
254+ ObjectMeta : metav1.ObjectMeta {
255+ Namespace : namespace ,
256+ Name : name + tBrokerSuffix ,
257+ Labels : map [string ]string {
258+ "app.kubernetes.io/component" : "broker-deployment" ,
259+ "app.kubernetes.io/instance" : name + tBrokerSuffix ,
260+ "app.kubernetes.io/managed-by" : "triggermesh-core" ,
261+ "app.kubernetes.io/name" : "memorybroker" ,
262+ "app.kubernetes.io/part-of" : "triggermesh" ,
263+ },
264+ OwnerReferences : []metav1.OwnerReference {
265+ {
266+ APIVersion : "eventing.triggermesh.io/v1alpha1" ,
267+ Kind : "MemoryBroker" ,
268+ Name : name ,
269+ Controller : & tTrue ,
270+ BlockOwnerDeletion : & tTrue ,
271+ },
272+ },
273+ },
274+ Spec : appsv1.DeploymentSpec {
275+ Replicas : & tReplicas ,
276+ Selector : & metav1.LabelSelector {
277+ MatchLabels : map [string ]string {
278+ "app.kubernetes.io/component" : "broker-deployment" ,
279+ "app.kubernetes.io/instance" : name + tBrokerSuffix ,
280+ },
281+ },
282+ Template : corev1.PodTemplateSpec {
283+ ObjectMeta : metav1.ObjectMeta {
284+ Labels : map [string ]string {
285+ "app.kubernetes.io/component" : "broker-deployment" ,
286+ "app.kubernetes.io/instance" : name + tBrokerSuffix ,
287+ "app.kubernetes.io/managed-by" : "triggermesh-core" ,
288+ "app.kubernetes.io/part-of" : "triggermesh" ,
289+ },
290+ },
291+ Spec : corev1.PodSpec {
292+ ServiceAccountName : name + tBrokerSuffix ,
293+ Containers : []corev1.Container {
294+ {
295+ Name : "broker" ,
296+ Image : tBrokerImage ,
297+ Args : []string {"start" },
298+ ImagePullPolicy : corev1 .PullAlways ,
299+ Ports : []corev1.ContainerPort {
300+ {
301+ Name : "httpce" ,
302+ ContainerPort : 8080 ,
303+ },
304+ {
305+ Name : "metrics" ,
306+ ContainerPort : 9090 ,
307+ },
308+ },
309+ Env : []corev1.EnvVar {
310+ {Name : "PORT" , Value : "8080" },
311+ {Name : "BROKER_NAME" , Value : name },
312+ {
313+ Name : "KUBERNETES_NAMESPACE" ,
314+ ValueFrom : & corev1.EnvVarSource {
315+ FieldRef : & corev1.ObjectFieldSelector {
316+ FieldPath : "metadata.namespace" ,
317+ },
318+ },
319+ },
320+ {Name : "KUBERNETES_BROKER_CONFIG_SECRET_NAME" , Value : name + "-mb-config" },
321+ {Name : "KUBERNETES_BROKER_CONFIG_SECRET_KEY" , Value : "config" },
322+ },
323+ },
324+ },
325+ },
326+ },
327+ },
328+ }
329+
330+ return d
331+ }
0 commit comments