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/02/06 20:30:31 UTC

[3/3] git commit: Added getAllInstances() to ServiceProvider

Added getAllInstances() to ServiceProvider


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

Branch: refs/heads/CURATOR-86
Commit: 1ecaef6570650b58fac97e3d03bf2cf8a541502b
Parents: eb67ad6
Author: randgalt <ra...@apache.org>
Authored: Thu Feb 6 14:30:11 2014 -0500
Committer: randgalt <ra...@apache.org>
Committed: Thu Feb 6 14:30:11 2014 -0500

----------------------------------------------------------------------
 .../apache/curator/x/discovery/ServiceProvider.java   | 10 ++++++++++
 .../x/discovery/details/ServiceProviderImpl.java      | 14 ++++++++++++++
 .../apache/curator/x/discovery/TestServiceCache.java  | 12 +++++++++++-
 3 files changed, 35 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/1ecaef65/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceProvider.java
----------------------------------------------------------------------
diff --git a/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceProvider.java b/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceProvider.java
index e8fcdcf..d606649 100644
--- a/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceProvider.java
+++ b/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/ServiceProvider.java
@@ -21,6 +21,7 @@ package org.apache.curator.x.discovery;
 
 import org.apache.curator.x.discovery.details.InstanceProvider;
 import java.io.Closeable;
+import java.util.Collection;
 
 /**
  * The main API for Discovery. This class is essentially a facade over a {@link ProviderStrategy}
@@ -45,6 +46,15 @@ public interface ServiceProvider<T> extends Closeable
     public ServiceInstance<T> getInstance() throws Exception;
 
     /**
+     * Return the current available set of instances <b>IMPORTANT: </b> users
+     * should not hold on to the instance returned. They should always get a fresh list.
+     *
+     * @return all known instances
+     * @throws Exception any errors
+     */
+    public Collection<ServiceInstance<T>> getAllInstances() throws Exception;
+
+    /**
      * Take note of an error connecting to the given instance. The instance will potentially
      * be marked as "down" depending on the {@link DownInstancePolicy}.
      *

http://git-wip-us.apache.org/repos/asf/curator/blob/1ecaef65/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/details/ServiceProviderImpl.java
----------------------------------------------------------------------
diff --git a/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/details/ServiceProviderImpl.java b/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/details/ServiceProviderImpl.java
index 40dcf59..5c63836 100644
--- a/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/details/ServiceProviderImpl.java
+++ b/curator-x-discovery/src/main/java/org/apache/curator/x/discovery/details/ServiceProviderImpl.java
@@ -27,6 +27,7 @@ import org.apache.curator.x.discovery.ServiceInstance;
 import org.apache.curator.x.discovery.ServiceProvider;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.ThreadFactory;
 
@@ -78,6 +79,19 @@ public class ServiceProviderImpl<T> implements ServiceProvider<T>
     }
 
     /**
+     * Return the current available set of instances <b>IMPORTANT: </b> users
+     * should not hold on to the instance returned. They should always get a fresh list.
+     *
+     * @return all known instances
+     * @throws Exception any errors
+     */
+    @Override
+    public Collection<ServiceInstance<T>> getAllInstances() throws Exception
+    {
+        return instanceProvider.getInstances();
+    }
+
+    /**
      * Return an instance for a single use. <b>IMPORTANT: </b> users
      * should not hold on to the instance returned. They should always get a fresh instance.
      *

http://git-wip-us.apache.org/repos/asf/curator/blob/1ecaef65/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/TestServiceCache.java
----------------------------------------------------------------------
diff --git a/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/TestServiceCache.java b/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/TestServiceCache.java
index 3f4346b..d1dc3bd 100644
--- a/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/TestServiceCache.java
+++ b/curator-x-discovery/src/test/java/org/apache/curator/x/discovery/TestServiceCache.java
@@ -19,6 +19,7 @@
 package org.apache.curator.x.discovery;
 
 import com.google.common.collect.Lists;
+import org.apache.curator.test.Timing;
 import org.apache.curator.utils.CloseableUtils;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
@@ -29,6 +30,7 @@ import org.apache.curator.x.discovery.details.ServiceCacheListener;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 import java.io.Closeable;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -101,6 +103,8 @@ public class TestServiceCache
     @Test
     public void     testViaProvider() throws Exception
     {
+        Timing timing = new Timing();
+
         List<Closeable> closeables = Lists.newArrayList();
         TestingServer server = new TestingServer();
         closeables.add(server);
@@ -127,9 +131,15 @@ public class TestServiceCache
             {
                 Assert.assertTrue(count++ < 5);
                 foundInstance = serviceProvider.getInstance();
-                Thread.sleep(1000);
+                timing.sleepABit();
             }
             Assert.assertEquals(foundInstance, instance);
+
+            ServiceInstance<String>     instance2 = ServiceInstance.<String>builder().address("foo").payload("thing").name("test").port(10064).build();
+            discovery.registerService(instance2);
+            timing.sleepABit();
+            Collection<ServiceInstance<String>> allInstances = serviceProvider.getAllInstances();
+            Assert.assertEquals(allInstances.size(), 2);
         }
         finally
         {