kristoffSC commented on code in PR #21101:
URL: https://github.com/apache/flink/pull/21101#discussion_r999174871


##########
flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/sink/committables/CommittableCollectorSerializerTest.java:
##########
@@ -134,55 +190,78 @@ void 
testAlignSubtaskCommittableManagerCheckpointWithCheckpointCommittableManage
                 .isEqualTo(committableManager.getCheckpointId());
     }
 
+    /**
+     * @param assertMessageHeading prefix used for assertion fail message.
+     * @param subtaskId subtaskId to get {@link SubtaskCommittableManager} 
from {@link
+     *     CheckpointCommittableManagerImpl}
+     * @param expectedNumberOfSubtasks expected number of subtasks for {@link 
CommittableSummary}
+     * @param committableCollector collector to get {@link 
CheckpointCommittableManager}s from.
+     * @param expectedCommittableSize expected number of {@link 
CheckpointCommittableManager}.
+     * @param expectedNumberOfPendingRequestsPerCommittable expected number of 
pending request per
+     *     {@link SubtaskCommittableManager}.
+     */
     private void assertCommittableCollector(
             String assertMessageHeading,
             int subtaskId,
-            int numberOfSubtasks,
-            CommittableCollector<Integer> committableCollector) {
+            int expectedNumberOfSubtasks,
+            CommittableCollector<Integer> committableCollector,
+            int expectedCommittableSize,
+            Object[] expectedNumberOfPendingRequestsPerCommittable) {
 
         assertAll(
                 assertMessageHeading,
                 () -> {
                     final Collection<CheckpointCommittableManagerImpl<Integer>>
                             checkpointCommittables =
                                     
committableCollector.getCheckpointCommittables();
-                    assertThat(checkpointCommittables).hasSize(2);
+                    
assertThat(checkpointCommittables).hasSize(expectedCommittableSize);
 
                     final Iterator<CheckpointCommittableManagerImpl<Integer>> 
committablesIterator =
                             checkpointCommittables.iterator();
-                    final CheckpointCommittableManagerImpl<Integer> 
checkpointCommittableManager1 =
-                            committablesIterator.next();
-                    final SubtaskCommittableManager<Integer> 
subtaskCommittableManagerCheckpoint1 =
-                            
checkpointCommittableManager1.getSubtaskCommittableManager(subtaskId);
-
-                    
SinkV2Assertions.assertThat(checkpointCommittableManager1.getSummary())
-                            .hasSubtaskId(subtaskId)
-                            .hasNumberOfSubtasks(numberOfSubtasks);
-                    assertThat(
-                                    subtaskCommittableManagerCheckpoint1
-                                            .getPendingRequests()
-                                            
.map(CommitRequestImpl::getCommittable)
-                                            .collect(Collectors.toList()))
-                            .containsExactly(1);
-                    
assertThat(subtaskCommittableManagerCheckpoint1.getSubtaskId())
-                            .isEqualTo(subtaskId);
-
-                    final CheckpointCommittableManagerImpl<Integer> 
checkpointCommittableManager2 =
-                            committablesIterator.next();
-                    final SubtaskCommittableManager<Integer> 
subtaskCommittableManagerCheckpoint2 =
-                            
checkpointCommittableManager2.getSubtaskCommittableManager(subtaskId);
-
-                    
SinkV2Assertions.assertThat(checkpointCommittableManager2.getSummary())
-                            .hasSubtaskId(subtaskId)
-                            .hasNumberOfSubtasks(numberOfSubtasks);
-                    assertThat(
-                                    subtaskCommittableManagerCheckpoint2
-                                            .getPendingRequests()
-                                            
.map(CommitRequestImpl::getCommittable)
-                                            .collect(Collectors.toList()))
-                            .containsExactly(2);
-                    
assertThat(subtaskCommittableManagerCheckpoint2.getSubtaskId())
-                            .isEqualTo(subtaskId);
+
+                    int i = 0;
+                    while (committablesIterator.hasNext()) {
+                        final CheckpointCommittableManagerImpl<Integer>
+                                checkpointCommittableManager = 
committablesIterator.next();
+
+                        final SubtaskCommittableManager<Integer> 
subtaskCommittableManager =
+                                
checkpointCommittableManager.getSubtaskCommittableManager(
+                                        subtaskId);
+
+                        
SinkV2Assertions.assertThat(checkpointCommittableManager.getSummary())
+                                .hasSubtaskId(subtaskId)
+                                .hasNumberOfSubtasks(expectedNumberOfSubtasks);
+
+                        assertPendingRequests(
+                                subtaskCommittableManager,
+                                
expectedNumberOfPendingRequestsPerCommittable[i++]);
+
+                        
assertThat(subtaskCommittableManager.getSubtaskId()).isEqualTo(subtaskId);
+                    }
                 });
     }
+
+    private void assertPendingRequests(
+            SubtaskCommittableManager<Integer> 
subtaskCommittableManagerCheckpoint,
+            Object expectedPendingRequestCount) {
+
+        if (expectedPendingRequestCount instanceof Integer) {
+            assertThat(
+                            subtaskCommittableManagerCheckpoint
+                                    .getPendingRequests()
+                                    .map(CommitRequestImpl::getCommittable)
+                                    .collect(Collectors.toList()))
+                    .containsExactly((Integer) expectedPendingRequestCount);
+        } else if (expectedPendingRequestCount instanceof Integer[]) {

Review Comment:
   Thanks for this hint, I was looking for some alternative method in the API 
but I must have missed that one, I was focused to find the one that checks also 
the order as the `containsExactly` does.
   
   I've implemented your proposition which made `assertPendingRequests` method 
much simpler. 
   However `assertCommittableCollector` now has to accept `List<List<Integer>> 
expectedNumbersOfPendingRequestsPerCommittable` as an argument.
   
   The reason for this is that for `testCommittableCollectorV2SerDe` test we 
will have Two committable Managers with one committable each, where for 
`testCommittablesForSameSubtaskIdV2SerDe`  test we will have one committable 
manager but with two committables after recovery.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to