Github user nkalmar commented on a diff in the pull request: https://github.com/apache/zookeeper/pull/546#discussion_r197072479 --- Diff: src/java/test/org/apache/zookeeper/test/HierarchicalQuorumTest.java --- @@ -226,38 +226,71 @@ void startServers(boolean withObservers) throws Exception { CONNECTION_TIMEOUT)); LOG.info(hp + " is accepting client connections"); } - + final int numberOfPeers = 5; // interesting to see what's there... JMXEnv.dump(); // make sure we have these 5 servers listed Set<String> ensureNames = new LinkedHashSet<String>(); - for (int i = 1; i <= 5; i++) { + for (int i = 1; i <= numberOfPeers; i++) { ensureNames.add("InMemoryDataTree"); } - for (int i = 1; i <= 5; i++) { + for (int i = 1; i <= numberOfPeers; i++) { ensureNames.add("name0=ReplicatedServer_id" + i + ",name1=replica." + i + ",name2="); } - for (int i = 1; i <= 5; i++) { - for (int j = 1; j <= 5; j++) { + for (int i = 1; i <= numberOfPeers; i++) { + for (int j = 1; j <= numberOfPeers; j++) { ensureNames.add("name0=ReplicatedServer_id" + i + ",name1=replica." + j); } } - for (int i = 1; i <= 5; i++) { + for (int i = 1; i <= numberOfPeers; i++) { ensureNames.add("name0=ReplicatedServer_id" + i); } JMXEnv.ensureAll(ensureNames.toArray(new String[ensureNames.size()])); - - for (int i = 1; i <= 5; i++) { + int countLeadersUsingLocalPeerBean = 0; + for (int i = 1; i <= numberOfPeers; i++) { + // LocalPeerBean String bean = CommonNames.DOMAIN + ":name0=ReplicatedServer_id" + i + ",name1=replica." + i; JMXEnv.ensureBeanAttribute(bean, "ConfigVersion"); JMXEnv.ensureBeanAttribute(bean, "LearnerType"); JMXEnv.ensureBeanAttribute(bean, "ClientAddress"); JMXEnv.ensureBeanAttribute(bean, "ElectionAddress"); JMXEnv.ensureBeanAttribute(bean, "QuorumSystemInfo"); + boolean leader = (boolean) JMXEnv.ensureBeanAttribute(bean, "Leader"); + if (leader) { + countLeadersUsingLocalPeerBean++; + } + } + Assert.assertEquals(1, countLeadersUsingLocalPeerBean); + + + int countLeadersUseRemotePeerBean = 0; --- End diff -- This whole test could use a refactor (most unit test could), but if we touch a unit test, we could keep good practices in mind. This could go to a seperate function. (But this is not a showstopper for me, just my two cents. )
---