zhijiangW commented on a change in pull request #6809: [FLINK-10491][network] 
Pass BufferPoolOwner in the constructor of LocalBufferPool
URL: https://github.com/apache/flink/pull/6809#discussion_r226525858
 
 

 ##########
 File path: 
flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/ResultPartitionTest.java
 ##########
 @@ -205,6 +216,66 @@ protected void testAddOnPartition(final 
ResultPartitionType pipelined)
                }
        }
 
+       @Test
+       public void testReleaseMemoryOnBlockingPartition() throws Exception {
+               testReleaseMemory(ResultPartitionType.BLOCKING);
+       }
+
+       @Test
+       public void testReleaseMemoryOnPipelinedPartition() throws Exception {
+               testReleaseMemory(ResultPartitionType.PIPELINED);
+       }
+
+       /**
+        * Tests {@link ResultPartition#releaseMemory(int)} on a working 
partition.
+        *
+        * @param resultPartitionType the result partition type to set up
+        */
+       private void testReleaseMemory(final ResultPartitionType 
resultPartitionType) throws Exception {
+               final int numBuffers = 10;
+               final NetworkEnvironment network = new NetworkEnvironment(
+                       new NetworkBufferPool(numBuffers, 128),
+                       new LocalConnectionManager(),
+                       new ResultPartitionManager(),
+                       new TaskEventDispatcher(),
+                       new KvStateRegistry(),
+                       null,
+                       null,
+                       IOManager.IOMode.SYNC,
+                       0,
+                       0,
+                       2,
+                       8,
+                       true);
+               final ResultPartitionConsumableNotifier notifier = 
mock(ResultPartitionConsumableNotifier.class);
+               final ResultPartition resultPartition = 
spy(createPartition(notifier, resultPartitionType, false));
 
 Review comment:
   I also considered the `spy` usage here may bring some concerns and thought 
of the way you mentioned to avoid the `spy`. I should explain the reasons why 
using `spy` finally.
   
   I think there should have two separate tests for verifying different logics 
in two dimessions:
   1. Whether the `ResultPartition` is assigned as `BufferPoolOwner` correctly 
during creating `BufferPool` for different types, and this test is for 
verifying this relationship.
   
   2. Verify the logic of interface implementation for 
`BufferPoolOwner#releaseMemory` which is also missing currently, and I 
mentioned this in previous comments. But I think it is not the scope of this PR 
and I am willing to open a JIRA for it. At the beginning I also think the first 
verify actually does not belong to the scope of this PR, just because of the 
careless of migrating history codes to find history missing tests. 
   
   So if we want to check the state of `NetworkBufferPool` to avoid `spy` here, 
we have to touch the detail logic of `BufferPoolOwner#releaseMemory` mentioned 
in second part. And the first part is enough for this PR to avoid the mistake 
of assigning `BufferPoolOwner`. What do you think?
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to