/** * {@inheritDoc} */ @Override @MethodLog public Map<PlatformIdent, AgentStatusData> getAgentsOverview() { List<PlatformIdent> agents = platformIdentDao.findAll(); Map<Long, AgentStatusData> agentStatusMap = agentStatusProvider.getAgentStatusDataMap(); Map<PlatformIdent, AgentStatusData> resultMap = new HashMap<>(); for (PlatformIdent platformIdent : agents) { AgentStatusData status = agentStatusMap.get(platformIdent.getId()); if (null == status) { status = new AgentStatusData(AgentConnection.NEVER_CONNECTED); } resultMap.put(platformIdent, status); } return resultMap; }
/** * Registers that the agent was connected. * * @param platformIdent * ID of the platform ident. */ public void registerConnected(long platformIdent) { AgentStatusData agentStatusData = agentStatusDataMap.get(platformIdent); if (null == agentStatusData) { agentStatusData = new AgentStatusData(AgentConnection.CONNECTED); AgentStatusData existing = agentStatusDataMap.putIfAbsent(platformIdent, agentStatusData); if (null != existing) { agentStatusData = existing; } } long currentTimeMillis = System.currentTimeMillis(); agentStatusData.setLastKeepAliveTimestamp(currentTimeMillis); agentStatusData.setConnectionTimestamp(currentTimeMillis); agentStatusData.setAgentConnection(AgentConnection.CONNECTED); agentStatusData.setPendingSinceTime(currentTimeMillis); // set instrumentation status up-to-date agentStatusData.setInstrumentationStatus(InstrumentationStatus.UP_TO_DATE); }
/** * No delete enabled when agent is connected. */ @Test(expectedExceptions = { BusinessException.class }) public void testConnectedAgentDelete() throws BusinessException { long platformId = 10L; PlatformIdent platformIdent = new PlatformIdent(); platformIdent.setId(platformId); when(platformIdentDao.load(Long.valueOf(platformId))).thenReturn(platformIdent); Map<Long, AgentStatusData> map = new HashMap<>(1); AgentStatusData agentStatusData = new AgentStatusData(AgentConnection.CONNECTED); map.put(platformId, agentStatusData); when(agentStatusProvider.getAgentStatusDataMap()).thenReturn(map); globalDataAccessService.deleteAgent(platformId); }
/** * Delete enabled when Agent is not connected. */ @Test public void testAgentDelete() throws BusinessException { long platformId = 10L; PlatformIdent platformIdent = new PlatformIdent(); platformIdent.setId(platformId); when(platformIdentDao.load(Long.valueOf(platformId))).thenReturn(platformIdent); Map<Long, AgentStatusData> map = new HashMap<>(1); AgentStatusData agentStatusData = new AgentStatusData(AgentConnection.DISCONNECTED); map.put(platformId, agentStatusData); when(agentStatusProvider.getAgentStatusDataMap()).thenReturn(map); globalDataAccessService.deleteAgent(platformId); verify(platformIdentDao, times(1)).delete(platformIdent); verify(defaultDataDao, times(1)).deleteAll(platformId); ArgumentCaptor<ApplicationEvent> captor = ArgumentCaptor.forClass(ApplicationEvent.class); verify(eventPublisher, times(1)).publishEvent(captor.capture()); AgentDeletedEvent event = (AgentDeletedEvent) captor.getValue(); assertThat(event.getPlatformId(), is(platformId)); } }