You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2014/08/01 14:46:36 UTC

[2/3] git commit: Namespaces working.

Namespaces working.


Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/cf700d37
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/cf700d37
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/cf700d37

Branch: refs/heads/CURATOR-33
Commit: cf700d37322786a153065169bc921fe41466e793
Parents: 470d7e7
Author: Scott Blum <sc...@squareup.com>
Authored: Tue Jul 29 19:28:23 2014 -0400
Committer: Scott Blum <sc...@squareup.com>
Committed: Thu Jul 31 18:23:49 2014 -0400

----------------------------------------------------------------------
 .../framework/recipes/cache/TestTreeCache.java  | 116 ++++++++++++++-----
 1 file changed, 90 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/cf700d37/curator-recipes/src/test/java/org/apache/curator/framework/recipes/cache/TestTreeCache.java
----------------------------------------------------------------------
diff --git a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/cache/TestTreeCache.java b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/cache/TestTreeCache.java
index 2922d40..bc999bf 100644
--- a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/cache/TestTreeCache.java
+++ b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/cache/TestTreeCache.java
@@ -52,16 +52,18 @@ public class TestTreeCache extends BaseClassForTests
     /**
      * A TreeCache that records exceptions.
      */
-    private TreeCache newTreeCache(String path, boolean cacheData)
-    {
-        return new TreeCache(client, path, cacheData)
+    class TreeCache extends org.apache.curator.framework.recipes.cache.TreeCache {
+
+        TreeCache(CuratorFramework client, String path, boolean cacheData)
         {
-            @Override
-            protected void handleException(Throwable e)
-            {
-                exceptions.add(e);
-            }
-        };
+            super(client, path, cacheData);
+        }
+
+        @Override
+        protected void handleException(Throwable e)
+        {
+            exceptions.add(e);
+        }
     }
 
     @Override
@@ -77,6 +79,11 @@ public class TestTreeCache extends BaseClassForTests
             @Override
             public void childEvent(CuratorFramework client, TreeCacheEvent event) throws Exception
             {
+                if (event.getData() != null && event.getData().getPath().startsWith("/zookeeper"))
+                {
+                    // Suppress any events related to /zookeeper paths
+                    return;
+                }
                 events.add(event);
             }
         };
@@ -84,15 +91,14 @@ public class TestTreeCache extends BaseClassForTests
         client = CuratorFrameworkFactory.newClient(server.getConnectString(), timing.session(), timing.connection(), new RetryOneTime(1));
         client.start();
         client.getUnhandledErrorListenable().addListener(new UnhandledErrorListener()
-                                                         {
-                                                             @Override
-                                                             public void unhandledError(String message, Throwable e)
-                                                             {
-                                                                 exceptions.add(e);
-                                                             }
-                                                         }
-                                                        );
-        cache = newTreeCache("/test", true);
+        {
+            @Override
+            public void unhandledError(String message, Throwable e)
+            {
+                exceptions.add(e);
+            }
+        });
+        cache = new TreeCache(client, "/test", true);
         cache.getListenable().addListener(eventListener);
     }
 
@@ -104,9 +110,18 @@ public class TestTreeCache extends BaseClassForTests
         {
             try
             {
-                for ( Throwable exception : exceptions )
+                if ( exceptions.size() == 1 )
+                {
+                    Assert.fail("Exception was thrown", exceptions.get(0));
+                }
+                else if ( exceptions.size() > 1 )
                 {
-                    Assert.fail("Exception was thrown", exception);
+                    AssertionError error = new AssertionError("Multiple exceptions were thrown");
+                    for ( Throwable exception : exceptions )
+                    {
+                        error.addSuppressed(exception);
+                    }
+                    throw error;
                 }
             }
             finally
@@ -169,6 +184,55 @@ public class TestTreeCache extends BaseClassForTests
     }
 
     @Test
+    public void testFromRoot() throws Exception
+    {
+        client.create().forPath("/test");
+        client.create().forPath("/test/one", "hey there".getBytes());
+        cache = new TreeCache(client, "/", true);
+        cache.getListenable().addListener(eventListener);
+        cache.start();
+        assertEvent(TreeCacheEvent.Type.NODE_ADDED, "/");
+        assertEvent(TreeCacheEvent.Type.NODE_ADDED, "/test");
+        assertEvent(TreeCacheEvent.Type.NODE_ADDED, "/test/one");
+        assertEvent(TreeCacheEvent.Type.INITIALIZED);
+        assertNoMoreEvents();
+    }
+
+    @Test
+    public void testWithNamespace() throws Exception
+    {
+        client.create().forPath("/outer");
+        client.create().forPath("/outer/foo");
+        client.create().forPath("/outer/test");
+        client.create().forPath("/outer/test/one", "hey there".getBytes());
+        cache = new TreeCache(client.usingNamespace("outer"), "/test", true);
+        cache.getListenable().addListener(eventListener);
+        cache.start();
+        assertEvent(TreeCacheEvent.Type.NODE_ADDED, "/test");
+        assertEvent(TreeCacheEvent.Type.NODE_ADDED, "/test/one");
+        assertEvent(TreeCacheEvent.Type.INITIALIZED);
+        assertNoMoreEvents();
+    }
+
+    @Test
+    public void testWithNamespaceAtRoot() throws Exception
+    {
+        client.create().forPath("/outer");
+        client.create().forPath("/outer/foo");
+        client.create().forPath("/outer/test");
+        client.create().forPath("/outer/test/one", "hey there".getBytes());
+        cache = new TreeCache(client.usingNamespace("outer"), "/", true);
+        cache.getListenable().addListener(eventListener);
+        cache.start();
+        assertEvent(TreeCacheEvent.Type.NODE_ADDED, "/");
+        assertEvent(TreeCacheEvent.Type.NODE_ADDED, "/foo");
+        assertEvent(TreeCacheEvent.Type.NODE_ADDED, "/test");
+        assertEvent(TreeCacheEvent.Type.NODE_ADDED, "/test/one");
+        assertEvent(TreeCacheEvent.Type.INITIALIZED);
+        assertNoMoreEvents();
+    }
+
+    @Test
     public void testSyncInitialPopulation() throws Exception
     {
         cache.start();
@@ -200,7 +264,7 @@ public class TestTreeCache extends BaseClassForTests
     @Test
     public void testUpdateWhenNotCachingData() throws Exception
     {
-        cache = newTreeCache("/test", false);
+        cache = new TreeCache(client, "/test", false);
         cache.getListenable().addListener(eventListener);
 
         client.create().forPath("/test");
@@ -313,7 +377,7 @@ public class TestTreeCache extends BaseClassForTests
     @Test
     public void testBasicsOnTwoCaches() throws Exception
     {
-        TreeCache cache2 = newTreeCache("/test", true);
+        TreeCache cache2 = new TreeCache(client, "/test", true);
 
         // Just ensures the same event count; enables test flow control on cache2.
         final Semaphore semaphore = new Semaphore(0);
@@ -402,18 +466,18 @@ public class TestTreeCache extends BaseClassForTests
     private TreeCacheEvent assertEvent(TreeCacheEvent.Type expectedType, String expectedPath, byte[] expectedData) throws InterruptedException
     {
         TreeCacheEvent event = events.poll(timing.forWaiting().seconds(), TimeUnit.SECONDS);
-        Assert.assertEquals(event.getType(), expectedType);
+        Assert.assertEquals(event.getType(), expectedType, event.toString());
         if ( expectedPath == null )
         {
-            Assert.assertNull(event.getData());
+            Assert.assertNull(event.getData(), event.toString());
         }
         else
         {
-            Assert.assertEquals(event.getData().getPath(), expectedPath);
+            Assert.assertEquals(event.getData().getPath(), expectedPath, event.toString());
         }
         if ( expectedData != null )
         {
-            Assert.assertEquals(event.getData().getData(), expectedData);
+            Assert.assertEquals(event.getData().getData(), expectedData, event.toString());
         }
         return event;
     }