@@ -3,13 +3,11 @@ package memorybroker
33import (
44 "context"
55 "testing"
6+ "time"
67
7- appsv1 "k8s.io/api/apps/v1"
88 corev1 "k8s.io/api/core/v1"
9- rbacv1 "k8s.io/api/rbac/v1"
109 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1110 "k8s.io/apimachinery/pkg/runtime"
12- "k8s.io/apimachinery/pkg/util/intstr"
1311 kt "k8s.io/client-go/testing"
1412
1513 v1addr "knative.dev/pkg/client/injection/ducks/duck/v1/addressable"
@@ -21,25 +19,24 @@ import (
2119 fakeeventingclient "github.com/triggermesh/triggermesh-core/pkg/client/generated/injection/client/fake"
2220 "github.com/triggermesh/triggermesh-core/pkg/client/generated/injection/reconciler/eventing/v1alpha1/memorybroker"
2321 "github.com/triggermesh/triggermesh-core/pkg/reconciler/common"
22+ "github.com/triggermesh/triggermesh-core/pkg/reconciler/resources"
2423 tmt "github.com/triggermesh/triggermesh-core/pkg/reconciler/testing"
24+ tresources "github.com/triggermesh/triggermesh-core/pkg/reconciler/testing/resources"
2525 tmtv1alpha1 "github.com/triggermesh/triggermesh-core/pkg/reconciler/testing/v1alpha1"
2626)
2727
28- const (
29- tBrokerImage = "image.test:v.test"
30- tNamespace = "test-namespace"
31- tName = "test-name"
32- tBrokerSuffix = "-mb-broker"
33- )
34-
3528var (
36- tKey = tNamespace + "/" + tName
37- tTrue = true
38- tReplicas int32 = 1
39- // tNow = metav1.NewTime(time.Now())
29+ tKey = tresources .TestNamespace + "/" + tresources .TestName
30+ tTrue = true
31+ tNow = metav1 .NewTime (time .Now ())
4032)
4133
4234func TestAllCases (t * testing.T ) {
35+ bh := tresources.BrokerHelper {
36+ Suffix : "mb" ,
37+ Kind : "MemoryBroker" ,
38+ }
39+
4340 table := knt.TableTest {
4441 {
4542 Name : "bad workqueue key" ,
@@ -53,19 +50,18 @@ func TestAllCases(t *testing.T) {
5350 Name : "new broker" ,
5451 Key : tKey ,
5552 Objects : []runtime.Object {
56- tmtv1alpha1 .NewMemoryBroker (tNamespace , tName ),
53+ tmtv1alpha1 .NewMemoryBroker (tresources . TestNamespace , tresources . TestName ),
5754 },
5855 WantCreates : []runtime.Object {
59- newSecretForBroker (tNamespace , tName ),
60- newServiceAccountForBroker ( tNamespace , tName ),
61- newRoleBindingForBroker ( tNamespace , tName ),
62- newDeploymentForBroker ( tNamespace , tName ),
63- newServiceForBroker ( tNamespace , tName ),
56+ newSecretForBroker (tresources . TestNamespace , tresources . TestName ),
57+ tresources . NewServiceAccountForBroker ( tresources . TestNamespace , tresources . TestName , bh ),
58+ tresources . NewRoleBindingForBroker ( tresources . TestNamespace , tresources . TestName , bh ),
59+ tresources . NewDeploymentForBroker ( tresources . TestNamespace , tresources . TestName , bh ),
60+ tresources . NewServiceForBroker ( tresources . TestNamespace , tresources . TestName , bh ),
6461 },
6562 WantStatusUpdates : []kt.UpdateActionImpl {
6663 {
67- Object : tmtv1alpha1 .NewMemoryBroker (tNamespace , tName ,
68- // tmtv1alpha1.MemoryBrokerWithStatusAddress("http://"+tName+"-mb-broker."+tNamespace+".svc.cluster.local"),
64+ Object : tmtv1alpha1 .NewMemoryBroker (tresources .TestNamespace , tresources .TestName ,
6965 tmtv1alpha1 .MemoryBrokerWithStatusCondition ("Addressable" , corev1 .ConditionUnknown , "" , "" ),
7066 tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerConfigSecretReady" , corev1 .ConditionTrue , "" , "" ),
7167 tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerDeploymentReady" , corev1 .ConditionUnknown , "" , "" ),
@@ -78,41 +74,61 @@ func TestAllCases(t *testing.T) {
7874 },
7975 },
8076 WantEvents : []string {
81- knt .Eventf (corev1 .EventTypeWarning , "UnavailableEndpoints" , `Endpoints for broker service "` + tNamespace + `/` + tName + `-mb-broker" do not exist` ),
77+ knt .Eventf (corev1 .EventTypeWarning , "UnavailableEndpoints" , `Endpoints for broker service "` + tresources .TestNamespace + `/` + tresources .TestName + `-mb-broker" do not exist` ),
78+ },
79+ }, {
80+ Name : "update status" ,
81+ Key : tKey ,
82+ Objects : []runtime.Object {
83+ tmtv1alpha1 .NewMemoryBroker (tresources .TestNamespace , tresources .TestName ,
84+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("Addressable" , corev1 .ConditionUnknown , "" , "" ),
85+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerConfigSecretReady" , corev1 .ConditionTrue , "" , "" ),
86+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerDeploymentReady" , corev1 .ConditionUnknown , "" , "" ),
87+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerEndpointsReady" , corev1 .ConditionFalse , "UnavailableEndpoints" , "Endpoints for broker service do not exist" ),
88+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerServiceAccountReady" , corev1 .ConditionTrue , "" , "" ),
89+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerServiceReady" , corev1 .ConditionTrue , "" , "" ),
90+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("MemoryBrokerBrokerRoleBinding" , corev1 .ConditionTrue , "" , "" ),
91+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("Ready" , corev1 .ConditionFalse , "UnavailableEndpoints" , "Endpoints for broker service do not exist" ),
92+ ),
93+ newSecretForBroker (tresources .TestNamespace , tresources .TestName ),
94+ tresources .NewServiceAccountForBroker (tresources .TestNamespace , tresources .TestName , bh ),
95+ tresources .NewRoleBindingForBroker (tresources .TestNamespace , tresources .TestName , bh ),
96+ tresources .NewDeploymentForBroker (tresources .TestNamespace , tresources .TestName , bh , tresources .WithDeploymentReady ()),
97+ tresources .NewServiceForBroker (tresources .TestNamespace , tresources .TestName , bh ),
98+ tresources .NewEndpointForBroker (tresources .TestNamespace , tresources .TestName , bh ),
99+ },
100+ WantStatusUpdates : []kt.UpdateActionImpl {
101+ {
102+ Object : tmtv1alpha1 .NewMemoryBroker (tresources .TestNamespace , tresources .TestName ,
103+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("Addressable" , corev1 .ConditionTrue , "" , "" ),
104+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerConfigSecretReady" , corev1 .ConditionTrue , "" , "" ),
105+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerDeploymentReady" , corev1 .ConditionTrue , "" , "" ),
106+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerEndpointsReady" , corev1 .ConditionTrue , "" , "" ),
107+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerServiceAccountReady" , corev1 .ConditionTrue , "" , "" ),
108+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("BrokerServiceReady" , corev1 .ConditionTrue , "" , "" ),
109+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("MemoryBrokerBrokerRoleBinding" , corev1 .ConditionTrue , "" , "" ),
110+ tmtv1alpha1 .MemoryBrokerWithStatusCondition ("Ready" , corev1 .ConditionTrue , "" , "" ),
111+ tmtv1alpha1 .MemoryBrokerWithStatusAddress ("http://" + tresources .TestName + "-mb-broker." + tresources .TestNamespace + ".svc.cluster.local" ),
112+ ),
113+ },
114+ },
115+ }, {
116+ Name : "deleting broker" ,
117+ Key : tKey ,
118+ Objects : []runtime.Object {
119+ tmtv1alpha1 .NewMemoryBroker (tresources .TestNamespace , tresources .TestName ,
120+ tmtv1alpha1 .MemoryBrokerWithMetaOptions (resources .MetaSetDeletion (& tNow ))),
121+ },
122+ WantCreates : []runtime.Object {
123+ // Reconciliation is skipped and no objects are created.
82124 },
83-
84- // }, {
85- // Name: "update status",
86- // Key: tKey,
87- // Objects: []runtime.Object{
88- // tmtv1alpha1.NewMemoryBroker(tNamespace, tName),
89- // },
90- // WantCreates: []runtime.Object{
91- // newSecretForBroker(tNamespace, tName),
92- // newServiceAccountForBroker(tNamespace, tName),
93- // newRoleBindingForBroker(tNamespace, tName),
94- // newDeploymentForBroker(tNamespace, tName),
95- // newServiceForBroker(tNamespace, tName),
96- // },
97- // WantEvents: []string{
98- // knt.Eventf(corev1.EventTypeWarning, "UnavailableEndpoints", `Endpoints for broker service "`+tNamespace+`/`+tName+`-mb-broker" do not exist`),
99- // },
100- // }, {
101- // Name: "deleting broker",
102- // Key: tKey,
103- // Objects: []runtime.Object{
104- // tmtv1alpha1.NewMemoryBroker(tNamespace, tName,
105- // tmtv1alpha1.MemoryBrokerWithMetaOptions(resources.MetaSetDeletion(&tNow))),
106- // },
107- // WantCreates: []runtime.Object{
108- // // Reconciliation is skipped and no objects are created.
109- // },
110125 },
111126 }
112127
113128 logger := logtesting .TestLogger (t )
114129 table .Test (t , tmt .MakeFactory (func (ctx context.Context , listers * tmt.Listers , cmw configmap.Watcher ) controller.Reconciler {
115130 ctx = v1addr .WithDuck (ctx )
131+
116132 r := & reconciler {
117133 secretReconciler : common .NewSecretReconciler (ctx ,
118134 listers .GetSecretLister (),
@@ -126,7 +142,7 @@ func TestAllCases(t *testing.T) {
126142 listers .GetDeploymentLister (),
127143 listers .GetServiceLister (),
128144 listers .GetEndpointsLister (),
129- tBrokerImage , corev1 .PullAlways ),
145+ tresources . TestBrokerImage , corev1 .PullAlways ),
130146 }
131147
132148 return memorybroker .NewReconciler (ctx , logger ,
@@ -172,205 +188,3 @@ func newSecretForBroker(namespace, name string) *corev1.Secret {
172188
173189 return s
174190}
175-
176- func newServiceAccountForBroker (namespace , name string ) * corev1.ServiceAccount {
177- sa := & corev1.ServiceAccount {
178- TypeMeta : metav1.TypeMeta {
179- APIVersion : "v1" ,
180- Kind : "ServiceAccount" ,
181- },
182- ObjectMeta : metav1.ObjectMeta {
183- Namespace : namespace ,
184- Name : name + tBrokerSuffix ,
185- Labels : map [string ]string {
186- "app.kubernetes.io/component" : "broker-serviceaccount" ,
187- "app.kubernetes.io/instance" : name + tBrokerSuffix ,
188- "app.kubernetes.io/managed-by" : "triggermesh-core" ,
189- "app.kubernetes.io/name" : "memorybroker" ,
190- "app.kubernetes.io/part-of" : "triggermesh" ,
191- },
192- OwnerReferences : []metav1.OwnerReference {
193- {
194- APIVersion : "eventing.triggermesh.io/v1alpha1" ,
195- Kind : "MemoryBroker" ,
196- Name : name ,
197- Controller : & tTrue ,
198- BlockOwnerDeletion : & tTrue ,
199- },
200- },
201- },
202- }
203-
204- return sa
205- }
206-
207- func newRoleBindingForBroker (namespace , name string ) * rbacv1.RoleBinding {
208- rb := & rbacv1.RoleBinding {
209- TypeMeta : metav1.TypeMeta {
210- APIVersion : "rbac.authorization.k8s.io/v1" ,
211- Kind : "RoleBinding" ,
212- },
213- ObjectMeta : metav1.ObjectMeta {
214- Namespace : namespace ,
215- Name : name + tBrokerSuffix ,
216- Labels : map [string ]string {
217- "app.kubernetes.io/component" : "broker-rolebinding" ,
218- "app.kubernetes.io/instance" : name + tBrokerSuffix ,
219- "app.kubernetes.io/managed-by" : "triggermesh-core" ,
220- "app.kubernetes.io/name" : "memorybroker" ,
221- "app.kubernetes.io/part-of" : "triggermesh" ,
222- },
223- OwnerReferences : []metav1.OwnerReference {
224- {
225- APIVersion : "eventing.triggermesh.io/v1alpha1" ,
226- Kind : "MemoryBroker" ,
227- Name : name ,
228- Controller : & tTrue ,
229- BlockOwnerDeletion : & tTrue ,
230- },
231- },
232- },
233- Subjects : []rbacv1.Subject {
234- {Kind : "ServiceAccount" , Name : name + tBrokerSuffix , Namespace : namespace },
235- },
236- RoleRef : rbacv1.RoleRef {
237- APIGroup : "rbac.authorization.k8s.io" ,
238- Kind : "ClusterRole" ,
239- Name : "triggermesh-broker" ,
240- },
241- }
242-
243- return rb
244- }
245-
246- func newServiceForBroker (namespace , name string ) * corev1.Service {
247- s := & corev1.Service {
248- TypeMeta : metav1.TypeMeta {
249- APIVersion : "v1" ,
250- Kind : "Service" ,
251- },
252- ObjectMeta : metav1.ObjectMeta {
253- Namespace : namespace ,
254- Name : name + tBrokerSuffix ,
255- Labels : map [string ]string {
256- "app.kubernetes.io/component" : "broker-service" ,
257- "app.kubernetes.io/instance" : name + tBrokerSuffix ,
258- "app.kubernetes.io/managed-by" : "triggermesh-core" ,
259- "app.kubernetes.io/name" : "memorybroker" ,
260- "app.kubernetes.io/part-of" : "triggermesh" ,
261- },
262- OwnerReferences : []metav1.OwnerReference {
263- {
264- APIVersion : "eventing.triggermesh.io/v1alpha1" ,
265- Kind : "MemoryBroker" ,
266- Name : name ,
267- Controller : & tTrue ,
268- BlockOwnerDeletion : & tTrue ,
269- },
270- },
271- },
272- Spec : corev1.ServiceSpec {
273- Selector : map [string ]string {
274- "app.kubernetes.io/component" : "broker-deployment" ,
275- "app.kubernetes.io/instance" : name + "-mb-broker" ,
276- },
277- Ports : []corev1.ServicePort {
278- {
279- Name : "httpce" ,
280- Port : 80 ,
281- TargetPort : intstr.IntOrString {
282- IntVal : 8080 ,
283- },
284- },
285- },
286- Type : corev1 .ServiceTypeClusterIP ,
287- },
288- }
289-
290- return s
291- }
292-
293- func newDeploymentForBroker (namespace , name string ) * appsv1.Deployment {
294- d := & appsv1.Deployment {
295- TypeMeta : metav1.TypeMeta {
296- APIVersion : "apps/v1" ,
297- Kind : "Deployment" ,
298- },
299- ObjectMeta : metav1.ObjectMeta {
300- Namespace : namespace ,
301- Name : name + tBrokerSuffix ,
302- Labels : map [string ]string {
303- "app.kubernetes.io/component" : "broker-deployment" ,
304- "app.kubernetes.io/instance" : name + tBrokerSuffix ,
305- "app.kubernetes.io/managed-by" : "triggermesh-core" ,
306- "app.kubernetes.io/name" : "memorybroker" ,
307- "app.kubernetes.io/part-of" : "triggermesh" ,
308- },
309- OwnerReferences : []metav1.OwnerReference {
310- {
311- APIVersion : "eventing.triggermesh.io/v1alpha1" ,
312- Kind : "MemoryBroker" ,
313- Name : name ,
314- Controller : & tTrue ,
315- BlockOwnerDeletion : & tTrue ,
316- },
317- },
318- },
319- Spec : appsv1.DeploymentSpec {
320- Replicas : & tReplicas ,
321- Selector : & metav1.LabelSelector {
322- MatchLabels : map [string ]string {
323- "app.kubernetes.io/component" : "broker-deployment" ,
324- "app.kubernetes.io/instance" : name + tBrokerSuffix ,
325- },
326- },
327- Template : corev1.PodTemplateSpec {
328- ObjectMeta : metav1.ObjectMeta {
329- Labels : map [string ]string {
330- "app.kubernetes.io/component" : "broker-deployment" ,
331- "app.kubernetes.io/instance" : name + tBrokerSuffix ,
332- "app.kubernetes.io/managed-by" : "triggermesh-core" ,
333- "app.kubernetes.io/part-of" : "triggermesh" ,
334- },
335- },
336- Spec : corev1.PodSpec {
337- ServiceAccountName : name + tBrokerSuffix ,
338- Containers : []corev1.Container {
339- {
340- Name : "broker" ,
341- Image : tBrokerImage ,
342- Args : []string {"start" },
343- ImagePullPolicy : corev1 .PullAlways ,
344- Ports : []corev1.ContainerPort {
345- {
346- Name : "httpce" ,
347- ContainerPort : 8080 ,
348- },
349- {
350- Name : "metrics" ,
351- ContainerPort : 9090 ,
352- },
353- },
354- Env : []corev1.EnvVar {
355- {Name : "PORT" , Value : "8080" },
356- {Name : "BROKER_NAME" , Value : name },
357- {
358- Name : "KUBERNETES_NAMESPACE" ,
359- ValueFrom : & corev1.EnvVarSource {
360- FieldRef : & corev1.ObjectFieldSelector {
361- FieldPath : "metadata.namespace" ,
362- },
363- },
364- },
365- {Name : "KUBERNETES_BROKER_CONFIG_SECRET_NAME" , Value : name + "-mb-config" },
366- {Name : "KUBERNETES_BROKER_CONFIG_SECRET_KEY" , Value : "config" },
367- },
368- },
369- },
370- },
371- },
372- },
373- }
374-
375- return d
376- }
0 commit comments