http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/StandaloneTest.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/StandaloneTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/StandaloneTest.java deleted file mode 100644 index f305423..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/StandaloneTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.zookeeper.test; - -import static org.apache.zookeeper.test.ClientBase.CONNECTION_TIMEOUT; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.apache.zookeeper.PortAssignment; -import org.apache.zookeeper.Watcher; -import org.apache.zookeeper.server.quorum.QuorumPeerTestBase; -import org.junit.Assert; -import org.junit.Test; - -/** - * Standalone server tests. - */ -public class StandaloneTest extends QuorumPeerTestBase implements Watcher{ - protected static final Logger LOG = - LoggerFactory.getLogger(StandaloneTest.class); - - /** - * Ensure that a single standalone server comes up when misconfigured - * with a single server.# line in the configuration. This handles the - * case of HBase, which configures zoo.cfg in this way. Maintain b/w - * compatibility. - * TODO remove in a future version (4.0.0 hopefully) - */ - @Test - public void testStandaloneQuorum() throws Exception { - ClientBase.setupTestEnv(); - final int CLIENT_PORT_QP1 = PortAssignment.unique(); - - String quorumCfgSection = - "server.1=127.0.0.1:" + (PortAssignment.unique()) - + ":" + (PortAssignment.unique()) + "\n"; - - MainThread q1 = new MainThread(1, CLIENT_PORT_QP1, quorumCfgSection); - q1.start(); - try { - Assert.assertTrue("waiting for server 1 being up", - ClientBase.waitForServerUp("127.0.0.1:" + CLIENT_PORT_QP1, - CONNECTION_TIMEOUT)); - } finally { - q1.shutdown(); - } - } - -}
http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/StatTest.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/StatTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/StatTest.java deleted file mode 100644 index f4c01aa..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/StatTest.java +++ /dev/null @@ -1,205 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.zookeeper.test; - -import java.io.IOException; - -import org.apache.zookeeper.CreateMode; -import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.ZooDefs.Ids; -import org.apache.zookeeper.data.Stat; -import org.junit.Assert; -import org.junit.Test; - -public class StatTest extends ClientBase { - private ZooKeeper zk; - - @Override - public void setUp() throws Exception { - super.setUp(); - - zk = createClient(); - } - - @Override - public void tearDown() throws Exception { - super.tearDown(); - - zk.close(); - } - - /** - * Create a new Stat, fill in dummy values trying to catch Assert.failure - * to copy in client or server code. - * - * @return a new stat with dummy values - */ - private Stat newStat() { - Stat stat = new Stat(); - - stat.setAversion(100); - stat.setCtime(100); - stat.setCversion(100); - stat.setCzxid(100); - stat.setDataLength(100); - stat.setEphemeralOwner(100); - stat.setMtime(100); - stat.setMzxid(100); - stat.setNumChildren(100); - stat.setPzxid(100); - stat.setVersion(100); - - return stat; - } - - @Test - public void testBasic() - throws IOException, KeeperException, InterruptedException - { - String name = "/foo"; - zk.create(name, name.getBytes(), Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - - Stat stat; - - stat = newStat(); - zk.getData(name, false, stat); - - Assert.assertEquals(stat.getCzxid(), stat.getMzxid()); - Assert.assertEquals(stat.getCzxid(), stat.getPzxid()); - Assert.assertEquals(stat.getCtime(), stat.getMtime()); - Assert.assertEquals(0, stat.getCversion()); - Assert.assertEquals(0, stat.getVersion()); - Assert.assertEquals(0, stat.getAversion()); - Assert.assertEquals(0, stat.getEphemeralOwner()); - Assert.assertEquals(name.length(), stat.getDataLength()); - Assert.assertEquals(0, stat.getNumChildren()); - } - - @Test - public void testChild() - throws IOException, KeeperException, InterruptedException - { - String name = "/foo"; - zk.create(name, name.getBytes(), Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - - String childname = name + "/bar"; - zk.create(childname, childname.getBytes(), Ids.OPEN_ACL_UNSAFE, - CreateMode.EPHEMERAL); - - Stat stat; - - stat = newStat(); - zk.getData(name, false, stat); - - Assert.assertEquals(stat.getCzxid(), stat.getMzxid()); - Assert.assertEquals(stat.getCzxid() + 1, stat.getPzxid()); - Assert.assertEquals(stat.getCtime(), stat.getMtime()); - Assert.assertEquals(1, stat.getCversion()); - Assert.assertEquals(0, stat.getVersion()); - Assert.assertEquals(0, stat.getAversion()); - Assert.assertEquals(0, stat.getEphemeralOwner()); - Assert.assertEquals(name.length(), stat.getDataLength()); - Assert.assertEquals(1, stat.getNumChildren()); - - stat = newStat(); - zk.getData(childname, false, stat); - - Assert.assertEquals(stat.getCzxid(), stat.getMzxid()); - Assert.assertEquals(stat.getCzxid(), stat.getPzxid()); - Assert.assertEquals(stat.getCtime(), stat.getMtime()); - Assert.assertEquals(0, stat.getCversion()); - Assert.assertEquals(0, stat.getVersion()); - Assert.assertEquals(0, stat.getAversion()); - Assert.assertEquals(zk.getSessionId(), stat.getEphemeralOwner()); - Assert.assertEquals(childname.length(), stat.getDataLength()); - Assert.assertEquals(0, stat.getNumChildren()); - } - - @Test - public void testChildren() - throws IOException, KeeperException, InterruptedException - { - String name = "/foo"; - zk.create(name, name.getBytes(), Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - - for(int i = 0; i < 10; i++) { - String childname = name + "/bar" + i; - zk.create(childname, childname.getBytes(), Ids.OPEN_ACL_UNSAFE, - CreateMode.EPHEMERAL); - - Stat stat; - - stat = newStat(); - zk.getData(name, false, stat); - - Assert.assertEquals(stat.getCzxid(), stat.getMzxid()); - Assert.assertEquals(stat.getCzxid() + i + 1, stat.getPzxid()); - Assert.assertEquals(stat.getCtime(), stat.getMtime()); - Assert.assertEquals(i + 1, stat.getCversion()); - Assert.assertEquals(0, stat.getVersion()); - Assert.assertEquals(0, stat.getAversion()); - Assert.assertEquals(0, stat.getEphemeralOwner()); - Assert.assertEquals(name.length(), stat.getDataLength()); - Assert.assertEquals(i + 1, stat.getNumChildren()); - } - } - - @Test - public void testDataSizeChange() - throws IOException, KeeperException, InterruptedException - { - String name = "/foo"; - zk.create(name, name.getBytes(), Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - - Stat stat; - - stat = newStat(); - zk.getData(name, false, stat); - - Assert.assertEquals(stat.getCzxid(), stat.getMzxid()); - Assert.assertEquals(stat.getCzxid(), stat.getPzxid()); - Assert.assertEquals(stat.getCtime(), stat.getMtime()); - Assert.assertEquals(0, stat.getCversion()); - Assert.assertEquals(0, stat.getVersion()); - Assert.assertEquals(0, stat.getAversion()); - Assert.assertEquals(0, stat.getEphemeralOwner()); - Assert.assertEquals(name.length(), stat.getDataLength()); - Assert.assertEquals(0, stat.getNumChildren()); - - zk.setData(name, (name + name).getBytes(), -1); - - stat = newStat(); - zk.getData(name, false, stat); - - Assert.assertNotSame(stat.getCzxid(), stat.getMzxid()); - Assert.assertEquals(stat.getCzxid(), stat.getPzxid()); - Assert.assertNotSame(stat.getCtime(), stat.getMtime()); - Assert.assertEquals(0, stat.getCversion()); - Assert.assertEquals(1, stat.getVersion()); - Assert.assertEquals(0, stat.getAversion()); - Assert.assertEquals(0, stat.getEphemeralOwner()); - Assert.assertEquals(name.length() * 2, stat.getDataLength()); - Assert.assertEquals(0, stat.getNumChildren()); - } -} http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/StaticHostProviderTest.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/StaticHostProviderTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/StaticHostProviderTest.java deleted file mode 100644 index a4107a5..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/StaticHostProviderTest.java +++ /dev/null @@ -1,362 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.zookeeper.test; - -import org.apache.zookeeper.ZKTestCase; -import org.apache.zookeeper.client.HostProvider; -import org.apache.zookeeper.client.StaticHostProvider; -import org.apache.zookeeper.common.Time; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import static org.hamcrest.CoreMatchers.anyOf; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotSame; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.hasItems; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class StaticHostProviderTest extends ZKTestCase { - private static final Logger LOG = LoggerFactory.getLogger(StaticHostProviderTest.class); - - @Test - public void testNextGoesRound() { - HostProvider hostProvider = getHostProvider((byte) 2); - InetSocketAddress first = hostProvider.next(0); - assertTrue(first instanceof InetSocketAddress); - hostProvider.next(0); - assertEquals(first, hostProvider.next(0)); - } - - @Test - public void testNextGoesRoundAndSleeps() { - byte size = 2; - HostProvider hostProvider = getHostProvider(size); - while (size > 0) { - hostProvider.next(0); - --size; - } - long start = Time.currentElapsedTime(); - hostProvider.next(1000); - long stop = Time.currentElapsedTime(); - assertTrue(900 <= stop - start); - } - - @Test - public void testNextDoesNotSleepForZero() { - byte size = 2; - HostProvider hostProvider = getHostProvider(size); - while (size > 0) { - hostProvider.next(0); - --size; - } - long start = Time.currentElapsedTime(); - hostProvider.next(0); - long stop = Time.currentElapsedTime(); - assertTrue(5 > stop - start); - } - - @Test - public void testTwoConsequitiveCallsToNextReturnDifferentElement() { - HostProvider hostProvider = getHostProvider((byte) 2); - assertNotSame(hostProvider.next(0), hostProvider.next(0)); - } - - @Test - public void testOnConnectDoesNotReset() { - HostProvider hostProvider = getHostProvider((byte) 2); - InetSocketAddress first = hostProvider.next(0); - hostProvider.onConnected(); - InetSocketAddress second = hostProvider.next(0); - assertNotSame(first, second); - } - - @Test - public void testLiteralIPNoReverseNS() { - byte size = 30; - HostProvider hostProvider = getHostProviderUnresolved(size); - for (int i = 0; i < size; i++) { - InetSocketAddress next = hostProvider.next(0); - assertTrue(next instanceof InetSocketAddress); - assertTrue(!next.isUnresolved()); - assertTrue("InetSocketAddress must not have hostname part " + - next.toString(), next.toString().startsWith("/")); - // Do NOT trigger the reverse name service lookup. - String hostname = next.getHostName(); - // In this case, the hostname equals literal IP address. - hostname.equals(next.getAddress().getHostAddress()); - } - } - - @Test(expected = IllegalArgumentException.class) - public void testEmptyServerAddressesList() { - HostProvider hp = new StaticHostProvider(new ArrayList<InetSocketAddress>()); - } - - @Test - public void testInvalidHostAddresses() { - // Arrange - final List<InetSocketAddress> invalidAddresses = new ArrayList<InetSocketAddress>(); - InetSocketAddress unresolved = InetSocketAddress.createUnresolved("a", 1234); - invalidAddresses.add(unresolved); - StaticHostProvider.Resolver resolver = new StaticHostProvider.Resolver() { - @Override - public InetAddress[] getAllByName(String name) throws UnknownHostException { - throw new UnknownHostException(); - } - }; - StaticHostProvider sp = new StaticHostProvider(invalidAddresses, resolver); - - // Act & Assert - InetSocketAddress n1 = sp.next(0); - assertTrue("Provider should return unresolved address is host is unresolvable", n1.isUnresolved()); - assertSame("Provider should return original address is host is unresolvable", unresolved, n1); - } - - @Test - public void testReResolvingSingle() throws UnknownHostException { - // Arrange - byte size = 1; - ArrayList<InetSocketAddress> list = new ArrayList<InetSocketAddress>(size); - - // Test a hostname that resolves to a single address - list.add(InetSocketAddress.createUnresolved("issues.apache.org", 1234)); - - final InetAddress issuesApacheOrg = mock(InetAddress.class); - when(issuesApacheOrg.getHostAddress()).thenReturn("192.168.1.1"); - when(issuesApacheOrg.toString()).thenReturn("issues.apache.org"); - when(issuesApacheOrg.getHostName()).thenReturn("issues.apache.org"); - - StaticHostProvider.Resolver resolver = new StaticHostProvider.Resolver() { - @Override - public InetAddress[] getAllByName(String name) { - return new InetAddress[] { - issuesApacheOrg - }; - } - }; - StaticHostProvider.Resolver spyResolver = spy(resolver); - - // Act - StaticHostProvider hostProvider = new StaticHostProvider(list, spyResolver); - for (int i = 0; i < 10; i++) { - InetSocketAddress next = hostProvider.next(0); - assertEquals(issuesApacheOrg, next.getAddress()); - } - - // Assert - // Resolver called 10 times, because we shouldn't cache the resolved addresses - verify(spyResolver, times(10)).getAllByName("issues.apache.org"); // resolution occurred - } - - @Test - public void testReResolvingMultiple() throws UnknownHostException { - // Arrange - byte size = 1; - ArrayList<InetSocketAddress> list = new ArrayList<InetSocketAddress>(size); - - // Test a hostname that resolves to multiple addresses - list.add(InetSocketAddress.createUnresolved("www.apache.org", 1234)); - - final InetAddress apacheOrg1 = mock(InetAddress.class); - when(apacheOrg1.getHostAddress()).thenReturn("192.168.1.1"); - when(apacheOrg1.toString()).thenReturn("www.apache.org"); - when(apacheOrg1.getHostName()).thenReturn("www.apache.org"); - - final InetAddress apacheOrg2 = mock(InetAddress.class); - when(apacheOrg2.getHostAddress()).thenReturn("192.168.1.2"); - when(apacheOrg2.toString()).thenReturn("www.apache.org"); - when(apacheOrg2.getHostName()).thenReturn("www.apache.org"); - - final List<InetAddress> resolvedAddresses = new ArrayList<InetAddress>(); - resolvedAddresses.add(apacheOrg1); - resolvedAddresses.add(apacheOrg2); - StaticHostProvider.Resolver resolver = new StaticHostProvider.Resolver() { - @Override - public InetAddress[] getAllByName(String name) { - return resolvedAddresses.toArray(new InetAddress[resolvedAddresses.size()]); - } - }; - StaticHostProvider.Resolver spyResolver = spy(resolver); - - // Act & Assert - StaticHostProvider hostProvider = new StaticHostProvider(list, spyResolver); - assertEquals(1, hostProvider.size()); // single address not extracted - - for (int i = 0; i < 10; i++) { - InetSocketAddress next = hostProvider.next(0); - assertThat("Bad IP address returned", next.getAddress().getHostAddress(), anyOf(equalTo(apacheOrg1.getHostAddress()), equalTo(apacheOrg2.getHostAddress()))); - assertEquals(1, hostProvider.size()); // resolve() call keeps the size of provider - } - // Resolver called 10 times, because we shouldn't cache the resolved addresses - verify(spyResolver, times(10)).getAllByName("www.apache.org"); // resolution occurred - } - - @Test - public void testReResolveMultipleOneFailing() throws UnknownHostException { - // Arrange - final List<InetSocketAddress> list = new ArrayList<InetSocketAddress>(); - list.add(InetSocketAddress.createUnresolved("www.apache.org", 1234)); - final List<String> ipList = new ArrayList<String>(); - final List<InetAddress> resolvedAddresses = new ArrayList<InetAddress>(); - for (int i = 0; i < 3; i++) { - ipList.add(String.format("192.168.1.%d", i+1)); - final InetAddress apacheOrg = mock(InetAddress.class); - when(apacheOrg.getHostAddress()).thenReturn(String.format("192.168.1.%d", i+1)); - when(apacheOrg.toString()).thenReturn(String.format("192.168.1.%d", i+1)); - when(apacheOrg.getHostName()).thenReturn("www.apache.org"); - resolvedAddresses.add(apacheOrg); - } - - StaticHostProvider.Resolver resolver = new StaticHostProvider.Resolver() { - @Override - public InetAddress[] getAllByName(String name) { - return resolvedAddresses.toArray(new InetAddress[resolvedAddresses.size()]); - } - }; - StaticHostProvider.Resolver spyResolver = spy(resolver); - StaticHostProvider hostProvider = new StaticHostProvider(list, spyResolver); - - // Act & Assert - InetSocketAddress resolvedFirst = hostProvider.next(0); - assertFalse("HostProvider should return resolved addresses", resolvedFirst.isUnresolved()); - assertThat("Bad IP address returned", ipList, hasItems(resolvedFirst.getAddress().getHostAddress())); - - hostProvider.onConnected(); // first address worked - - InetSocketAddress resolvedSecond = hostProvider.next(0); - assertFalse("HostProvider should return resolved addresses", resolvedSecond.isUnresolved()); - assertThat("Bad IP address returned", ipList, hasItems(resolvedSecond.getAddress().getHostAddress())); - - // Second address doesn't work, so we don't call onConnected() this time - // StaticHostProvider should try to re-resolve the address in this case - - InetSocketAddress resolvedThird = hostProvider.next(0); - assertFalse("HostProvider should return resolved addresses", resolvedThird.isUnresolved()); - assertThat("Bad IP address returned", ipList, hasItems(resolvedThird.getAddress().getHostAddress())); - - verify(spyResolver, times(3)).getAllByName("www.apache.org"); // resolution occured every time - } - - @Test - public void testEmptyResolution() throws UnknownHostException { - // Arrange - final List<InetSocketAddress> list = new ArrayList<InetSocketAddress>(); - list.add(InetSocketAddress.createUnresolved("www.apache.org", 1234)); - list.add(InetSocketAddress.createUnresolved("www.google.com", 1234)); - final List<InetAddress> resolvedAddresses = new ArrayList<InetAddress>(); - - final InetAddress apacheOrg1 = mock(InetAddress.class); - when(apacheOrg1.getHostAddress()).thenReturn("192.168.1.1"); - when(apacheOrg1.toString()).thenReturn("www.apache.org"); - when(apacheOrg1.getHostName()).thenReturn("www.apache.org"); - - resolvedAddresses.add(apacheOrg1); - - StaticHostProvider.Resolver resolver = new StaticHostProvider.Resolver() { - @Override - public InetAddress[] getAllByName(String name) { - if ("www.apache.org".equalsIgnoreCase(name)) { - return resolvedAddresses.toArray(new InetAddress[resolvedAddresses.size()]); - } else { - return new InetAddress[0]; - } - } - }; - StaticHostProvider.Resolver spyResolver = spy(resolver); - StaticHostProvider hostProvider = new StaticHostProvider(list, spyResolver); - - // Act & Assert - for (int i = 0; i < 10; i++) { - InetSocketAddress resolved = hostProvider.next(0); - hostProvider.onConnected(); - if (resolved.getHostName().equals("www.google.com")) { - assertTrue("HostProvider should return unresolved address if host is unresolvable", resolved.isUnresolved()); - } else { - assertFalse("HostProvider should return resolved addresses", resolved.isUnresolved()); - assertEquals("192.168.1.1", resolved.getAddress().getHostAddress()); - } - } - - verify(spyResolver, times(5)).getAllByName("www.apache.org"); - verify(spyResolver, times(5)).getAllByName("www.google.com"); - } - - @Test - public void testReResolvingLocalhost() { - byte size = 2; - ArrayList<InetSocketAddress> list = new ArrayList<InetSocketAddress>(size); - - // Test a hostname that resolves to multiple addresses - list.add(InetSocketAddress.createUnresolved("localhost", 1234)); - list.add(InetSocketAddress.createUnresolved("localhost", 1235)); - StaticHostProvider hostProvider = new StaticHostProvider(list); - int sizeBefore = hostProvider.size(); - InetSocketAddress next = hostProvider.next(0); - next = hostProvider.next(0); - assertTrue("Different number of addresses in the list: " + hostProvider.size() + - " (after), " + sizeBefore + " (before)", hostProvider.size() == sizeBefore); - } - - private StaticHostProvider getHostProviderUnresolved(byte size) { - return new StaticHostProvider(getUnresolvedServerAddresses(size)); - } - - private Collection<InetSocketAddress> getUnresolvedServerAddresses(byte size) { - ArrayList<InetSocketAddress> list = new ArrayList<InetSocketAddress>(size); - while (size > 0) { - list.add(InetSocketAddress.createUnresolved("192.0.2." + size, 1234 + size)); - --size; - } - return list; - } - - private StaticHostProvider getHostProvider(byte size) { - ArrayList<InetSocketAddress> list = new ArrayList<InetSocketAddress>( - size); - while (size > 0) { - try { - list.add(new InetSocketAddress(InetAddress.getByAddress(new byte[]{-64, 0, 2, size}), 1234 + size)); - } catch (UnknownHostException e) { - LOG.error("Exception while resolving address", e); - fail("Failed to resolve address"); - } - --size; - } - return new StaticHostProvider(list); - } -} http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/SyncCallTest.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/SyncCallTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/SyncCallTest.java deleted file mode 100644 index 4fb006a..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/SyncCallTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.zookeeper.test; - -import java.io.IOException; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -import org.apache.zookeeper.CreateMode; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.AsyncCallback.Children2Callback; -import org.apache.zookeeper.AsyncCallback.ChildrenCallback; -import org.apache.zookeeper.AsyncCallback.StringCallback; -import org.apache.zookeeper.AsyncCallback.VoidCallback; -import org.apache.zookeeper.ZooDefs.Ids; -import org.apache.zookeeper.data.Stat; -import org.junit.Assert; -import org.junit.Test; - -public class SyncCallTest extends ClientBase - implements ChildrenCallback, Children2Callback, StringCallback, VoidCallback -{ - private CountDownLatch opsCount; - - List<Integer> results = new LinkedList<Integer>(); - Integer limit = 100 + 1 + 100 + 100; - - @Test - public void testSync() throws Exception { - try { - LOG.info("Starting ZK:" + (new Date()).toString()); - opsCount = new CountDownLatch(limit); - ZooKeeper zk = createClient(); - - LOG.info("Beginning test:" + (new Date()).toString()); - for(int i = 0; i < 100; i++) - zk.create("/test" + i, new byte[0], Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT, this, results); - zk.sync("/test", this, results); - for(int i = 0; i < 100; i++) - zk.delete("/test" + i, 0, this, results); - for(int i = 0; i < 100; i++) - zk.getChildren("/", new NullWatcher(), (ChildrenCallback)this, - results); - for(int i = 0; i < 100; i++) - zk.getChildren("/", new NullWatcher(), (Children2Callback)this, - results); - LOG.info("Submitted all operations:" + (new Date()).toString()); - - if(!opsCount.await(10000, TimeUnit.MILLISECONDS)) - Assert.fail("Haven't received all confirmations" + opsCount.getCount()); - - for(int i = 0; i < limit ; i++){ - Assert.assertEquals(0, (int) results.get(i)); - } - - } catch (IOException e) { - System.out.println(e.toString()); - } - } - - @SuppressWarnings("unchecked") - public void processResult(int rc, String path, Object ctx, - List<String> children) { - ((List<Integer>)ctx).add(rc); - opsCount.countDown(); - } - - @SuppressWarnings("unchecked") - public void processResult(int rc, String path, Object ctx, - List<String> children, Stat stat) { - ((List<Integer>)ctx).add(rc); - opsCount.countDown(); - } - - @SuppressWarnings("unchecked") - public void processResult(int rc, String path, Object ctx, String name){ - ((List<Integer>) ctx).add(rc); - opsCount.countDown(); - - } - - @SuppressWarnings("unchecked") - public void processResult(int rc, String path, Object ctx){ - ((List<Integer>) ctx).add(rc); - opsCount.countDown(); - - } -} http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/TestHammer.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/TestHammer.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/TestHammer.java deleted file mode 100644 index a73d6df..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/TestHammer.java +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.zookeeper.test; - -import java.io.IOException; - -import org.apache.zookeeper.CreateMode; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.AsyncCallback.VoidCallback; -import org.apache.zookeeper.ZooDefs.Ids; -import org.apache.zookeeper.common.Time; - -public class TestHammer implements VoidCallback { - - /** - * @param args - */ - static int REPS = 50000; - public static void main(String[] args) { - long startTime = Time.currentElapsedTime(); - ZooKeeper zk = null; - try { - zk = new ZooKeeper(args[0], 10000, null); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - throw new RuntimeException(e1); - } - for(int i = 0; i < REPS; i++) { - try { - String name = zk.create("/testFile-", new byte[16], Ids.OPEN_ACL_UNSAFE, - CreateMode.EPHEMERAL_SEQUENTIAL); - zk.delete(name, -1, new TestHammer(), null); - } catch(Exception e) { - i--; - e.printStackTrace(); - } - } - System.out.println("creates/sec=" + (REPS*1000/(Time.currentElapsedTime()-startTime))); - } - - public void processResult(int rc, String path, Object ctx) { - // TODO Auto-generated method stub - - } - -} http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/TestUtils.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/TestUtils.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/TestUtils.java deleted file mode 100644 index fa08b82..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/TestUtils.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.zookeeper.test; - -import java.io.File; - -import org.junit.Assert; - -/** - * This class contains test utility methods - */ -public class TestUtils { - - /** - * deletes a folder recursively - * - * @param file - * folder to be deleted - * @param failOnError - * if true file deletion success is ensured - */ - public static boolean deleteFileRecursively(File file, - final boolean failOnError) { - if (file != null) { - if (file.isDirectory()) { - File[] files = file.listFiles(); - int size = files.length; - for (int i = 0; i < size; i++) { - File f = files[i]; - boolean deleted = deleteFileRecursively(files[i], failOnError); - if(!deleted && failOnError) - { - Assert.fail("file '" + f.getAbsolutePath()+"' deletion failed"); - } - } - } - return file.delete(); - } - return true; - } - - public static boolean deleteFileRecursively(File file) { - return deleteFileRecursively(file, false); - } -} http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/TruncateTest.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/TruncateTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/TruncateTest.java deleted file mode 100644 index 66ff63d..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/TruncateTest.java +++ /dev/null @@ -1,256 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.zookeeper.test; - -import java.io.File; -import java.io.IOException; -import java.net.InetSocketAddress; -import java.util.HashMap; - -import junit.framework.Assert; - -import org.apache.jute.Record; -import org.apache.zookeeper.CreateMode; -import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.PortAssignment; -import org.apache.zookeeper.WatchedEvent; -import org.apache.zookeeper.Watcher; -import org.apache.zookeeper.ZKTestCase; -import org.apache.zookeeper.ZooDefs; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.data.Stat; -import org.apache.zookeeper.server.Request; -import org.apache.zookeeper.server.ServerCnxnFactory; -import org.apache.zookeeper.server.ZKDatabase; -import org.apache.zookeeper.server.ZooKeeperServer; -import org.apache.zookeeper.server.persistence.FileTxnLog; -import org.apache.zookeeper.server.persistence.FileTxnSnapLog; -import org.apache.zookeeper.server.persistence.TxnLog.TxnIterator; -import org.apache.zookeeper.server.quorum.QuorumPeer; -import org.apache.zookeeper.server.quorum.QuorumPeer.QuorumServer; -import org.apache.zookeeper.txn.SetDataTxn; -import org.apache.zookeeper.txn.TxnHeader; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class TruncateTest extends ZKTestCase { - private static final Logger LOG = LoggerFactory.getLogger(TruncateTest.class); - File dataDir1, dataDir2, dataDir3; - final int baseHostPort = PortAssignment.unique(); - - @Before - public void setUp() throws IOException { - dataDir1 = ClientBase.createTmpDir(); - dataDir2 = ClientBase.createTmpDir(); - dataDir3 = ClientBase.createTmpDir(); - } - - @After - public void tearDown() { - ClientBase.recursiveDelete(dataDir1); - ClientBase.recursiveDelete(dataDir2); - ClientBase.recursiveDelete(dataDir3); - } - - volatile boolean connected; - Watcher nullWatcher = new Watcher() { - @Override - public void process(WatchedEvent event) { - connected = event.getState() == Watcher.Event.KeeperState.SyncConnected; - } - }; - - @Test - public void testTruncationStreamReset() throws Exception { - File tmpdir = ClientBase.createTmpDir(); - FileTxnSnapLog snaplog = new FileTxnSnapLog(tmpdir, tmpdir); - ZKDatabase zkdb = new ZKDatabase(snaplog); - - for (int i = 1; i <= 100; i++) { - append(zkdb, i); - } - - zkdb.truncateLog(1); - - append(zkdb, 200); - - zkdb.close(); - - // verify that the truncation and subsequent append were processed - // correctly - FileTxnLog txnlog = new FileTxnLog(new File(tmpdir, "version-2")); - TxnIterator iter = txnlog.read(1); - - TxnHeader hdr = iter.getHeader(); - Record txn = iter.getTxn(); - Assert.assertEquals(1, hdr.getZxid()); - Assert.assertTrue(txn instanceof SetDataTxn); - - iter.next(); - - hdr = iter.getHeader(); - txn = iter.getTxn(); - Assert.assertEquals(200, hdr.getZxid()); - Assert.assertTrue(txn instanceof SetDataTxn); - iter.close(); - ClientBase.recursiveDelete(tmpdir); - } - - private void append(ZKDatabase zkdb, int i) throws IOException { - TxnHeader hdr = new TxnHeader(1, 1, i, 1, ZooDefs.OpCode.setData); - Record txn = new SetDataTxn("/foo" + i, new byte[0], 1); - Request req = new Request(null, 0, 0, 0, null, null); - req.hdr = hdr; - req.txn = txn; - - zkdb.append(req); - zkdb.commit(); - } - - - @Test - public void testTruncationNullLog() throws Exception { - File tmpdir = ClientBase.createTmpDir(); - FileTxnSnapLog snaplog = new FileTxnSnapLog(tmpdir, tmpdir); - ZKDatabase zkdb = new ZKDatabase(snaplog); - - for (int i = 1; i <= 100; i++) { - append(zkdb, i); - } - zkdb.close(); - File[] logs = snaplog.getDataDir().listFiles(); - for(int i = 0; i < logs.length; i++) { - LOG.debug("Deleting: {}", logs[i].getName()); - Assert.assertTrue("Failed to delete log file: " + logs[i].getName(), logs[i].delete()); - } - try { - zkdb.truncateLog(1); - Assert.assertTrue("Should not get here", false); - } - catch(IOException e) { - Assert.assertTrue("Should have received an IOException", true); - } - catch(NullPointerException npe) { - Assert.fail("This should not throw NPE!"); - } - - ClientBase.recursiveDelete(tmpdir); - } - - @Test - public void testTruncate() throws IOException, InterruptedException, KeeperException { - // Prime the server that is going to come in late with 50 txns - String hostPort = "127.0.0.1:" + baseHostPort; - int maxCnxns = 100; - ServerCnxnFactory factory = ClientBase.createNewServerInstance(null, - hostPort, maxCnxns); - ClientBase.startServerInstance(dataDir1, factory, hostPort); - ClientBase.shutdownServerInstance(factory, hostPort); - - // standalone starts with 0 epoch while quorum starts with 1 - File origfile = new File(new File(dataDir1, "version-2"), "snapshot.0"); - File newfile = new File(new File(dataDir1, "version-2"), "snapshot.100000000"); - origfile.renameTo(newfile); - - factory = ClientBase.createNewServerInstance(null, hostPort, maxCnxns); - ClientBase.startServerInstance(dataDir1, factory, hostPort); - - ZooKeeper zk = new ZooKeeper(hostPort, 15000, nullWatcher); - for(int i = 0; i < 50; i++) { - zk.create("/" + i, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - } - zk.close(); - - ZKDatabase zkDb; - { - ZooKeeperServer zs = ClientBase.getServer(factory); - - zkDb = zs.getZKDatabase(); - } - factory.shutdown(); - try { - zkDb.close(); - } catch (IOException ie) { - LOG.warn("Error closing logs ", ie); - } - int tickTime = 2000; - int initLimit = 3; - int syncLimit = 3; - int port1 = baseHostPort+1; - int port2 = baseHostPort+2; - int port3 = baseHostPort+3; - - // Start up two of the quorum and add 10 txns - HashMap<Long,QuorumServer> peers = new HashMap<Long,QuorumServer>(); - peers.put(Long.valueOf(1), new QuorumServer(1, "127.0.0.1", port1 + 1000, 0, null)); - peers.put(Long.valueOf(2), new QuorumServer(2, "127.0.0.1", port2 + 1000, 0, null)); - peers.put(Long.valueOf(3), new QuorumServer(3, "127.0.0.1", port3 + 1000, 0, null)); - - QuorumPeer s2 = new QuorumPeer(peers, dataDir2, dataDir2, port2, 0, 2, tickTime, initLimit, syncLimit); - s2.start(); - QuorumPeer s3 = new QuorumPeer(peers, dataDir3, dataDir3, port3, 0, 3, tickTime, initLimit, syncLimit); - s3.start(); - connected = false; - zk = new ZooKeeper("127.0.0.1:" + port2, 15000, nullWatcher); - while(!connected) { - Thread.sleep(1000); - } - for(int i = 0; i < 10; i++) { - zk.create("/" + i, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - } - zk.close(); - - final ZooKeeper zk2 = new ZooKeeper("127.0.0.1:" + port2, 15000, nullWatcher); - zk2.getData("/9", false, new Stat()); - try { - zk2.getData("/10", false, new Stat()); - Assert.fail("Should have gotten an error"); - } catch(KeeperException.NoNodeException e) { - // this is what we want - } - QuorumPeer s1 = new QuorumPeer(peers, dataDir1, dataDir1, port1, 0, 1, tickTime, initLimit, syncLimit); - s1.start(); - - connected = false; - ZooKeeper zk1 = new ZooKeeper("127.0.0.1:" + port1, 15000, nullWatcher); - while(!connected) { - Thread.sleep(1000); - } - zk1.getData("/9", false, new Stat()); - try { - // /10 wont work because the session expiration - // will match the zxid for /10 and so we wont - // actually truncate the zxid for /10 creation - // due to an artifact of switching the xid of the standalone - // /11 is the last entry in the log for the xid - // as a result /12 is the first of the truncated znodes to check for - zk1.getData("/12", false, new Stat()); - Assert.fail("Should have gotten an error"); - } catch(KeeperException.NoNodeException e) { - // this is what we want - } - zk1.close(); - QuorumBase.shutdown(s1); - QuorumBase.shutdown(s2); - QuorumBase.shutdown(s3); - } -} http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/UpgradeTest.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/UpgradeTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/UpgradeTest.java deleted file mode 100644 index b8db0da..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/UpgradeTest.java +++ /dev/null @@ -1,105 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.zookeeper.test; - -import static org.apache.zookeeper.test.ClientBase.CONNECTION_TIMEOUT; - -import java.io.File; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.CountDownLatch; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.apache.zookeeper.CreateMode; -import org.apache.zookeeper.PortAssignment; -import org.apache.zookeeper.WatchedEvent; -import org.apache.zookeeper.Watcher; -import org.apache.zookeeper.ZKTestCase; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.Watcher.Event.KeeperState; -import org.apache.zookeeper.ZooDefs.Ids; -import org.apache.zookeeper.data.Stat; -import org.apache.zookeeper.server.ServerCnxnFactory; -import org.apache.zookeeper.server.SyncRequestProcessor; -import org.apache.zookeeper.server.ZooKeeperServer; -import org.apache.zookeeper.server.upgrade.UpgradeMain; -import org.junit.Assert; -import org.junit.Test; - -public class UpgradeTest extends ZKTestCase implements Watcher { - private final static Logger LOG = LoggerFactory.getLogger(UpgradeTest.class); - - private static String HOSTPORT = "127.0.0.1:" + PortAssignment.unique(); - private static final File testData = new File( - System.getProperty("test.data.dir", "build/test/data")); - private CountDownLatch startSignal; - - /** - * test the upgrade - * @throws Exception - */ - @Test - public void testUpgrade() throws Exception { - File upgradeDir = new File(testData, "upgrade"); - UpgradeMain upgrade = new UpgradeMain(upgradeDir, upgradeDir); - upgrade.runUpgrade(); - ZooKeeperServer zks = new ZooKeeperServer(upgradeDir, upgradeDir, 3000); - SyncRequestProcessor.setSnapCount(1000); - final int PORT = Integer.parseInt(HOSTPORT.split(":")[1]); - ServerCnxnFactory f = ServerCnxnFactory.createFactory(PORT, -1); - f.startup(zks); - LOG.info("starting up the zookeeper server .. waiting"); - Assert.assertTrue("waiting for server being up", - ClientBase.waitForServerUp(HOSTPORT, CONNECTION_TIMEOUT)); - ZooKeeper zk = new ZooKeeper(HOSTPORT, CONNECTION_TIMEOUT, this); - Stat stat = zk.exists("/", false); - List<String> children = zk.getChildren("/", false); - Collections.sort(children); - for (int i = 0; i < 10; i++) { - Assert.assertTrue("data tree sanity check", - ("test-" + i).equals(children.get(i))); - } - //try creating one node - zk.create("/upgrade", "upgrade".getBytes(), Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - // check if its there - if (zk.exists("/upgrade", false) == null) { - Assert.assertTrue(false); - } - - zk.close(); - - // bring down the server - f.shutdown(); - Assert.assertTrue("waiting for server down", - ClientBase.waitForServerDown(HOSTPORT, - ClientBase.CONNECTION_TIMEOUT)); - - } - - public void process(WatchedEvent event) { - LOG.info("Event:" + event.getState() + " " + event.getType() + " " + event.getPath()); - if (event.getState() == KeeperState.SyncConnected - && startSignal != null && startSignal.getCount() > 0) - { - startSignal.countDown(); - } - } -} http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatchEventWhenAutoReset.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatchEventWhenAutoReset.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatchEventWhenAutoReset.java deleted file mode 100644 index eed02c5..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatchEventWhenAutoReset.java +++ /dev/null @@ -1,212 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.zookeeper.test; - -import java.io.IOException; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import org.apache.zookeeper.CreateMode; -import org.apache.zookeeper.WatchedEvent; -import org.apache.zookeeper.ZooDefs; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.Watcher.Event.EventType; -import org.apache.zookeeper.test.ClientBase.CountdownWatcher; -import org.junit.Assert; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import junit.framework.TestCase; - -public class WatchEventWhenAutoReset extends TestCase { - protected static final Logger LOG = LoggerFactory - .getLogger(WatchEventWhenAutoReset.class); - - // waiting time for expected condition - private static final int TIMEOUT = 30000; - - static public class EventsWatcher extends CountdownWatcher { - private LinkedBlockingQueue<WatchedEvent> dataEvents = new LinkedBlockingQueue<WatchedEvent>(); - - @Override - public void process(WatchedEvent event) { - super.process(event); - try { - if (event.getType() != Event.EventType.None) { - dataEvents.put(event); - } - } catch (InterruptedException e) { - LOG.warn("ignoring interrupt during EventsWatcher process"); - } - } - - public void assertEvent(long timeout, EventType eventType) { - try { - WatchedEvent event = dataEvents.poll(timeout, - TimeUnit.MILLISECONDS); - Assert.assertNotNull("do not receive a " + eventType, event); - Assert.assertEquals(eventType, event.getType()); - } catch (InterruptedException e) { - LOG.warn("ignoring interrupt during EventsWatcher assertEvent"); - } - } - } - - private ZooKeeper createClient(QuorumUtil qu, int id, EventsWatcher watcher) - throws IOException { - String hostPort = "127.0.0.1:" + qu.getPeer(id).clientPort; - ZooKeeper zk = new ZooKeeper(hostPort, TIMEOUT, watcher); - try { - watcher.waitForConnected(TIMEOUT); - } catch (InterruptedException e) { - // ignoring the interrupt - } catch (TimeoutException e) { - fail("can not connect to " + hostPort); - } - return zk; - } - - private ZooKeeper createClient(QuorumUtil qu, int id) throws IOException { - return createClient(qu, id, new EventsWatcher()); - } - - @Test - public void testNodeDataChanged() throws Exception { - QuorumUtil qu = new QuorumUtil(1); - qu.startAll(); - - EventsWatcher watcher = new EventsWatcher(); - ZooKeeper zk1 = createClient(qu, 1, watcher); - ZooKeeper zk2 = createClient(qu, 2); - - String path = "/test-changed"; - - zk1.create(path, new byte[1], ZooDefs.Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - zk1.getData(path, watcher, null); - qu.shutdown(1); - zk2.delete(path, -1); - zk2.create(path, new byte[2], ZooDefs.Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - qu.start(1); - watcher.waitForConnected(TIMEOUT); - watcher.assertEvent(TIMEOUT, EventType.NodeDataChanged); - - zk1.exists(path, watcher); - qu.shutdown(1); - zk2.delete(path, -1); - zk2.create(path, new byte[2], ZooDefs.Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - qu.start(1); - watcher.waitForConnected(TIMEOUT * 1000L); - watcher.assertEvent(TIMEOUT, EventType.NodeDataChanged); - - qu.shutdownAll(); - } - - @Test - public void testNodeCreated() throws Exception { - QuorumUtil qu = new QuorumUtil(1); - qu.startAll(); - - EventsWatcher watcher = new EventsWatcher(); - ZooKeeper zk1 = createClient(qu, 1, watcher); - ZooKeeper zk2 = createClient(qu, 2); - - String path = "/test1-created"; - - zk1.exists(path, watcher); - qu.shutdown(1); - zk2.create(path, new byte[2], ZooDefs.Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - qu.start(1); - watcher.waitForConnected(TIMEOUT * 1000L); - watcher.assertEvent(TIMEOUT, EventType.NodeCreated); - - qu.shutdownAll(); - } - - @Test - public void testNodeDeleted() throws Exception { - QuorumUtil qu = new QuorumUtil(1); - qu.startAll(); - - EventsWatcher watcher = new EventsWatcher(); - ZooKeeper zk1 = createClient(qu, 1, watcher); - ZooKeeper zk2 = createClient(qu, 2); - - String path = "/test-deleted"; - - zk1.create(path, new byte[1], ZooDefs.Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - zk1.getData(path, watcher, null); - qu.shutdown(1); - zk2.delete(path, -1); - qu.start(1); - watcher.waitForConnected(TIMEOUT * 1000L); - watcher.assertEvent(TIMEOUT, EventType.NodeDeleted); - - zk1.create(path, new byte[1], ZooDefs.Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - zk1.exists(path, watcher); - qu.shutdown(1); - zk2.delete(path, -1); - qu.start(1); - watcher.waitForConnected(TIMEOUT * 1000L); - watcher.assertEvent(TIMEOUT, EventType.NodeDeleted); - - zk1.create(path, new byte[1], ZooDefs.Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - zk1.getChildren(path, watcher); - qu.shutdown(1); - zk2.delete(path, -1); - qu.start(1); - watcher.waitForConnected(TIMEOUT * 1000L); - watcher.assertEvent(TIMEOUT, EventType.NodeDeleted); - - qu.shutdownAll(); - } - - @Test - public void testNodeChildrenChanged() throws Exception { - QuorumUtil qu = new QuorumUtil(1); - qu.startAll(); - - EventsWatcher watcher = new EventsWatcher(); - ZooKeeper zk1 = createClient(qu, 1, watcher); - ZooKeeper zk2 = createClient(qu, 2); - - String path = "/test-children-changed"; - - zk1.create(path, new byte[1], ZooDefs.Ids.OPEN_ACL_UNSAFE, - CreateMode.PERSISTENT); - zk1.getChildren(path, watcher); - qu.shutdown(1); - zk2.create(path + "/children-1", new byte[2], - ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - qu.start(1); - watcher.waitForConnected(TIMEOUT * 1000L); - watcher.assertEvent(TIMEOUT, EventType.NodeChildrenChanged); - - qu.shutdownAll(); - } -} - http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatchedEventTest.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatchedEventTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatchedEventTest.java deleted file mode 100644 index 0eaea67..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatchedEventTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.zookeeper.test; - -import java.util.EnumSet; - -import org.apache.zookeeper.WatchedEvent; -import org.apache.zookeeper.ZKTestCase; -import org.apache.zookeeper.Watcher.Event.EventType; -import org.apache.zookeeper.Watcher.Event.KeeperState; -import org.apache.zookeeper.proto.WatcherEvent; -import org.junit.Assert; -import org.junit.Test; - -public class WatchedEventTest extends ZKTestCase { - - @Test - public void testCreatingWatchedEvent() { - // EventWatch is a simple, immutable type, so all we need to do - // is make sure we can create all possible combinations of values. - - EnumSet<EventType> allTypes = EnumSet.allOf(EventType.class); - EnumSet<KeeperState> allStates = EnumSet.allOf(KeeperState.class); - WatchedEvent we; - - for(EventType et : allTypes) { - for(KeeperState ks : allStates) { - we = new WatchedEvent(et, ks, "blah"); - Assert.assertEquals(et, we.getType()); - Assert.assertEquals(ks, we.getState()); - Assert.assertEquals("blah", we.getPath()); - } - - } - } - - @Test - public void testCreatingWatchedEventFromWrapper() { - // Make sure we can handle any type of correct wrapper - - EnumSet<EventType> allTypes = EnumSet.allOf(EventType.class); - EnumSet<KeeperState> allStates = EnumSet.allOf(KeeperState.class); - WatchedEvent we; - WatcherEvent wep; - - for(EventType et : allTypes) { - for(KeeperState ks : allStates) { - wep = new WatcherEvent(et.getIntValue(), ks.getIntValue(), "blah"); - we = new WatchedEvent(wep); - Assert.assertEquals(et, we.getType()); - Assert.assertEquals(ks, we.getState()); - Assert.assertEquals("blah", we.getPath()); - } - } - } - - @Test - public void testCreatingWatchedEventFromInvalidWrapper() { - // Make sure we can't convert from an invalid wrapper - - try { - WatcherEvent wep = new WatcherEvent(-2342, -252352, "foo"); - WatchedEvent we = new WatchedEvent(wep); - Assert.fail("Was able to create WatchedEvent from bad wrapper"); - } catch (RuntimeException re) { - // we're good - } - } - - @Test - public void testConvertingToEventWrapper() { - WatchedEvent we = new WatchedEvent(EventType.NodeCreated, KeeperState.Expired, "blah"); - WatcherEvent wew = we.getWrapper(); - - Assert.assertEquals(EventType.NodeCreated.getIntValue(), wew.getType()); - Assert.assertEquals(KeeperState.Expired.getIntValue(), wew.getState()); - Assert.assertEquals("blah", wew.getPath()); - } -} http://git-wip-us.apache.org/repos/asf/zookeeper/blob/7291e47c/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatcherFuncTest.java ---------------------------------------------------------------------- diff --git a/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatcherFuncTest.java b/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatcherFuncTest.java deleted file mode 100644 index a6c62e4..0000000 --- a/zookeeper-common/src/test/java/org/apache/zookeeper/test/WatcherFuncTest.java +++ /dev/null @@ -1,478 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.zookeeper.test; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.TimeUnit; - -import org.apache.zookeeper.CreateMode; -import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.WatchedEvent; -import org.apache.zookeeper.Watcher; -import org.apache.zookeeper.ZooKeeper; -import org.apache.zookeeper.Watcher.Event.EventType; -import org.apache.zookeeper.Watcher.Event.KeeperState; -import org.apache.zookeeper.ZooDefs.Ids; -import org.junit.Assert; -import org.junit.Test; - -public class WatcherFuncTest extends ClientBase { - private static class SimpleWatcher implements Watcher { - private LinkedBlockingQueue<WatchedEvent> events = - new LinkedBlockingQueue<WatchedEvent>(); - private CountDownLatch latch; - - public SimpleWatcher(CountDownLatch latch) { - this.latch = latch; - } - - public void process(WatchedEvent event) { - if (event.getState() == KeeperState.SyncConnected) { - if (latch != null) { - latch.countDown(); - } - } - - if (event.getType() == EventType.None) { - return; - } - try { - events.put(event); - } catch (InterruptedException e) { - Assert.assertTrue("interruption unexpected", false); - } - } - public void verify(List<EventType> expected) throws InterruptedException{ - WatchedEvent event; - int count = 0; - while (count < expected.size() - && (event = events.poll(30, TimeUnit.SECONDS)) != null) - { - Assert.assertEquals(expected.get(count), event.getType()); - count++; - } - Assert.assertEquals(expected.size(), count); - events.clear(); - } - } - private SimpleWatcher client_dwatch; - private volatile CountDownLatch client_latch; - private ZooKeeper client; - private SimpleWatcher lsnr_dwatch; - private volatile CountDownLatch lsnr_latch; - private ZooKeeper lsnr; - - private List<EventType> expected; - - @Override - public void setUp() throws Exception { - super.setUp(); - - client_latch = new CountDownLatch(1); - client_dwatch = new SimpleWatcher(client_latch); - client = createClient(client_dwatch, client_latch); - - lsnr_latch = new CountDownLatch(1); - lsnr_dwatch = new SimpleWatcher(lsnr_latch); - lsnr = createClient(lsnr_dwatch, lsnr_latch); - - expected = new ArrayList<EventType>(); - } - - @Override - public void tearDown() throws Exception { - client.close(); - lsnr.close(); - super.tearDown(); - } - - protected ZooKeeper createClient(Watcher watcher, CountDownLatch latch) - throws IOException, InterruptedException - { - ZooKeeper zk = new ZooKeeper(hostPort, CONNECTION_TIMEOUT, watcher); - if(!latch.await(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS)){ - Assert.fail("Unable to connect to server"); - } - return zk; - } - - private void verify() throws InterruptedException { - lsnr_dwatch.verify(expected); - expected.clear(); - } - - @Test - public void testExistsSync() - throws IOException, InterruptedException, KeeperException - { - Assert.assertNull(lsnr.exists("/foo", true)); - Assert.assertNull(lsnr.exists("/foo/bar", true)); - - client.create("/foo", "parent".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - expected.add(EventType.NodeCreated); - client.create("/foo/bar", "child".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - expected.add(EventType.NodeCreated); - - verify(); - - Assert.assertNotNull(lsnr.exists("/foo", true)); - Assert.assertNotNull(lsnr.exists("/foo/bar", true)); - - try { - Assert.assertNull(lsnr.exists("/car", true)); - client.setData("/car", "missing".getBytes(), -1); - Assert.fail(); - } catch (KeeperException e) { - Assert.assertEquals(KeeperException.Code.NONODE, e.code()); - Assert.assertEquals("/car", e.getPath()); - } - - try { - Assert.assertNull(lsnr.exists("/foo/car", true)); - client.setData("/foo/car", "missing".getBytes(), -1); - Assert.fail(); - } catch (KeeperException e) { - Assert.assertEquals(KeeperException.Code.NONODE, e.code()); - Assert.assertEquals("/foo/car", e.getPath()); - } - - client.setData("/foo", "parent".getBytes(), -1); - expected.add(EventType.NodeDataChanged); - client.setData("/foo/bar", "child".getBytes(), -1); - expected.add(EventType.NodeDataChanged); - - verify(); - - Assert.assertNotNull(lsnr.exists("/foo", true)); - Assert.assertNotNull(lsnr.exists("/foo/bar", true)); - - client.delete("/foo/bar", -1); - expected.add(EventType.NodeDeleted); - client.delete("/foo", -1); - expected.add(EventType.NodeDeleted); - - verify(); - } - - @Test - public void testGetDataSync() - throws IOException, InterruptedException, KeeperException - { - try { - lsnr.getData("/foo", true, null); - Assert.fail(); - } catch (KeeperException e) { - Assert.assertEquals(KeeperException.Code.NONODE, e.code()); - Assert.assertEquals("/foo", e.getPath()); - } - try { - lsnr.getData("/foo/bar", true, null); - Assert.fail(); - } catch (KeeperException e) { - Assert.assertEquals(KeeperException.Code.NONODE, e.code()); - Assert.assertEquals("/foo/bar", e.getPath()); - } - - client.create("/foo", "parent".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - Assert.assertNotNull(lsnr.getData("/foo", true, null)); - client.create("/foo/bar", "child".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - Assert.assertNotNull(lsnr.getData("/foo/bar", true, null)); - - client.setData("/foo", "parent".getBytes(), -1); - expected.add(EventType.NodeDataChanged); - client.setData("/foo/bar", "child".getBytes(), -1); - expected.add(EventType.NodeDataChanged); - - verify(); - - Assert.assertNotNull(lsnr.getData("/foo", true, null)); - Assert.assertNotNull(lsnr.getData("/foo/bar", true, null)); - - client.delete("/foo/bar", -1); - expected.add(EventType.NodeDeleted); - client.delete("/foo", -1); - expected.add(EventType.NodeDeleted); - - verify(); - } - - @Test - public void testGetChildrenSync() - throws IOException, InterruptedException, KeeperException - { - try { - lsnr.getChildren("/foo", true); - Assert.fail(); - } catch (KeeperException e) { - Assert.assertEquals(KeeperException.Code.NONODE, e.code()); - Assert.assertEquals("/foo", e.getPath()); - } - try { - lsnr.getChildren("/foo/bar", true); - Assert.fail(); - } catch (KeeperException e) { - Assert.assertEquals(KeeperException.Code.NONODE, e.code()); - Assert.assertEquals("/foo/bar", e.getPath()); - } - - client.create("/foo", "parent".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - Assert.assertNotNull(lsnr.getChildren("/foo", true)); - - client.create("/foo/bar", "child".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - expected.add(EventType.NodeChildrenChanged); // /foo - Assert.assertNotNull(lsnr.getChildren("/foo/bar", true)); - - - client.setData("/foo", "parent".getBytes(), -1); - client.setData("/foo/bar", "child".getBytes(), -1); - - - Assert.assertNotNull(lsnr.exists("/foo", true)); - - Assert.assertNotNull(lsnr.getChildren("/foo", true)); - Assert.assertNotNull(lsnr.getChildren("/foo/bar", true)); - - client.delete("/foo/bar", -1); - expected.add(EventType.NodeDeleted); // /foo/bar childwatch - expected.add(EventType.NodeChildrenChanged); // /foo - client.delete("/foo", -1); - expected.add(EventType.NodeDeleted); - - verify(); - } - - @Test - public void testExistsSyncWObj() - throws IOException, InterruptedException, KeeperException - { - SimpleWatcher w1 = new SimpleWatcher(null); - SimpleWatcher w2 = new SimpleWatcher(null); - SimpleWatcher w3 = new SimpleWatcher(null); - SimpleWatcher w4 = new SimpleWatcher(null); - - List<EventType> e2 = new ArrayList<EventType>(); - - Assert.assertNull(lsnr.exists("/foo", true)); - Assert.assertNull(lsnr.exists("/foo", w1)); - - Assert.assertNull(lsnr.exists("/foo/bar", w2)); - Assert.assertNull(lsnr.exists("/foo/bar", w3)); - Assert.assertNull(lsnr.exists("/foo/bar", w3)); - Assert.assertNull(lsnr.exists("/foo/bar", w4)); - - client.create("/foo", "parent".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - expected.add(EventType.NodeCreated); - client.create("/foo/bar", "child".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - e2.add(EventType.NodeCreated); - - lsnr_dwatch.verify(expected); - w1.verify(expected); - w2.verify(e2); - w3.verify(e2); - w4.verify(e2); - expected.clear(); - e2.clear(); - - // default not registered - Assert.assertNotNull(lsnr.exists("/foo", w1)); - - Assert.assertNotNull(lsnr.exists("/foo/bar", w2)); - Assert.assertNotNull(lsnr.exists("/foo/bar", w3)); - Assert.assertNotNull(lsnr.exists("/foo/bar", w4)); - Assert.assertNotNull(lsnr.exists("/foo/bar", w4)); - - client.setData("/foo", "parent".getBytes(), -1); - expected.add(EventType.NodeDataChanged); - client.setData("/foo/bar", "child".getBytes(), -1); - e2.add(EventType.NodeDataChanged); - - lsnr_dwatch.verify(new ArrayList<EventType>()); // not reg so should = 0 - w1.verify(expected); - w2.verify(e2); - w3.verify(e2); - w4.verify(e2); - expected.clear(); - e2.clear(); - - Assert.assertNotNull(lsnr.exists("/foo", true)); - Assert.assertNotNull(lsnr.exists("/foo", w1)); - Assert.assertNotNull(lsnr.exists("/foo", w1)); - - Assert.assertNotNull(lsnr.exists("/foo/bar", w2)); - Assert.assertNotNull(lsnr.exists("/foo/bar", w2)); - Assert.assertNotNull(lsnr.exists("/foo/bar", w3)); - Assert.assertNotNull(lsnr.exists("/foo/bar", w4)); - - client.delete("/foo/bar", -1); - expected.add(EventType.NodeDeleted); - client.delete("/foo", -1); - e2.add(EventType.NodeDeleted); - - lsnr_dwatch.verify(expected); - w1.verify(expected); - w2.verify(e2); - w3.verify(e2); - w4.verify(e2); - expected.clear(); - e2.clear(); - - } - - @Test - public void testGetDataSyncWObj() - throws IOException, InterruptedException, KeeperException - { - SimpleWatcher w1 = new SimpleWatcher(null); - SimpleWatcher w2 = new SimpleWatcher(null); - SimpleWatcher w3 = new SimpleWatcher(null); - SimpleWatcher w4 = new SimpleWatcher(null); - - List<EventType> e2 = new ArrayList<EventType>(); - - try { - lsnr.getData("/foo", w1, null); - Assert.fail(); - } catch (KeeperException e) { - Assert.assertEquals(KeeperException.Code.NONODE, e.code()); - Assert.assertEquals("/foo", e.getPath()); - } - try { - lsnr.getData("/foo/bar", w2, null); - Assert.fail(); - } catch (KeeperException e) { - Assert.assertEquals(KeeperException.Code.NONODE, e.code()); - Assert.assertEquals("/foo/bar", e.getPath()); - } - - client.create("/foo", "parent".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - Assert.assertNotNull(lsnr.getData("/foo", true, null)); - Assert.assertNotNull(lsnr.getData("/foo", w1, null)); - client.create("/foo/bar", "child".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - Assert.assertNotNull(lsnr.getData("/foo/bar", w2, null)); - Assert.assertNotNull(lsnr.getData("/foo/bar", w3, null)); - Assert.assertNotNull(lsnr.getData("/foo/bar", w4, null)); - Assert.assertNotNull(lsnr.getData("/foo/bar", w4, null)); - - client.setData("/foo", "parent".getBytes(), -1); - expected.add(EventType.NodeDataChanged); - client.setData("/foo/bar", "child".getBytes(), -1); - e2.add(EventType.NodeDataChanged); - - lsnr_dwatch.verify(expected); - w1.verify(expected); - w2.verify(e2); - w3.verify(e2); - w4.verify(e2); - expected.clear(); - e2.clear(); - - Assert.assertNotNull(lsnr.getData("/foo", true, null)); - Assert.assertNotNull(lsnr.getData("/foo", w1, null)); - Assert.assertNotNull(lsnr.getData("/foo/bar", w2, null)); - Assert.assertNotNull(lsnr.getData("/foo/bar", w3, null)); - Assert.assertNotNull(lsnr.getData("/foo/bar", w3, null)); - Assert.assertNotNull(lsnr.getData("/foo/bar", w4, null)); - - client.delete("/foo/bar", -1); - expected.add(EventType.NodeDeleted); - client.delete("/foo", -1); - e2.add(EventType.NodeDeleted); - - lsnr_dwatch.verify(expected); - w1.verify(expected); - w2.verify(e2); - w3.verify(e2); - w4.verify(e2); - expected.clear(); - e2.clear(); - } - - @Test - public void testGetChildrenSyncWObj() - throws IOException, InterruptedException, KeeperException - { - SimpleWatcher w1 = new SimpleWatcher(null); - SimpleWatcher w2 = new SimpleWatcher(null); - SimpleWatcher w3 = new SimpleWatcher(null); - SimpleWatcher w4 = new SimpleWatcher(null); - - List<EventType> e2 = new ArrayList<EventType>(); - - try { - lsnr.getChildren("/foo", true); - Assert.fail(); - } catch (KeeperException e) { - Assert.assertEquals(KeeperException.Code.NONODE, e.code()); - Assert.assertEquals("/foo", e.getPath()); - } - try { - lsnr.getChildren("/foo/bar", true); - Assert.fail(); - } catch (KeeperException e) { - Assert.assertEquals(KeeperException.Code.NONODE, e.code()); - Assert.assertEquals("/foo/bar", e.getPath()); - } - - client.create("/foo", "parent".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - Assert.assertNotNull(lsnr.getChildren("/foo", true)); - Assert.assertNotNull(lsnr.getChildren("/foo", w1)); - - client.create("/foo/bar", "child".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); - expected.add(EventType.NodeChildrenChanged); // /foo - Assert.assertNotNull(lsnr.getChildren("/foo/bar", w2)); - Assert.assertNotNull(lsnr.getChildren("/foo/bar", w2)); - Assert.assertNotNull(lsnr.getChildren("/foo/bar", w3)); - Assert.assertNotNull(lsnr.getChildren("/foo/bar", w4)); - - - client.setData("/foo", "parent".getBytes(), -1); - client.setData("/foo/bar", "child".getBytes(), -1); - - - Assert.assertNotNull(lsnr.exists("/foo", true)); - Assert.assertNotNull(lsnr.exists("/foo", w1)); - Assert.assertNotNull(lsnr.exists("/foo", true)); - Assert.assertNotNull(lsnr.exists("/foo", w1)); - - Assert.assertNotNull(lsnr.getChildren("/foo", true)); - Assert.assertNotNull(lsnr.getChildren("/foo", w1)); - Assert.assertNotNull(lsnr.getChildren("/foo/bar", w2)); - Assert.assertNotNull(lsnr.getChildren("/foo/bar", w3)); - Assert.assertNotNull(lsnr.getChildren("/foo/bar", w4)); - Assert.assertNotNull(lsnr.getChildren("/foo/bar", w4)); - - client.delete("/foo/bar", -1); - e2.add(EventType.NodeDeleted); // /foo/bar childwatch - expected.add(EventType.NodeChildrenChanged); // /foo - client.delete("/foo", -1); - expected.add(EventType.NodeDeleted); - - lsnr_dwatch.verify(expected); - w1.verify(expected); - w2.verify(e2); - w3.verify(e2); - w4.verify(e2); - expected.clear(); - e2.clear(); - } -}