@@ -22,6 +22,8 @@ import (
2222
2323 "knative.dev/eventing-kafka-broker/control-plane/pkg/autoscaler/keda"
2424 "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"
2527
2628 "knative.dev/eventing/test/rekt/resources/trigger"
2729
@@ -55,7 +57,7 @@ import (
5557)
5658
5759func KafkaSourceScaledObjectHasNoEmptyAuthRef () * feature.Feature {
58- f := feature .NewFeatureNamed ( "KafkaSourceScalesToZeroWithKeda" )
60+ f := feature .NewFeature ( )
5961
6062 // we need to ensure that autoscaling is enabled for the rest of the feature to work
6163 f .Prerequisite ("Autoscaling is enabled" , kafkafeatureflags .AutoscalingEnabled ())
@@ -93,7 +95,7 @@ func KafkaSourceScaledObjectHasNoEmptyAuthRef() *feature.Feature {
9395}
9496
9597func KafkaSourceScalesToZeroWithKeda () * feature.Feature {
96- f := feature .NewFeatureNamed ( "KafkaSourceScalesToZeroWithKeda" )
98+ f := feature .NewFeature ( )
9799
98100 // we need to ensure that autoscaling is enabled for the rest of the feature to work
99101 f .Prerequisite ("Autoscaling is enabled" , kafkafeatureflags .AutoscalingEnabled ())
@@ -142,6 +144,44 @@ func KafkaSourceScalesToZeroWithKeda() *feature.Feature {
142144 return f
143145}
144146
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+
145185func TriggerScalesToZeroWithKeda () * feature.Feature {
146186 f := feature .NewFeature ()
147187
@@ -171,6 +211,98 @@ func TriggerScalesToZeroWithKeda() *feature.Feature {
171211 return f
172212}
173213
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+
174306func ChannelScalesToZeroWithKeda () * feature.Feature {
175307 f := feature .NewFeature ()
176308
0 commit comments