MultiThreadedClientServiceCache implements ServiceCache<S> { @Override public int getNumIdleInstances(ServiceEndPoint endPoint) { checkNotNull(endPoint); return _instancesPerEndpoint.containsKey(endPoint) ? 1 : 0; } MultiThreadedClientServiceCache(MultiThreadedServiceFactory<S> serviceFactory, MetricRegistry metricRegistry); @VisibleForTesting  MultiThreadedClientServiceCache(MultiThreadedServiceFactory<S> serviceFactory, ScheduledExecutorService executor,
                                    int evictionDelayInSeconds, int cleanUpDelayInSeconds, MetricRegistry metricRegistry); @Override void checkIn(ServiceHandle<S> handle); @Override ServiceHandle<S> checkOut(ServiceEndPoint endPoint); @Override void register(ServiceEndPoint endPoint); @Override synchronized void evict(ServiceEndPoint endPoint); @Override synchronized void close(); @Override int getNumIdleInstances(ServiceEndPoint endPoint); @Override int getNumActiveInstances(ServiceEndPoint endPoint);  }
@Test (expected = NullPointerException.class) public void testNumIdleNullEndPoint() { MultiThreadedClientServiceCache<Service> cache = newCache(); cache.getNumIdleInstances(null); }