MultiThreadedClientServiceCache implements ServiceCache<S> { @Override public synchronized void evict(ServiceEndPoint endPoint) { checkNotNull(endPoint); Timer.Context context = _evictionTimer.time(); HeavyServiceHandle<?> serviceHandle = _instancesPerEndpoint.get(endPoint); if (serviceHandle != null) { serviceHandle.flagAsEvicted(); } context.stop(); } 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 testEvictNullEndPoint() { newCache().evict(null); }