SessionManager implements Closeable { public void delete(String sessionId, boolean expired) { RepositoryBackedSession session = fetchSession(sessionId, false); if (session != null) { session.doInvalidate(expired); } else if (!expired) { logger.debug("Session not found in repository for sessionId: '{}'", sessionId); } } SessionManager(ExecutorFacade executors, SessionFactory factory, SessionRepository repository,
      SessionTracking tracking, SessionNotifier notifier, SessionConfiguration configuration, ClassLoader classLoader); RepositoryBackedSession fetchSession(String sessionId, boolean updateTimestamp); RepositoryBackedSession getSession(RequestWithSession request, boolean create,
      SessionTracking.IdAndSource forceId); void propagateSession(RequestWithSession request, ResponseWithSessionId response); void delete(String sessionId, boolean expired); void requestFinished(); Future<?> submit(String timer, Runnable task); ScheduledFuture<?> schedule(String timer, Runnable task, long period); void deleteAsync(final String sessionId, final boolean expired); SessionRepository getRepository(); SessionNotifier getNotifier(); void invokeCommit(RepositoryBackedSession session); SessionConfiguration getConfiguration(); ClassLoader getSessionClassLoader(); SerializerDeserializer getSerializerDeserializer(); void invalidationConflict(RepositoryBackedSession session, boolean onExpiry); MetricRegistry getMetrics(); String encodeUrl(RequestWithSession request, String url); void reset(); @Override void close(); void switchSessionId(RepositoryBackedSession session); void switchSessionId(RepositoryBackedSession session, String forceId); @Override String toString(); void remove(SessionData sessionData); boolean isConnected();  }
@Test public void testDelete() { SessionData sessionData = new SessionData("1", now(), 10); RepositoryBackedSession session = mock(RepositoryBackedSession.class); when(repository.getSessionData("1")).thenReturn(sessionData); when(factory.build(sessionData)).thenReturn(session); sessionManager.delete("1", true); verify(repository).getSessionData("1"); verify(factory).build(sessionData); verify(session).doInvalidate(true); }
@Test public void testDeleteExpired() { when(repository.getSessionData("1")).thenReturn(null); sessionManager.delete("1", true); verify(repository).getSessionData("1"); verify(factory, never()).build(any(SessionData.class)); assertEquals(0, metrics.meter(MetricRegistry.name(SessionManager.SESSIONS_METRIC_PREFIX, "deleted")).getCount()); }