@Override public synchronized void handle(Long tid) { long now = System.currentTimeMillis(); Set<String> toRemove = new HashSet<>(); for (Session session: localMap.values()) { if (now - session.lastAccessed() > session.timeout()) { toRemove.add(session.id()); } } for (String id: toRemove) { localMap.remove(id); } if (!closed) { setTimer(); } }
@Test public void testLastAccessed1() throws Exception { router.route().handler(CookieHandler.create()); router.route().handler(SessionHandler.create(store)); AtomicReference<Session> rid = new AtomicReference<>(); long start = System.currentTimeMillis(); router.route().handler(rc -> { rid.set(rc.session()); rc.response().end(); }); testRequest(HttpMethod.GET, "/", 200, "OK"); assertTrue(rid.get().lastAccessed() - start < 500); start = System.currentTimeMillis(); Thread.sleep(1000); testRequest(HttpMethod.GET, "/", 200, "OK"); assertTrue(rid.get().lastAccessed() - start >= 1000); }
/** * @return the time the session was last accessed */ public long lastAccessed() { long ret = delegate.lastAccessed(); return ret; }
/** * @return the time the session was last accessed */ public long lastAccessed() { long ret = delegate.lastAccessed(); return ret; }
@Test public void testLastAccessed2() throws Exception { router.route().handler(CookieHandler.create()); router.route().handler(SessionHandler.create(store)); AtomicReference<Session> rid = new AtomicReference<>(); router.route().handler(rc -> { rid.set(rc.session()); rc.session().put("foo", "bar"); vertx.setTimer(1000, tid -> rc.response().end()); }); testRequest(HttpMethod.GET, "/", 200, "OK"); // accessed() is called after request too assertTrue(rid.get().lastAccessed() - System.currentTimeMillis() < 500); }
Session sess = rc.session(); assertNotNull(sess); assertTrue(System.currentTimeMillis() - sess.lastAccessed() < 500); assertNotNull(sess.id()); switch (requestCount.get()) {
@Test public void testSessionFields() throws Exception { router.route().handler(CookieHandler.create()); router.route().handler(SessionHandler.create(store)); AtomicReference<String> rid = new AtomicReference<>(); router.route().handler(rc -> { Session sess = rc.session(); assertNotNull(sess); assertTrue(System.currentTimeMillis() - sess.lastAccessed() < 500); assertNotNull(sess.id()); rid.set(sess.value()); assertFalse(sess.isDestroyed()); assertEquals(SessionHandler.DEFAULT_SESSION_TIMEOUT, sess.timeout()); rc.response().end(); }); testRequest(HttpMethod.GET, "/", null, resp -> { String setCookie = resp.headers().get("set-cookie"); assertTrue(setCookie.startsWith(SessionHandler.DEFAULT_SESSION_COOKIE_NAME + "=")); int pos = setCookie.indexOf("; Path=" + SessionHandler.DEFAULT_SESSION_COOKIE_PATH); String sessID = setCookie.substring(18, pos); assertEquals(rid.get(), sessID); }, 200, "OK", null); }
Session sess = rc.session(); assertNotNull(sess); assertTrue(System.currentTimeMillis() - sess.lastAccessed() < 500); assertNotNull(sess.id()); switch (requestCount.get()) {
@Override public synchronized void handle(Long tid) { long now = System.currentTimeMillis(); Set<String> toRemove = new HashSet<>(); for (Session session: localMap.values()) { if (now - session.lastAccessed() > session.timeout()) { toRemove.add(session.id()); } } for (String id: toRemove) { localMap.remove(id); } if (!closed) { setTimer(); } }
@Test public void testLastAccessed1() throws Exception { router.route().handler(CookieHandler.create()); router.route().handler(SessionHandler.create(store)); AtomicReference<Session> rid = new AtomicReference<>(); long start = System.currentTimeMillis(); router.route().handler(rc -> { rid.set(rc.session()); rc.response().end(); }); testRequest(HttpMethod.GET, "/", 200, "OK"); assertTrue(rid.get().lastAccessed() - start < 500); start = System.currentTimeMillis(); Thread.sleep(1000); testRequest(HttpMethod.GET, "/", 200, "OK"); assertTrue(rid.get().lastAccessed() - start >= 1000); }
@Test public void testLastAccessed2() throws Exception { router.route().handler(CookieHandler.create()); router.route().handler(SessionHandler.create(store)); AtomicReference<Session> rid = new AtomicReference<>(); router.route().handler(rc -> { rid.set(rc.session()); rc.session().put("foo", "bar"); vertx.setTimer(1000, tid -> rc.response().end()); }); testRequest(HttpMethod.GET, "/", 200, "OK"); // accessed() is called after request too assertTrue(rid.get().lastAccessed() - System.currentTimeMillis() < 500); }
Session sess = rc.session(); assertNotNull(sess); assertTrue(System.currentTimeMillis() - sess.lastAccessed() < 500); assertNotNull(sess.id()); switch (requestCount.get()) {
@Test public void testSessionFields() throws Exception { router.route().handler(CookieHandler.create()); router.route().handler(SessionHandler.create(store)); AtomicReference<String> rid = new AtomicReference<>(); router.route().handler(rc -> { Session sess = rc.session(); assertNotNull(sess); assertTrue(System.currentTimeMillis() - sess.lastAccessed() < 500); assertNotNull(sess.id()); rid.set(sess.value()); assertFalse(sess.isDestroyed()); assertEquals(SessionHandler.DEFAULT_SESSION_TIMEOUT, sess.timeout()); rc.response().end(); }); testRequest(HttpMethod.GET, "/", null, resp -> { String setCookie = resp.headers().get("set-cookie"); assertTrue(setCookie.startsWith(SessionHandler.DEFAULT_SESSION_COOKIE_NAME + "=")); int pos = setCookie.indexOf("; Path=" + SessionHandler.DEFAULT_SESSION_COOKIE_PATH); String sessID = setCookie.substring(18, pos); assertEquals(rid.get(), sessID); }, 200, "OK", null); }
Session sess = rc.session(); assertNotNull(sess); assertTrue(System.currentTimeMillis() - sess.lastAccessed() < 500); assertNotNull(sess.id()); switch (requestCount.get()) {