@@ -22,6 +22,8 @@ import (
22
22
23
23
"knative.dev/eventing-kafka-broker/control-plane/pkg/autoscaler/keda"
24
24
"knative.dev/eventing-kafka-broker/control-plane/pkg/kafka"
25
+ brokerconfigmap "knative.dev/eventing-kafka-broker/test/rekt/resources/configmap/broker"
26
+ "knative.dev/eventing-kafka-broker/test/rekt/resources/kafkaauthsecret"
25
27
26
28
"knative.dev/eventing/test/rekt/resources/trigger"
27
29
@@ -55,7 +57,7 @@ import (
55
57
)
56
58
57
59
func KafkaSourceScaledObjectHasNoEmptyAuthRef () * feature.Feature {
58
- f := feature .NewFeatureNamed ( "KafkaSourceScalesToZeroWithKeda" )
60
+ f := feature .NewFeature ( )
59
61
60
62
// we need to ensure that autoscaling is enabled for the rest of the feature to work
61
63
f .Prerequisite ("Autoscaling is enabled" , kafkafeatureflags .AutoscalingEnabled ())
@@ -93,7 +95,7 @@ func KafkaSourceScaledObjectHasNoEmptyAuthRef() *feature.Feature {
93
95
}
94
96
95
97
func KafkaSourceScalesToZeroWithKeda () * feature.Feature {
96
- f := feature .NewFeatureNamed ( "KafkaSourceScalesToZeroWithKeda" )
98
+ f := feature .NewFeature ( )
97
99
98
100
// we need to ensure that autoscaling is enabled for the rest of the feature to work
99
101
f .Prerequisite ("Autoscaling is enabled" , kafkafeatureflags .AutoscalingEnabled ())
@@ -142,6 +144,44 @@ func KafkaSourceScalesToZeroWithKeda() *feature.Feature {
142
144
return f
143
145
}
144
146
147
+ func KafkaSourceSASLScalesToZeroWithKeda () * feature.Feature {
148
+ f := feature .NewFeature ()
149
+
150
+ // we need to ensure that autoscaling is enabled for the rest of the feature to work
151
+ f .Prerequisite ("Autoscaling is enabled" , kafkafeatureflags .AutoscalingEnabled ())
152
+
153
+ sourceCfg := kafkaSourceConfig {
154
+ sourceName : feature .MakeRandomK8sName ("kafka-source" ),
155
+ authMech : SASLMech ,
156
+ topic : feature .MakeRandomK8sName ("kafka-source-keda-sasl" ),
157
+ }
158
+ sinkCfg := kafkaSinkConfig {
159
+ sinkName : feature .MakeRandomK8sName ("kafka-sink" ),
160
+ }
161
+ sinkName , receiver := KafkaSourceFeatureSetup (f , sourceCfg , sinkCfg )
162
+
163
+ sender := feature .MakeRandomK8sName ("eventshub-sender" )
164
+
165
+ event := cetest .FullEvent ()
166
+ event .SetID (uuid .New ().String ())
167
+
168
+ // check that the source initially has replicas = 0
169
+ f .Setup ("Source should start with replicas = 0" , verifyConsumerGroupReplicas (getKafkaSourceCg (sourceCfg .sourceName ), 0 , true ))
170
+
171
+ options := []eventshub.EventsHubOption {
172
+ eventshub .StartSenderToResource (kafkasink .GVR (), sinkName ),
173
+ eventshub .InputEvent (event ),
174
+ }
175
+ f .Requirement ("install eventshub sender" , eventshub .Install (sender , options ... ))
176
+
177
+ f .Requirement ("eventshub receiver gets event" , assert .OnStore (receiver ).MatchEvent (test .HasId (event .ID ())).Exact (1 ))
178
+
179
+ // after the event is sent, the source should scale down to zero replicas
180
+ f .Alpha ("KafkaSource" ).Must ("Scale down to zero" , verifyConsumerGroupReplicas (getKafkaSourceCg (sourceCfg .sourceName ), 0 , false ))
181
+
182
+ return f
183
+ }
184
+
145
185
func TriggerScalesToZeroWithKeda () * feature.Feature {
146
186
f := feature .NewFeature ()
147
187
@@ -171,6 +211,98 @@ func TriggerScalesToZeroWithKeda() *feature.Feature {
171
211
return f
172
212
}
173
213
214
+ func TriggerSASLScalesToZeroWithKeda () * feature.Feature {
215
+ f := feature .NewFeature ()
216
+
217
+ f .Prerequisite ("Autoscaling is enabled" , kafkafeatureflags .AutoscalingEnabled ())
218
+
219
+ event := cetest .FullEvent ()
220
+
221
+ brokerName := feature .MakeRandomK8sName ("broker" )
222
+ triggerName := feature .MakeRandomK8sName ("trigger" )
223
+ sourceName := feature .MakeRandomK8sName ("source" )
224
+ sinkName := feature .MakeRandomK8sName ("sink" )
225
+ brokerConfigName := feature .MakeRandomK8sName ("brokercfg" )
226
+ authSecretName := feature .MakeRandomK8sName ("kafkaauth" )
227
+
228
+ // check that the trigger initially has replicas = 0
229
+ f .Setup ("Trigger should start with replicas = 0" , verifyConsumerGroupReplicas (getTriggerCg (triggerName ), 0 , true ))
230
+
231
+ f .Setup ("Create auth secret" , func (ctx context.Context , t feature.T ) {
232
+ kafkaauthsecret .Install (authSecretName , kafkaauthsecret .WithSslSaslScram512Data (ctx ))(ctx , t )
233
+ })
234
+
235
+ f .Setup ("Create broker config" , brokerconfigmap .Install (brokerConfigName ,
236
+ brokerconfigmap .WithNumPartitions (3 ),
237
+ brokerconfigmap .WithReplicationFactor (3 ),
238
+ brokerconfigmap .WithBootstrapServer (testpkg .BootstrapServersSslSaslScram ),
239
+ brokerconfigmap .WithAuthSecret (authSecretName )))
240
+
241
+ f .Setup ("Install broker" , broker .Install (brokerName , append (
242
+ broker .WithEnvConfig (),
243
+ broker .WithConfig (brokerConfigName ))... ,
244
+ ))
245
+
246
+ f .Setup ("install sink" , eventshub .Install (sinkName , eventshub .StartReceiver ))
247
+ f .Setup ("install broker" , broker .Install (brokerName ))
248
+ f .Setup ("install trigger" , trigger .Install (triggerName , trigger .WithBrokerName (brokerName ), trigger .WithSubscriber (service .AsKReference (sinkName ), "" )))
249
+
250
+ f .Requirement ("install source" , eventshub .Install (sourceName , eventshub .StartSenderToResource (broker .GVR (), brokerName ), eventshub .InputEvent (event )))
251
+
252
+ f .Requirement ("sink receives event" , assert .OnStore (sinkName ).MatchEvent (test .HasId (event .ID ())).Exact (1 ))
253
+
254
+ //after the event is sent, the trigger should scale down to zero replicas
255
+ f .Alpha ("Trigger" ).Must ("Scale down to zero" , verifyConsumerGroupReplicas (getTriggerCg (triggerName ), 0 , false ))
256
+
257
+ return f
258
+ }
259
+
260
+ func TriggerSSLScalesToZeroWithKeda () * feature.Feature {
261
+ f := feature .NewFeature ()
262
+
263
+ f .Prerequisite ("Autoscaling is enabled" , kafkafeatureflags .AutoscalingEnabled ())
264
+
265
+ event := cetest .FullEvent ()
266
+
267
+ brokerName := feature .MakeRandomK8sName ("broker" )
268
+ triggerName := feature .MakeRandomK8sName ("trigger" )
269
+ sourceName := feature .MakeRandomK8sName ("source" )
270
+ sinkName := feature .MakeRandomK8sName ("sink" )
271
+ brokerConfigName := feature .MakeRandomK8sName ("brokercfg" )
272
+ authSecretName := feature .MakeRandomK8sName ("kafkaauth" )
273
+
274
+ // check that the trigger initially has replicas = 0
275
+ f .Setup ("Trigger should start with replicas = 0" , verifyConsumerGroupReplicas (getTriggerCg (triggerName ), 0 , true ))
276
+
277
+ f .Setup ("Create auth secret" , func (ctx context.Context , t feature.T ) {
278
+ kafkaauthsecret .Install (authSecretName , kafkaauthsecret .WithSslData (ctx ))(ctx , t )
279
+ })
280
+
281
+ f .Setup ("Create broker config" , brokerconfigmap .Install (brokerConfigName ,
282
+ brokerconfigmap .WithNumPartitions (3 ),
283
+ brokerconfigmap .WithReplicationFactor (3 ),
284
+ brokerconfigmap .WithBootstrapServer (testpkg .BootstrapServersSsl ),
285
+ brokerconfigmap .WithAuthSecret (authSecretName )))
286
+
287
+ f .Setup ("Install broker" , broker .Install (brokerName , append (
288
+ broker .WithEnvConfig (),
289
+ broker .WithConfig (brokerConfigName ))... ,
290
+ ))
291
+
292
+ f .Setup ("install sink" , eventshub .Install (sinkName , eventshub .StartReceiver ))
293
+ f .Setup ("install broker" , broker .Install (brokerName ))
294
+ f .Setup ("install trigger" , trigger .Install (triggerName , trigger .WithBrokerName (brokerName ), trigger .WithSubscriber (service .AsKReference (sinkName ), "" )))
295
+
296
+ f .Requirement ("install source" , eventshub .Install (sourceName , eventshub .StartSenderToResource (broker .GVR (), brokerName ), eventshub .InputEvent (event )))
297
+
298
+ f .Requirement ("sink receives event" , assert .OnStore (sinkName ).MatchEvent (test .HasId (event .ID ())).Exact (1 ))
299
+
300
+ //after the event is sent, the trigger should scale down to zero replicas
301
+ f .Alpha ("Trigger" ).Must ("Scale down to zero" , verifyConsumerGroupReplicas (getTriggerCg (triggerName ), 0 , false ))
302
+
303
+ return f
304
+ }
305
+
174
306
func ChannelScalesToZeroWithKeda () * feature.Feature {
175
307
f := feature .NewFeature ()
176
308
0 commit comments