@@ -411,3 +411,68 @@ func TestLeastBytes(t *testing.T) {
411
411
})
412
412
}
413
413
}
414
+
415
+ func TestRoundRobin (t * testing.T ) {
416
+ testCases := map [string ]struct {
417
+ Partitions []int
418
+ ChunkSize int
419
+ }{
420
+ "default - odd partition count" : {
421
+ Partitions : []int {0 , 1 , 2 , 3 , 4 , 5 , 6 },
422
+ },
423
+ "negative chunk size - odd partition count" : {
424
+ Partitions : []int {0 , 1 , 2 , 3 , 4 , 5 , 6 },
425
+ ChunkSize : - 1 ,
426
+ },
427
+ "0 chunk size - odd partition count" : {
428
+ Partitions : []int {0 , 1 , 2 , 3 , 4 , 5 , 6 },
429
+ ChunkSize : 0 ,
430
+ },
431
+ "5 chunk size - odd partition count" : {
432
+ Partitions : []int {0 , 1 , 2 , 3 , 4 , 5 , 6 },
433
+ ChunkSize : 5 ,
434
+ },
435
+ "12 chunk size - odd partition count" : {
436
+ Partitions : []int {0 , 1 , 2 , 3 , 4 , 5 , 6 },
437
+ ChunkSize : 12 ,
438
+ },
439
+ "default - even partition count" : {
440
+ Partitions : []int {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 },
441
+ },
442
+ "negative chunk size - even partition count" : {
443
+ Partitions : []int {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 },
444
+ ChunkSize : - 1 ,
445
+ },
446
+ "0 chunk size - even partition count" : {
447
+ Partitions : []int {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 },
448
+ ChunkSize : 0 ,
449
+ },
450
+ "5 chunk size - even partition count" : {
451
+ Partitions : []int {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 },
452
+ ChunkSize : 5 ,
453
+ },
454
+ "12 chunk size - even partition count" : {
455
+ Partitions : []int {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 },
456
+ ChunkSize : 12 ,
457
+ },
458
+ }
459
+ for label , test := range testCases {
460
+ t .Run (label , func (t * testing.T ) {
461
+ lb := & RoundRobin {ChunkSize : test .ChunkSize }
462
+ msg := Message {}
463
+ var partition int
464
+ var i int
465
+ expectedChunkSize := test .ChunkSize
466
+ if expectedChunkSize < 1 {
467
+ expectedChunkSize = 1
468
+ }
469
+ partitions := test .Partitions
470
+ for i = 0 ; i < 50 ; i ++ {
471
+ partition = lb .Balance (msg , partitions ... )
472
+ if partition != i / expectedChunkSize % len (partitions ) {
473
+ t .Error ("Returned partition" , partition , "expecting" , i / expectedChunkSize % len (partitions ))
474
+ }
475
+ }
476
+ })
477
+ }
478
+ }
0 commit comments