@@ -111,7 +111,7 @@ def test_sticky_assignor1(mocker):
111
111
del subscriptions ['C1' ]
112
112
member_metadata = {}
113
113
for member , topics in six .iteritems (subscriptions ):
114
- member_metadata [member ] = build_metadata (topics , sticky_assignment [member ].partitions ())
114
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , sticky_assignment [member ].partitions ())
115
115
116
116
sticky_assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
117
117
expected_assignment = {
@@ -154,7 +154,7 @@ def test_sticky_assignor2(mocker):
154
154
}
155
155
member_metadata = {}
156
156
for member , topics in six .iteritems (subscriptions ):
157
- member_metadata [member ] = build_metadata (topics , [])
157
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , [])
158
158
159
159
sticky_assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
160
160
expected_assignment = {
@@ -167,7 +167,7 @@ def test_sticky_assignor2(mocker):
167
167
del subscriptions ['C0' ]
168
168
member_metadata = {}
169
169
for member , topics in six .iteritems (subscriptions ):
170
- member_metadata [member ] = build_metadata (topics , sticky_assignment [member ].partitions ())
170
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , sticky_assignment [member ].partitions ())
171
171
172
172
sticky_assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
173
173
expected_assignment = {
@@ -326,7 +326,7 @@ def test_sticky_add_remove_consumer_one_topic(mocker):
326
326
}
327
327
member_metadata = {}
328
328
for member , topics in six .iteritems (subscriptions ):
329
- member_metadata [member ] = build_metadata (
329
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (
330
330
topics , assignment [member ].partitions () if member in assignment else []
331
331
)
332
332
@@ -338,7 +338,7 @@ def test_sticky_add_remove_consumer_one_topic(mocker):
338
338
}
339
339
member_metadata = {}
340
340
for member , topics in six .iteritems (subscriptions ):
341
- member_metadata [member ] = build_metadata (topics , assignment [member ].partitions ())
341
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , assignment [member ].partitions ())
342
342
343
343
assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
344
344
verify_validity_and_balance (subscriptions , assignment )
@@ -367,7 +367,7 @@ def test_sticky_add_remove_topic_two_consumers(mocker):
367
367
}
368
368
member_metadata = {}
369
369
for member , topics in six .iteritems (subscriptions ):
370
- member_metadata [member ] = build_metadata (topics , sticky_assignment [member ].partitions ())
370
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , sticky_assignment [member ].partitions ())
371
371
372
372
sticky_assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
373
373
expected_assignment = {
@@ -382,7 +382,7 @@ def test_sticky_add_remove_topic_two_consumers(mocker):
382
382
}
383
383
member_metadata = {}
384
384
for member , topics in six .iteritems (subscriptions ):
385
- member_metadata [member ] = build_metadata (topics , sticky_assignment [member ].partitions ())
385
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , sticky_assignment [member ].partitions ())
386
386
387
387
sticky_assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
388
388
expected_assignment = {
@@ -413,7 +413,7 @@ def test_sticky_reassignment_after_one_consumer_leaves(mocker):
413
413
del subscriptions ['C10' ]
414
414
member_metadata = {}
415
415
for member , topics in six .iteritems (subscriptions ):
416
- member_metadata [member ] = build_metadata (topics , assignment [member ].partitions ())
416
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , assignment [member ].partitions ())
417
417
418
418
assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
419
419
verify_validity_and_balance (subscriptions , assignment )
@@ -435,7 +435,7 @@ def test_sticky_reassignment_after_one_consumer_added(mocker):
435
435
subscriptions ['C10' ] = {'t' }
436
436
member_metadata = {}
437
437
for member , topics in six .iteritems (subscriptions ):
438
- member_metadata [member ] = build_metadata (
438
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (
439
439
topics , assignment [member ].partitions () if member in assignment else []
440
440
)
441
441
assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
@@ -462,7 +462,7 @@ def test_sticky_same_subscriptions(mocker):
462
462
del subscriptions ['C5' ]
463
463
member_metadata = {}
464
464
for member , topics in six .iteritems (subscriptions ):
465
- member_metadata [member ] = build_metadata (topics , assignment [member ].partitions ())
465
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , assignment [member ].partitions ())
466
466
assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
467
467
verify_validity_and_balance (subscriptions , assignment )
468
468
assert StickyPartitionAssignor ._latest_partition_movements .are_sticky ()
@@ -488,7 +488,7 @@ def test_sticky_large_assignment_with_multiple_consumers_leaving(mocker):
488
488
489
489
member_metadata = {}
490
490
for member , topics in six .iteritems (subscriptions ):
491
- member_metadata [member ] = build_metadata (topics , assignment [member ].partitions ())
491
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , assignment [member ].partitions ())
492
492
493
493
for i in range (50 ):
494
494
member = 'C{}' .format (randint (1 , n_consumers ))
@@ -517,7 +517,7 @@ def test_new_subscription(mocker):
517
517
subscriptions ['C0' ].add ('t1' )
518
518
member_metadata = {}
519
519
for member , topics in six .iteritems (subscriptions ):
520
- member_metadata [member ] = build_metadata (topics , [])
520
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , [])
521
521
522
522
assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
523
523
verify_validity_and_balance (subscriptions , assignment )
@@ -540,7 +540,7 @@ def test_move_existing_assignments(mocker):
540
540
541
541
member_metadata = {}
542
542
for member , topics in six .iteritems (subscriptions ):
543
- member_metadata [member ] = build_metadata (topics , member_assignments [member ])
543
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , member_assignments [member ])
544
544
545
545
assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
546
546
verify_validity_and_balance (subscriptions , assignment )
@@ -570,7 +570,7 @@ def test_stickiness(mocker):
570
570
del subscriptions ['C1' ]
571
571
member_metadata = {}
572
572
for member , topics in six .iteritems (subscriptions ):
573
- member_metadata [member ] = build_metadata (topics , assignment [member ].partitions ())
573
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , assignment [member ].partitions ())
574
574
575
575
assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
576
576
verify_validity_and_balance (subscriptions , assignment )
@@ -625,7 +625,7 @@ def test_no_exceptions_when_only_subscribed_topic_is_deleted(mocker):
625
625
}
626
626
member_metadata = {}
627
627
for member , topics in six .iteritems (subscriptions ):
628
- member_metadata [member ] = build_metadata (topics , sticky_assignment [member ].partitions ())
628
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , sticky_assignment [member ].partitions ())
629
629
630
630
cluster = create_cluster (mocker , topics = {}, topics_partitions = {})
631
631
sticky_assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
@@ -645,7 +645,7 @@ def test_conflicting_previous_assignments(mocker):
645
645
member_metadata = {}
646
646
for member , topics in six .iteritems (subscriptions ):
647
647
# assume both C1 and C2 have partition 1 assigned to them in generation 1
648
- member_metadata [member ] = build_metadata (topics , [TopicPartition ('t' , 0 ), TopicPartition ('t' , 0 )], 1 )
648
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , [TopicPartition ('t' , 0 ), TopicPartition ('t' , 0 )], 1 )
649
649
650
650
assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
651
651
verify_validity_and_balance (subscriptions , assignment )
@@ -676,7 +676,7 @@ def test_reassignment_with_random_subscriptions_and_changes(mocker, execution_nu
676
676
677
677
member_metadata = {}
678
678
for member , topics in six .iteritems (subscriptions ):
679
- member_metadata [member ] = build_metadata (topics , assignment [member ].partitions ())
679
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , assignment [member ].partitions ())
680
680
681
681
assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
682
682
verify_validity_and_balance (subscriptions , assignment )
@@ -687,9 +687,9 @@ def test_assignment_with_multiple_generations1(mocker):
687
687
cluster = create_cluster (mocker , topics = {'t' }, topics_partitions = {0 , 1 , 2 , 3 , 4 , 5 })
688
688
689
689
member_metadata = {
690
- 'C1' : build_metadata ({'t' }, []),
691
- 'C2' : build_metadata ({'t' }, []),
692
- 'C3' : build_metadata ({'t' }, []),
690
+ 'C1' : StickyPartitionAssignor . _metadata ({'t' }, []),
691
+ 'C2' : StickyPartitionAssignor . _metadata ({'t' }, []),
692
+ 'C3' : StickyPartitionAssignor . _metadata ({'t' }, []),
693
693
}
694
694
695
695
assignment1 = StickyPartitionAssignor .assign (cluster , member_metadata )
@@ -699,8 +699,8 @@ def test_assignment_with_multiple_generations1(mocker):
699
699
assert len (assignment1 ['C3' ].assignment [0 ][1 ]) == 2
700
700
701
701
member_metadata = {
702
- 'C1' : build_metadata ({'t' }, assignment1 ['C1' ].partitions ()),
703
- 'C2' : build_metadata ({'t' }, assignment1 ['C2' ].partitions ()),
702
+ 'C1' : StickyPartitionAssignor . _metadata ({'t' }, assignment1 ['C1' ].partitions ()),
703
+ 'C2' : StickyPartitionAssignor . _metadata ({'t' }, assignment1 ['C2' ].partitions ()),
704
704
}
705
705
706
706
assignment2 = StickyPartitionAssignor .assign (cluster , member_metadata )
@@ -712,8 +712,8 @@ def test_assignment_with_multiple_generations1(mocker):
712
712
assert StickyPartitionAssignor ._latest_partition_movements .are_sticky ()
713
713
714
714
member_metadata = {
715
- 'C2' : build_metadata ({'t' }, assignment2 ['C2' ].partitions (), 2 ),
716
- 'C3' : build_metadata ({'t' }, assignment1 ['C3' ].partitions (), 1 ),
715
+ 'C2' : StickyPartitionAssignor . _metadata ({'t' }, assignment2 ['C2' ].partitions (), 2 ),
716
+ 'C3' : StickyPartitionAssignor . _metadata ({'t' }, assignment1 ['C3' ].partitions (), 1 ),
717
717
}
718
718
719
719
assignment3 = StickyPartitionAssignor .assign (cluster , member_metadata )
@@ -727,9 +727,9 @@ def test_assignment_with_multiple_generations2(mocker):
727
727
cluster = create_cluster (mocker , topics = {'t' }, topics_partitions = {0 , 1 , 2 , 3 , 4 , 5 })
728
728
729
729
member_metadata = {
730
- 'C1' : build_metadata ({'t' }, []),
731
- 'C2' : build_metadata ({'t' }, []),
732
- 'C3' : build_metadata ({'t' }, []),
730
+ 'C1' : StickyPartitionAssignor . _metadata ({'t' }, []),
731
+ 'C2' : StickyPartitionAssignor . _metadata ({'t' }, []),
732
+ 'C3' : StickyPartitionAssignor . _metadata ({'t' }, []),
733
733
}
734
734
735
735
assignment1 = StickyPartitionAssignor .assign (cluster , member_metadata )
@@ -739,7 +739,7 @@ def test_assignment_with_multiple_generations2(mocker):
739
739
assert len (assignment1 ['C3' ].assignment [0 ][1 ]) == 2
740
740
741
741
member_metadata = {
742
- 'C2' : build_metadata ({'t' }, assignment1 ['C2' ].partitions (), 1 ),
742
+ 'C2' : StickyPartitionAssignor . _metadata ({'t' }, assignment1 ['C2' ].partitions (), 1 ),
743
743
}
744
744
745
745
assignment2 = StickyPartitionAssignor .assign (cluster , member_metadata )
@@ -749,9 +749,9 @@ def test_assignment_with_multiple_generations2(mocker):
749
749
assert StickyPartitionAssignor ._latest_partition_movements .are_sticky ()
750
750
751
751
member_metadata = {
752
- 'C1' : build_metadata ({'t' }, assignment1 ['C1' ].partitions (), 1 ),
753
- 'C2' : build_metadata ({'t' }, assignment2 ['C2' ].partitions (), 2 ),
754
- 'C3' : build_metadata ({'t' }, assignment1 ['C3' ].partitions (), 1 ),
752
+ 'C1' : StickyPartitionAssignor . _metadata ({'t' }, assignment1 ['C1' ].partitions (), 1 ),
753
+ 'C2' : StickyPartitionAssignor . _metadata ({'t' }, assignment2 ['C2' ].partitions (), 2 ),
754
+ 'C3' : StickyPartitionAssignor . _metadata ({'t' }, assignment1 ['C3' ].partitions (), 1 ),
755
755
}
756
756
757
757
assignment3 = StickyPartitionAssignor .assign (cluster , member_metadata )
@@ -778,7 +778,7 @@ def test_assignment_with_conflicting_previous_generations(mocker, execution_numb
778
778
}
779
779
member_metadata = {}
780
780
for member in six .iterkeys (member_assignments ):
781
- member_metadata [member ] = build_metadata ({'t' }, member_assignments [member ], member_generations [member ])
781
+ member_metadata [member ] = StickyPartitionAssignor . _metadata ({'t' }, member_assignments [member ], member_generations [member ])
782
782
783
783
assignment = StickyPartitionAssignor .assign (cluster , member_metadata )
784
784
verify_validity_and_balance ({'C1' : {'t' }, 'C2' : {'t' }, 'C3' : {'t' }}, assignment )
@@ -788,19 +788,10 @@ def test_assignment_with_conflicting_previous_generations(mocker, execution_numb
788
788
def make_member_metadata (subscriptions ):
789
789
member_metadata = {}
790
790
for member , topics in six .iteritems (subscriptions ):
791
- member_metadata [member ] = build_metadata (topics , [])
791
+ member_metadata [member ] = StickyPartitionAssignor . _metadata (topics , [])
792
792
return member_metadata
793
793
794
794
795
- def build_metadata (topics , member_assignment_partitions , generation = - 1 ):
796
- partitions_by_topic = defaultdict (list )
797
- for topic_partition in member_assignment_partitions :
798
- partitions_by_topic [topic_partition .topic ].append (topic_partition .partition )
799
- data = StickyAssignorUserDataV1 (six .viewitems (partitions_by_topic ), generation )
800
- user_data = data .encode ()
801
- return ConsumerProtocolMemberMetadata (StickyPartitionAssignor .version , list (topics ), user_data )
802
-
803
-
804
795
def assert_assignment (result_assignment , expected_assignment ):
805
796
assert result_assignment == expected_assignment
806
797
assert set (result_assignment ) == set (expected_assignment )
0 commit comments