pivotal-jbarrett commented on code in PR #7630:
URL: https://github.com/apache/geode/pull/7630#discussion_r860147653


##########
geode-core/src/test/java/org/apache/geode/internal/cache/BucketAdvisorTest.java:
##########
@@ -317,4 +331,38 @@ public void 
testGetAllHostingMembersReturnsMemberWhenBucketAdvisorHasTwoProfiles
 
     assertThat(bucketAdvisor.adviseInitialized().size()).isEqualTo(1);
   }
+
+  @Test
+  void 
removePrimaryDeposePrimaryForColocatedChildrenBeforeReleasePrimaryLock() {
+    when(regionAdvisor.getPartitionedRegion()).thenReturn(partitionedRegion);
+    when(regionAdvisor.getBucket(any(Integer.class))).thenReturn(bucket);
+    when(partitionedRegion.getPartitionAttributes()).thenReturn(new 
PartitionAttributesImpl());
+    
when(bucket.getDistributionManager()).thenReturn(mock(DistributionManager.class));
+    BucketAdvisor bucketAdvisor = 
spy(BucketAdvisor.createBucketAdvisor(bucket, regionAdvisor));
+    InternalDistributedMember member = mock(InternalDistributedMember.class);
+    DistributionManager manager = mock(DistributionManager.class);
+    doReturn(true).when(bucketAdvisor).isPrimary();
+    doReturn(manager).when(bucketAdvisor).getDistributionManager();
+    when(manager.getId()).thenReturn(member);
+    bucketAdvisor.setPrimaryMemberForTest(member);
+    bucketAdvisor.setInitialized();
+    doNothing().when(bucketAdvisor).deposePrimaryForColocatedChildren();
+
+    InOrder order = inOrder(bucketAdvisor);
+    bucketAdvisor.removePrimary(member);
+
+    order.verify(bucketAdvisor).deposePrimaryForColocatedChildren();
+    order.verify(bucketAdvisor).releasePrimaryLock();
+    assertThat(bucketAdvisor.basicGetPrimaryMember()).isNull();
+  }
+
+  @BeforeEach

Review Comment:
   If you just construct you mocks directly without the `@Mock` annotation, 
like the other tests in this file, you don't need this before/after stuff.
   Alternatively you can follow these 
[instructions](https://www.baeldung.com/mockito-junit-5-extension) to add 
support to JUnit5.
   



##########
geode-core/src/test/java/org/apache/geode/internal/cache/BucketAdvisorTest.java:
##########
@@ -317,4 +331,38 @@ public void 
testGetAllHostingMembersReturnsMemberWhenBucketAdvisorHasTwoProfiles
 
     assertThat(bucketAdvisor.adviseInitialized().size()).isEqualTo(1);
   }
+
+  @Test
+  void 
removePrimaryDeposePrimaryForColocatedChildrenBeforeReleasePrimaryLock() {
+    when(regionAdvisor.getPartitionedRegion()).thenReturn(partitionedRegion);
+    when(regionAdvisor.getBucket(any(Integer.class))).thenReturn(bucket);
+    when(partitionedRegion.getPartitionAttributes()).thenReturn(new 
PartitionAttributesImpl());
+    
when(bucket.getDistributionManager()).thenReturn(mock(DistributionManager.class));
+    BucketAdvisor bucketAdvisor = 
spy(BucketAdvisor.createBucketAdvisor(bucket, regionAdvisor));
+    InternalDistributedMember member = mock(InternalDistributedMember.class);
+    DistributionManager manager = mock(DistributionManager.class);
+    doReturn(true).when(bucketAdvisor).isPrimary();
+    doReturn(manager).when(bucketAdvisor).getDistributionManager();
+    when(manager.getId()).thenReturn(member);
+    bucketAdvisor.setPrimaryMemberForTest(member);

Review Comment:
   If there isn't a way to write this test without punching this hole into the 
class can you add a Javadoc to this method why it has to be punched.



##########
geode-core/src/test/java/org/apache/geode/internal/cache/BucketAdvisorTest.java:
##########
@@ -43,10 +48,18 @@
 import org.apache.geode.internal.cache.partitioned.Bucket;
 import org.apache.geode.internal.cache.partitioned.RegionAdvisor;
 
-public class BucketAdvisorTest {
+class BucketAdvisorTest {
+  @Mock
+  private PartitionedRegion partitionedRegion;
+  @Mock
+  private Bucket bucket;
+  @Mock
+  private RegionAdvisor regionAdvisor;

Review Comment:
   Why allocate these here but not use them in any of the other tests?



##########
geode-core/src/main/java/org/apache/geode/internal/cache/BucketAdvisor.java:
##########
@@ -181,6 +182,14 @@ private BucketAdvisor(Bucket bucket, RegionAdvisor 
regionAdvisor) {
     redundancyTracker =
         new BucketRedundancyTracker(pRegion.getRedundantCopies(), 
pRegion.getRedundancyTracker());
     resetParentAdvisor(bucket.getId());
+
+    if (parentAdvisor == null) {

Review Comment:
   `parentAdvisor` is not `final`, can it be mutated after construction? If so 
what impact does that have on the inherited locks, which are `final`? If not, 
can it be made `final`?



-- 
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