Github user anmolnar commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/546#discussion_r197403323
  
    --- Diff: 
src/java/test/org/apache/zookeeper/test/HierarchicalQuorumTest.java ---
    @@ -226,38 +227,108 @@ void startServers(boolean withObservers) throws 
Exception {
                                         CONNECTION_TIMEOUT));
                 LOG.info(hp + " is accepting client connections");
             }
    +        LOG.info("initial status " + s1.getCurrentVote() + "," + 
s2.getCurrentVote() + "," + s3.getCurrentVote());
    --- End diff --
    
    I think this is not right approach for testing this. The patch is about 
adding a new field to a JMX bean to expose a new attribute of ZooKeeper. This 
test is part of `ClientHammerTest`: completely different things. For example, 
if the new functionality got broken and JMX value is not exposed correctly, 
we'll see that `ClientHammerTest` is failing which is terribly misleading.
    
    Please revert changes to this file and add more unit tests to 
`RemotePeerBeenTest`, because that is essentially what you've changed in this 
patch and you want to validate. I'd do something like this in a new test:
    
    ```java
    ...
    QuorumPeer peerMock = mock(QuorumPeer.class);
    RemotePeerBean remotePeerBean = new RemotePeerBean(peerMock, new 
QuorumServer(5, ...));
    when(peerMock.isLeader(peerId)).return(true);
    assertThat("Remote peer bean should expose isLeader() property of remote 
peer", remotePeerBean.isLeader(5), isTrue());
    ...
    ```
    
    Haven't tested the code, sorry if it's not working out of the box, but 
hopefully give you an idea.


---

Reply via email to