adixitconfluent commented on code in PR #18864:
URL: https://github.com/apache/kafka/pull/18864#discussion_r1967077487


##########
group-coordinator/src/test/java/org/apache/kafka/coordinator/group/assignor/SimpleAssignorTest.java:
##########
@@ -320,12 +365,377 @@ public void 
testAssignWithOneMemberNoAssignedTopicHeterogeneous() {
         Map<String, Map<Uuid, Set<Integer>>> expectedAssignment = new 
HashMap<>();
         expectedAssignment.put(MEMBER_A, mkAssignment(
             mkTopicAssignment(TOPIC_1_UUID, 0, 1, 2),
-            mkTopicAssignment(TOPIC_2_UUID, 0, 1)
-        ));
+            mkTopicAssignment(TOPIC_2_UUID, 0, 1)));
+        expectedAssignment.put(MEMBER_B, mkAssignment());
 
+        // T1: 3 partitions + T2: 2 partitions = 5 partitions
+        assertEveryPartitionGetsAssignment(5, computedAssignment);
         assertAssignment(expectedAssignment, computedAssignment);
     }
 
+    @Test
+    public void testMemberHashAssignment() {
+        // hashcode for "member1" is 948881623.
+        String member1 = "member1";
+        // hashcode for "member2" is 948881624.
+        String member2 = "member2";
+        // hashcode for "member3" is 948881625.
+        String member3 = "member3";
+        // hashcode for "member4" is 948881626.
+        String member4 = "member4";
+        // hashcode for "AaAaAaAa" is -540425984 to test with negative 
hashcode.
+        String member5 = "AaAaAaAa";
+        List<String> members = Arrays.asList(member1, member2, member3, 
member4, member5);
+
+        TopicIdPartition partition1 = new TopicIdPartition(TOPIC_1_UUID, 0);
+        TopicIdPartition partition2 = new TopicIdPartition(TOPIC_2_UUID, 0);
+        TopicIdPartition partition3 = new TopicIdPartition(TOPIC_3_UUID, 0);
+        List<TopicIdPartition> partitions = Arrays.asList(partition1, 
partition2, partition3);
+
+        Map<TopicIdPartition, List<String>> computedAssignment = new 
HashMap<>();
+        assignor.memberHashAssignment(partitions, members, computedAssignment);
+
+        Map<TopicIdPartition, List<String>> expectedAssignment = new 
HashMap<>();
+        expectedAssignment.put(partition1, List.of(member3));
+        expectedAssignment.put(partition2, Arrays.asList(member1, member4));
+        expectedAssignment.put(partition3, Arrays.asList(member2, member5));
+        assertAssignment(expectedAssignment, computedAssignment);
+    }
+
+    @Test
+    public void testRoundRobinAssignment() {
+        String member1 = "member1";
+        String member2 = "member2";
+        List<String> members = Arrays.asList(member1, member2);
+        TopicIdPartition partition1 = new TopicIdPartition(TOPIC_1_UUID, 0);
+        TopicIdPartition partition2 = new TopicIdPartition(TOPIC_2_UUID, 0);
+        TopicIdPartition partition3 = new TopicIdPartition(TOPIC_3_UUID, 0);
+        TopicIdPartition partition4 = new TopicIdPartition(TOPIC_4_UUID, 0);
+        List<TopicIdPartition> unassignedPartitions = 
Arrays.asList(partition2, partition3, partition4);
+
+        Map<TopicIdPartition, List<String>> assignment = new HashMap<>();
+        assignment.put(partition1, List.of(member1));
+
+        assignor.roundRobinAssignment(members, unassignedPartitions, 
assignment);
+        Map<TopicIdPartition, List<String>> expectedAssignment = new 
HashMap<>();
+        expectedAssignment.put(partition1, List.of(member1));
+        expectedAssignment.put(partition2, List.of(member1));
+        expectedAssignment.put(partition3, List.of(member2));
+        expectedAssignment.put(partition4, List.of(member1));
+
+        assertAssignment(expectedAssignment, assignment);
+    }
+
+    @Test
+    public void testAssignWithCurrentAssignmentHomogeneous() {
+        // Current assignment setup - Two members A, B subscribing to T1 and 
T2.
+        Map<Uuid, TopicMetadata> topicMetadata1 = new HashMap<>();
+        topicMetadata1.put(TOPIC_1_UUID, new TopicMetadata(
+            TOPIC_1_UUID,
+            TOPIC_1_NAME,
+            3
+        ));
+        topicMetadata1.put(TOPIC_2_UUID, new TopicMetadata(
+            TOPIC_2_UUID,
+            TOPIC_2_NAME,
+            2
+        ));
+
+        Map<String, MemberSubscriptionAndAssignmentImpl> members1 = new 
TreeMap<>();

Review Comment:
   actually we don't need to consider order here. I have just used a `HashMap` 
here and at other places in the code.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to