public boolean isIdle() { return agentRuntimeInfo.getRuntimeStatus() == AgentRuntimeStatus.Idle; }
public boolean isCancelled() { return agentRuntimeInfo.getRuntimeStatus() == AgentRuntimeStatus.Cancelled; }
public AgentRuntimeStatus getRuntimeStatus() { return agentRuntimeInfo.getRuntimeStatus(); }
public boolean isBuilding() { return agentRuntimeInfo.getRuntimeStatus() == AgentRuntimeStatus.Building; }
public boolean isMissing() { return agentRuntimeInfo.getRuntimeStatus() == AgentRuntimeStatus.Missing; }
public AgentStatus getStatus() { return agentConfigStatus == AgentConfigStatus.Enabled ? AgentStatus.fromRuntime(agentRuntimeInfo.getRuntimeStatus()) : AgentStatus.fromConfig(agentConfigStatus); }
private void updateRuntimeStatus(AgentRuntimeStatus agentRuntimeStatus) { if (this.agentRuntimeInfo.getRuntimeStatus() != agentRuntimeStatus) { this.agentRuntimeInfo.setRuntimeStatus(agentRuntimeStatus); notifyStatusChange(); } }
public void update(AgentRuntimeInfo newRuntimeInfo) { syncStatus(newRuntimeInfo.getRuntimeStatus()); syncIp(newRuntimeInfo); this.lastHeardTime = new Date(); this.agentRuntimeInfo.updateSelf(newRuntimeInfo); }
private void waitForAgentRuntimeState(AgentRuntimeInfo runtimeInfo, AgentRuntimeStatus status) throws InterruptedException { int elapsed = 0; int waitStep = 100; while (elapsed <= MAX_WAIT_IN_TEST) { if (runtimeInfo.getRuntimeStatus() == status) { return; } Thread.sleep(waitStep); elapsed += waitStep; } throw new RuntimeException("wait for agent status '" + status.name() + "' timeout, current status is '" + runtimeInfo.getRuntimeStatus().name() + "'"); }
public AgentInstruction ping(AgentRuntimeInfo info) { AGENT_STATUS.add(info.getRuntimeStatus()); return new AgentInstruction(false); }
public ElasticAgentMetadata elasticAgentMetadata() { ElasticAgentRuntimeInfo runtimeInfo = (ElasticAgentRuntimeInfo) this.agentRuntimeInfo; return new ElasticAgentMetadata(getUuid(), runtimeInfo.getElasticAgentId(), runtimeInfo.getElasticPluginId(), this.agentRuntimeInfo.getRuntimeStatus(), getAgentConfigStatus()); }
private ElasticAgentRuntimeInfo(AgentRuntimeInfo runtimeInfo, String elasticAgentId, String elasticPluginId) { this(runtimeInfo.getIdentifier(), runtimeInfo.getRuntimeStatus(), runtimeInfo.getLocation(), runtimeInfo.getCookie(), elasticAgentId, elasticPluginId); this.setOperatingSystem(runtimeInfo.getOperatingSystem()); this.setUsableSpace(runtimeInfo.getUsableSpace()); }
@Test public void shouldBeUnknownWhenRegistrationRequestIsFromLocalAgent() { AgentRuntimeInfo agentRuntimeInfo = AgentRuntimeInfo.fromServer( new AgentConfig("uuid", "localhost", "176.19.4.1"), false, "/var/lib", 0L, "linux", false); assertThat(agentRuntimeInfo.getRuntimeStatus(), is(AgentRuntimeStatus.Unknown)); }
public void syncConfig(AgentConfig agentConfig) { this.agentConfig = agentConfig; if (agentConfig.isElastic()) { agentRuntimeInfo = ElasticAgentRuntimeInfo.fromServer(agentRuntimeInfo, agentConfig.getElasticAgentId(), agentConfig.getElasticPluginId()); } if (agentRuntimeInfo.getRuntimeStatus() == AgentRuntimeStatus.Unknown) { agentRuntimeInfo.idle(); } updateConfigStatus(agentConfig.isDisabled() ? AgentConfigStatus.Disabled : AgentConfigStatus.Enabled); }
@Test public void shouldUsingIdleWhenRegistrationRequestIsFromAlreadyRegisteredAgent() { AgentRuntimeInfo agentRuntimeInfo = AgentRuntimeInfo.fromServer( new AgentConfig("uuid", "localhost", "176.19.4.1"), true, "/var/lib", 0L, "linux", false); assertThat(agentRuntimeInfo.getRuntimeStatus(), is(AgentRuntimeStatus.Idle)); }
@Test public void shouldUsingIdleWhenRegistrationRequestIsFromLocalAgent() { AgentRuntimeInfo agentRuntimeInfo = AgentRuntimeInfo.fromServer( new AgentConfig("uuid", "localhost", "127.0.0.1"), false, "/var/lib", 0L, "linux", false); assertThat(agentRuntimeInfo.getRuntimeStatus(), is(Idle)); }
@Test public void processAssignWorkAction() throws IOException, InterruptedException { ArgumentCaptor<Message> argumentCaptor = ArgumentCaptor.forClass(Message.class); agentController = createAgentController(); agentController.init(); agentController.process(new Message(Action.assignWork, MessageEncoding.encodeWork(new SleepWork("work1", 0)))); assertThat(agentController.getAgentRuntimeInfo().getRuntimeStatus(), is(AgentRuntimeStatus.Idle)); verify(webSocketSessionHandler, times(1)).sendAndWaitForAcknowledgement(argumentCaptor.capture()); verify(artifactsManipulator).setProperty(null, new Property("work1_result", "done")); Message message = argumentCaptor.getAllValues().get(0); assertThat(message.getAcknowledgementId(), notNullValue()); assertThat(message.getAction(), is(Action.ping)); assertThat(message.getData(), is(MessageEncoding.encodeData(agentController.getAgentRuntimeInfo()))); }
@Test public void processCancelJobAction() throws IOException, InterruptedException { agentController = createAgentController(); agentController.init(); final SleepWork sleep1secWork = new SleepWork("work1", MAX_WAIT_IN_TEST); Thread buildingThread = new Thread(new Runnable() { @Override public void run() { try { agentController.process(new Message(Action.assignWork, MessageEncoding.encodeWork(sleep1secWork))); } catch (InterruptedException e) { throw new RuntimeException(e); } } }); buildingThread.start(); waitForAgentRuntimeState(agentController.getAgentRuntimeInfo(), AgentRuntimeStatus.Building); agentController.process(new Message(Action.cancelBuild)); buildingThread.join(MAX_WAIT_IN_TEST); assertThat(agentController.getAgentRuntimeInfo().getRuntimeStatus(), is(AgentRuntimeStatus.Idle)); verify(artifactsManipulator).setProperty(null, new Property("work1_result", "done_canceled")); }
assertThat(agentController.getAgentRuntimeInfo().getRuntimeStatus(), is(AgentRuntimeStatus.Idle));
@Test public void processAssignWorkActionWithConsoleLogsThroughWebSockets() throws IOException, InterruptedException { SystemEnvironment env = new SystemEnvironment(); env.set(SystemEnvironment.WEBSOCKET_ENABLED, true); env.set(SystemEnvironment.CONSOLE_LOGS_THROUGH_WEBSOCKET_ENABLED, true); ArgumentCaptor<Message> argumentCaptor = ArgumentCaptor.forClass(Message.class); agentController = createAgentController(); agentController.init(); agentController.process(new Message(Action.assignWork, MessageEncoding.encodeWork(new SleepWork("work1", 0)))); assertThat(agentController.getAgentRuntimeInfo().getRuntimeStatus(), is(AgentRuntimeStatus.Idle)); verify(webSocketSessionHandler, times(2)).sendAndWaitForAcknowledgement(argumentCaptor.capture()); verify(artifactsManipulator).setProperty(null, new Property("work1_result", "done")); Message message = argumentCaptor.getAllValues().get(1); assertThat(message.getAcknowledgementId(), notNullValue()); assertThat(message.getAction(), is(Action.ping)); assertThat(message.getData(), is(MessageEncoding.encodeData(agentController.getAgentRuntimeInfo()))); Message message2 = argumentCaptor.getAllValues().get(0); assertThat(message2.getAcknowledgementId(), notNullValue()); assertThat(message2.getAction(), is(Action.consoleOut)); ConsoleTransmission ct = MessageEncoding.decodeData(message2.getData(), ConsoleTransmission.class); assertThat(ct.getLine(), RegexMatcher.matches("Sleeping for 0 milliseconds")); env.set(SystemEnvironment.WEBSOCKET_ENABLED, false); env.set(SystemEnvironment.CONSOLE_LOGS_THROUGH_WEBSOCKET_ENABLED, false); }