@@ -283,3 +283,135 @@ func TestGetBrokerToListenerConfig(t *testing.T) {
283
283
assert .ObjectsAreEqual (tt .mapping , mapping )
284
284
}
285
285
}
286
+
287
+ func TestGetDynamicAdvertisedAddress (t * testing.T ) {
288
+ tests := []struct {
289
+ name string
290
+ dynamicAdvertisedListener string
291
+ defaultListenerIP string
292
+ brokerID int32
293
+ port int
294
+ expectedHost string
295
+ expectedPort int
296
+ expectError bool
297
+ }{
298
+ {
299
+ name : "Default listener IP is 127.0.0.1" ,
300
+ dynamicAdvertisedListener : "" ,
301
+ defaultListenerIP : "127.0.0.1" ,
302
+ brokerID : 1 ,
303
+ port : 9092 ,
304
+ expectedHost : "127.0.0.1" ,
305
+ expectedPort : 9092 ,
306
+ expectError : false ,
307
+ },
308
+ {
309
+ name : "Default listener IP is 0.0.0.0" ,
310
+ dynamicAdvertisedListener : "" ,
311
+ defaultListenerIP : "0.0.0.0" ,
312
+ brokerID : 1 ,
313
+ port : 9092 ,
314
+ expectedHost : "0.0.0.0" ,
315
+ expectedPort : 9092 ,
316
+ expectError : false ,
317
+ },
318
+ {
319
+ name : "Default listener IP is localhost" ,
320
+ dynamicAdvertisedListener : "" ,
321
+ defaultListenerIP : "localhost" ,
322
+ brokerID : 1 ,
323
+ port : 9092 ,
324
+ expectedHost : "localhost" ,
325
+ expectedPort : 9092 ,
326
+ expectError : false ,
327
+ },
328
+ {
329
+ name : "Dynamic listener no template, host is IP" ,
330
+ dynamicAdvertisedListener : "0.0.0.0" ,
331
+ defaultListenerIP : "127.0.0.1" ,
332
+ brokerID : 2 ,
333
+ port : 9093 ,
334
+ expectedHost : "0.0.0.0" ,
335
+ expectedPort : 9093 ,
336
+ expectError : false ,
337
+ },
338
+ {
339
+ name : "Dynamic listener no template, host is IP and port is provided" ,
340
+ dynamicAdvertisedListener : "0.0.0.0:30000" ,
341
+ defaultListenerIP : "127.0.0.1" ,
342
+ brokerID : 2 ,
343
+ port : 9093 ,
344
+ expectedHost : "0.0.0.0" ,
345
+ expectedPort : 30000 ,
346
+ expectError : false ,
347
+ },
348
+ {
349
+ name : "Dynamic listener no template, host is dns name" ,
350
+ dynamicAdvertisedListener : "kafka-proxy.provisionedmskclust.zgjvgc.c2.kafka.eu-central-1.amazonaws.com" ,
351
+ defaultListenerIP : "127.0.0.1" ,
352
+ brokerID : 2 ,
353
+ port : 9093 ,
354
+ expectedHost : "kafka-proxy.provisionedmskclust.zgjvgc.c2.kafka.eu-central-1.amazonaws.com" ,
355
+ expectedPort : 9093 ,
356
+ expectError : false ,
357
+ },
358
+ {
359
+ name : "Dynamic listener no template, host is dns name and port is provided" ,
360
+ dynamicAdvertisedListener : "kafka-proxy.grepplabs.com:30000" ,
361
+ defaultListenerIP : "127.0.0.1" ,
362
+ brokerID : 2 ,
363
+ port : 9093 ,
364
+ expectedHost : "kafka-proxy.grepplabs.com" ,
365
+ expectedPort : 30000 ,
366
+ expectError : false ,
367
+ },
368
+ {
369
+ name : "Dynamic listener with template" ,
370
+ dynamicAdvertisedListener : "b-{{.brokerId}}.provisionedmskclust.zgjvgc.c2.kafka.eu-central-1.amazonaws.com" ,
371
+ defaultListenerIP : "127.0.0.1" ,
372
+ brokerID : 2 ,
373
+ port : 9093 ,
374
+ expectedHost : "b-2.provisionedmskclust.zgjvgc.c2.kafka.eu-central-1.amazonaws.com" ,
375
+ expectedPort : 9093 ,
376
+ expectError : false ,
377
+ },
378
+ {
379
+ name : "Dynamic listener with template and port is provided" ,
380
+ dynamicAdvertisedListener : "b-{{.brokerId}}.provisionedmskclust.zgjvgc.c2.kafka.eu-central-1.amazonaws.com:30000" ,
381
+ defaultListenerIP : "127.0.0.1" ,
382
+ brokerID : 2 ,
383
+ port : 9093 ,
384
+ expectedHost : "b-2.provisionedmskclust.zgjvgc.c2.kafka.eu-central-1.amazonaws.com" ,
385
+ expectedPort : 30000 ,
386
+ expectError : false ,
387
+ },
388
+ {
389
+ name : "Invalid dynamic listener template" ,
390
+ dynamicAdvertisedListener : "broker-{{.invalid}}" ,
391
+ defaultListenerIP : "127.0.0.1" ,
392
+ brokerID : 3 ,
393
+ port : 9094 ,
394
+ expectedHost : "" ,
395
+ expectedPort : 0 ,
396
+ expectError : true ,
397
+ },
398
+ }
399
+
400
+ for _ , tt := range tests {
401
+ t .Run (tt .name , func (t * testing.T ) {
402
+ listeners := & Listeners {
403
+ dynamicAdvertisedListener : tt .dynamicAdvertisedListener ,
404
+ defaultListenerIP : tt .defaultListenerIP ,
405
+ }
406
+
407
+ host , port , err := listeners .getDynamicAdvertisedAddress (tt .brokerID , tt .port )
408
+ if tt .expectError {
409
+ assert .Error (t , err )
410
+ } else {
411
+ assert .NoError (t , err )
412
+ assert .Equal (t , tt .expectedHost , host )
413
+ assert .Equal (t , tt .expectedPort , port )
414
+ }
415
+ })
416
+ }
417
+ }
0 commit comments