@Test
public void testRevalidation() throws Exception {
setUp(-1);
q3.start();
Assert.assertTrue("waiting for server 3 being up",
ClientBase.waitForServerUp("127.0.0.1:" + CLIENT_PORT_OBS,
CONNECTION_TIMEOUT));
final int leaderProxyPort = PortAssignment.unique();
final int obsProxyPort = PortAssignment.unique();
int leaderPort = q1.getQuorumPeer().leader == null ? CLIENT_PORT_QP2 : CLIENT_PORT_QP1;
PortForwarder leaderPF = new PortForwarder(leaderProxyPort, leaderPort);
latch = new CountDownLatch(1);
zk = new ZooKeeper(String.format("127.0.0.1:%d,127.0.0.1:%d", leaderProxyPort, obsProxyPort),
ClientBase.CONNECTION_TIMEOUT, this);
latch.await();
zk.create("/revalidtest", "test".getBytes(),Ids.OPEN_ACL_UNSAFE,
CreateMode.EPHEMERAL);
Assert.assertNotNull("Read-after write failed", zk.exists("/revalidtest", null));
latch = new CountDownLatch(2);
PortForwarder obsPF = new PortForwarder(obsProxyPort, CLIENT_PORT_OBS);
try {
leaderPF.shutdown();
} catch (Exception e) {
}
latch.await();
Assert.assertEquals(new String(zk.getData("/revalidtest", null, null)), "test");
obsPF.shutdown();
shutdown();
}