@Override public void run() { long currentTime = System.currentTimeMillis(); for (Entry<Long, AgentStatusData> entry : agentStatusDataMap.entrySet()) { if (entry.getValue().getAgentConnection() != AgentConnection.CONNECTED) { continue; } long timeToLastSignal = currentTime - entry.getValue().getLastKeepAliveTimestamp(); if (timeToLastSignal > IKeepAliveService.KA_TIMEOUT) { registerKeepAliveTimeout(entry.getKey()); if (log.isInfoEnabled()) { log.info("Platform " + entry.getKey() + " timed out."); } } } } };
@Test public void connectFirstTime() { long platformIdent = 10L; agentStatusDataProvider.registerConnected(platformIdent); assertThat(agentStatusDataProvider.getAgentStatusDataMap().entrySet(), hasSize(1)); AgentStatusData agentStatusData = agentStatusDataProvider.getAgentStatusDataMap().get(platformIdent); assertThat(agentStatusData, is(notNullValue())); assertThat(agentStatusData.getAgentConnection(), is(AgentConnection.CONNECTED)); assertThat(agentStatusData.getConnectionTimestamp(), is(greaterThan(0L))); assertThat(agentStatusData.getLastKeepAliveTimestamp(), is(greaterThan(0L))); assertThat(agentStatusData.getMillisSinceLastData(), is(nullValue())); assertThat(agentStatusData.getInstrumentationStatus(), is(InstrumentationStatus.UP_TO_DATE)); }
@Test public void neverConnected() { long platformIdent = 10L; long currentTimeMillis = System.currentTimeMillis(); agentStatusDataProvider.handleKeepAliveSignal(platformIdent); AgentStatusData agentStatusData = agentStatusDataProvider.getAgentStatusDataMap().get(platformIdent); assertThat(agentStatusData.getAgentConnection(), is(AgentConnection.CONNECTED)); assertThat(agentStatusData.getLastKeepAliveTimestamp(), is(greaterThanOrEqualTo(currentTimeMillis))); assertThat(agentStatusData.getInstrumentationStatus(), is(InstrumentationStatus.NO_CLASS_CACHE_AVAILABLE)); }
lastKeepAliveTimeStamp.setText(NumberFormatter.formatTime(agentStatusData.getLastKeepAliveTimestamp()));
@Test public void connected() { long platformIdent = 10L; agentStatusDataProvider.registerConnected(platformIdent); long currentTimeMillis = System.currentTimeMillis(); agentStatusDataProvider.handleKeepAliveSignal(platformIdent); AgentStatusData agentStatusData = agentStatusDataProvider.getAgentStatusDataMap().get(platformIdent); assertThat(agentStatusData.getAgentConnection(), is(AgentConnection.CONNECTED)); assertThat(agentStatusData.getLastKeepAliveTimestamp(), is(greaterThanOrEqualTo(currentTimeMillis))); }
@Test public void afterTimeout() { long platformIdent = 10L; agentStatusDataProvider.registerConnected(platformIdent); agentStatusDataProvider.registerKeepAliveTimeout(platformIdent); long currentTimeMillis = System.currentTimeMillis(); agentStatusDataProvider.handleKeepAliveSignal(platformIdent); AgentStatusData agentStatusData = agentStatusDataProvider.getAgentStatusDataMap().get(platformIdent); assertThat(agentStatusData.getAgentConnection(), is(AgentConnection.CONNECTED)); assertThat(agentStatusData.getLastKeepAliveTimestamp(), is(greaterThanOrEqualTo(currentTimeMillis))); } }
@Test public void connectTwice() { long platformIdent = 10L; agentStatusDataProvider.registerConnected(platformIdent); long currentTimeMillis = System.currentTimeMillis(); agentStatusDataProvider.registerConnected(platformIdent); assertThat(agentStatusDataProvider.getAgentStatusDataMap().entrySet(), hasSize(1)); AgentStatusData agentStatusData = agentStatusDataProvider.getAgentStatusDataMap().get(platformIdent); assertThat(agentStatusData, is(notNullValue())); assertThat(agentStatusData.getAgentConnection(), is(AgentConnection.CONNECTED)); assertThat(agentStatusData.getConnectionTimestamp(), is(greaterThanOrEqualTo(currentTimeMillis))); assertThat(agentStatusData.getLastKeepAliveTimestamp(), is(greaterThanOrEqualTo(currentTimeMillis))); assertThat(agentStatusData.getMillisSinceLastData(), is(nullValue())); assertThat(agentStatusData.getInstrumentationStatus(), is(InstrumentationStatus.UP_TO_DATE)); }
long timeSinceLastKeepAlive = System.currentTimeMillis() - agentStatusData.getLastKeepAliveTimestamp(); styledString.append("No keep-alive signal for " + NumberFormatter.humanReadableMillisCount(timeSinceLastKeepAlive, true), StyledString.DECORATIONS_STYLER); break;