lastSessionCheckTime updated after session check
Issue: SPR-13745
This commit is contained in:
@@ -429,6 +429,7 @@ public class SubProtocolWebSocketHandler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
this.lastSessionCheckTime = currentTime;
|
||||||
this.sessionCheckLock.unlock();
|
this.sessionCheckLock.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,29 +148,36 @@ public class SubProtocolWebSocketHandlerTests {
|
|||||||
public void checkSession() throws Exception {
|
public void checkSession() throws Exception {
|
||||||
TestWebSocketSession session1 = new TestWebSocketSession("id1");
|
TestWebSocketSession session1 = new TestWebSocketSession("id1");
|
||||||
TestWebSocketSession session2 = new TestWebSocketSession("id2");
|
TestWebSocketSession session2 = new TestWebSocketSession("id2");
|
||||||
|
session1.setOpen(true);
|
||||||
|
session2.setOpen(true);
|
||||||
session1.setAcceptedProtocol("v12.stomp");
|
session1.setAcceptedProtocol("v12.stomp");
|
||||||
session2.setAcceptedProtocol("v12.stomp");
|
session2.setAcceptedProtocol("v12.stomp");
|
||||||
|
|
||||||
this.webSocketHandler.setProtocolHandlers(Arrays.asList(this.stompHandler));
|
this.webSocketHandler.setProtocolHandlers(Arrays.asList(this.stompHandler));
|
||||||
this.webSocketHandler.afterConnectionEstablished(session1);
|
this.webSocketHandler.afterConnectionEstablished(session1);
|
||||||
this.webSocketHandler.afterConnectionEstablished(session2);
|
this.webSocketHandler.afterConnectionEstablished(session2);
|
||||||
session1.setOpen(true);
|
|
||||||
session2.setOpen(true);
|
DirectFieldAccessor handlerAccessor = new DirectFieldAccessor(this.webSocketHandler);
|
||||||
|
Map<String, ?> map = (Map<String, ?>) handlerAccessor.getPropertyValue("sessions");
|
||||||
|
DirectFieldAccessor session1Accessor = new DirectFieldAccessor(map.get("id1"));
|
||||||
|
DirectFieldAccessor session2Accessor = new DirectFieldAccessor(map.get("id2"));
|
||||||
|
|
||||||
long sixtyOneSecondsAgo = System.currentTimeMillis() - 61 * 1000;
|
long sixtyOneSecondsAgo = System.currentTimeMillis() - 61 * 1000;
|
||||||
new DirectFieldAccessor(this.webSocketHandler).setPropertyValue("lastSessionCheckTime", sixtyOneSecondsAgo);
|
handlerAccessor.setPropertyValue("lastSessionCheckTime", sixtyOneSecondsAgo);
|
||||||
Map<String, ?> sessions = (Map<String, ?>) new DirectFieldAccessor(this.webSocketHandler).getPropertyValue("sessions");
|
session1Accessor.setPropertyValue("createTime", sixtyOneSecondsAgo);
|
||||||
new DirectFieldAccessor(sessions.get("id1")).setPropertyValue("createTime", sixtyOneSecondsAgo);
|
session2Accessor.setPropertyValue("createTime", sixtyOneSecondsAgo);
|
||||||
new DirectFieldAccessor(sessions.get("id2")).setPropertyValue("createTime", sixtyOneSecondsAgo);
|
|
||||||
|
|
||||||
this.webSocketHandler.start();
|
this.webSocketHandler.start();
|
||||||
this.webSocketHandler.handleMessage(session1, new TextMessage("foo"));
|
this.webSocketHandler.handleMessage(session1, new TextMessage("foo"));
|
||||||
|
|
||||||
assertTrue(session1.isOpen());
|
assertTrue(session1.isOpen());
|
||||||
assertFalse(session2.isOpen());
|
|
||||||
assertNull(session1.getCloseStatus());
|
assertNull(session1.getCloseStatus());
|
||||||
|
|
||||||
|
assertFalse(session2.isOpen());
|
||||||
assertEquals(CloseStatus.SESSION_NOT_RELIABLE, session2.getCloseStatus());
|
assertEquals(CloseStatus.SESSION_NOT_RELIABLE, session2.getCloseStatus());
|
||||||
|
|
||||||
|
assertNotEquals("lastSessionCheckTime not updated", sixtyOneSecondsAgo,
|
||||||
|
handlerAccessor.getPropertyValue("lastSessionCheckTime"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user