@Override public void taggedConsumeLine(String tag, String line, JobIdentifier jobIdentifier) { ConsoleTransmission consoleTransmission = new ConsoleTransmission(tag, line, jobIdentifier); webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.consoleOut, MessageEncoding.encodeData(consoleTransmission))); } }
@Override public void taggedConsumeLine(String tag, String line) { ConsoleTransmission transmission = new ConsoleTransmission(tag, line, buildId); this.webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.consoleOut, MessageEncoding.encodeData(transmission))); } }
@Override public void reportCurrentStatus(AgentRuntimeInfo agentRuntimeInfo, JobIdentifier jobIdentifier, JobState jobState) { Report report = new Report(agentRuntimeInfo, jobIdentifier, jobState); webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.reportCurrentStatus, MessageEncoding.encodeData(report))); }
@Override public void reportCompleting(AgentRuntimeInfo agentRuntimeInfo, JobIdentifier jobIdentifier, JobResult result) { Report report = new Report(agentRuntimeInfo, jobIdentifier, result); webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.reportCompleting, MessageEncoding.encodeData(report))); }
@Override public void reportCompleting(String buildId, JobResult buildResult) { Report report = new Report(agentRuntimeInfo, buildId, null, buildResult); webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.reportCompleting, MessageEncoding.encodeData(report))); } }
@Override public void reportCompleted(AgentRuntimeInfo agentRuntimeInfo, JobIdentifier jobIdentifier, JobResult result) { Report report = new Report(agentRuntimeInfo, jobIdentifier, result); webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.reportCompleted, MessageEncoding.encodeData(report))); }
@Override public void reportCompleted(String buildId, JobResult buildResult) { Report report = new Report(agentRuntimeInfo, buildId, null, buildResult); webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.reportCompleted, MessageEncoding.encodeData(report))); }
private AgentRuntimeInfo cloneAgentRuntimeInfo(AgentRuntimeInfo agentRuntimeInfo) { return MessageEncoding.decodeData(MessageEncoding.encodeData(agentRuntimeInfo), AgentRuntimeInfo.class); }
private void updateServerAgentRuntimeInfo() { AgentIdentifier agent = agentIdentifier(); LOG.trace("{} is pinging server [{}]", agent, server); getAgentRuntimeInfo().refreshUsableSpace(); if (webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.ping, MessageEncoding.encodeData(getAgentRuntimeInfo())))) { pingSuccess(); } LOG.trace("{} pinged server [{}]", agent, server); }
public void process(Agent agent, Message msg) throws Exception { try { processWithoutAcknowledgement(agent, msg); } finally { agent.send(new Message(Action.acknowledge, MessageEncoding.encodeData(msg.getAcknowledgementId()))); } }
@Override public void run() { try { agentController.process(new Message(Action.build, MessageEncoding.encodeData(build))); } catch (InterruptedException e) { throw new RuntimeException(e); } } });
@Override public void reportBuildStatus(String buildId, JobState buildState) { webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.reportCurrentStatus, MessageEncoding.encodeData(new Report(agentRuntimeInfo, buildId, buildState, null)))); }
@Test public void encodeAndDecodeSetCookie() { byte[] msg = MessageEncoding.encodeMessage(new Message(Action.setCookie, MessageEncoding.encodeData("cookie"))); Message decoded = MessageEncoding.decodeMessage(new ByteArrayInputStream(msg)); assertThat(MessageEncoding.decodeData(decoded.getData(), String.class), is("cookie")); }
@Test public void dataMapEncodingAndDecoding() { AgentRuntimeInfo info = new ElasticAgentRuntimeInfo(new AgentIdentifier("localhost", "127.0.0.1", "uuid"), AgentRuntimeStatus.Idle, "/foo/one", null, "42", "go.cd.elastic-agent-plugin.docker"); AgentRuntimeInfo clonedInfo = MessageEncoding.decodeData(MessageEncoding.encodeData(info), AgentRuntimeInfo.class); assertThat(clonedInfo, is(info)); }
@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 dataMapEncodingAndDecoding() { AgentRuntimeInfo info = new AgentRuntimeInfo(new AgentIdentifier("go02", "10.10.10.1", "uuid"), AgentRuntimeStatus.Idle, currentWorkingDirectory(), "cookie", true); AgentRuntimeInfo clonedInfo = MessageEncoding.decodeData(MessageEncoding.encodeData(info), AgentRuntimeInfo.class); assertThat(clonedInfo, is(info)); } }
@Test public void encodeAndDecodeAsMessageData() throws Exception { AgentRuntimeInfo info = new AgentRuntimeInfo(new AgentIdentifier("HostName", "ipAddress", "uuid"), AgentRuntimeStatus.Idle, null, null, true); JobIdentifier jobIdentifier = new JobIdentifier("pipeline", 1, "pipelinelabel", "stagename", "1", "job", 1L); Report report = new Report(info, jobIdentifier, JobResult.Passed); assertThat(MessageEncoding.decodeData(MessageEncoding.encodeData(report), Report.class), is(report)); } }
@Test public void processSetCookieAction() throws IOException, InterruptedException { agentController = createAgentController(); agentController.init(); agentController.process(new Message(Action.setCookie, MessageEncoding.encodeData("cookie"))); assertThat(agentController.getAgentRuntimeInfo().getCookie(), is("cookie")); }
@Test public void encodeAndDecodePingMessage() { AgentRuntimeInfo info = new AgentRuntimeInfo(new AgentIdentifier("hostName", "ipAddress", "uuid"), null, null, null, false); byte[] msg = MessageEncoding.encodeMessage(new Message(Action.ping, MessageEncoding.encodeData(info))); Message decoded = MessageEncoding.decodeMessage(new ByteArrayInputStream(msg)); AgentRuntimeInfo decodedInfo = MessageEncoding.decodeData(decoded.getData(), AgentRuntimeInfo.class); assertThat(decodedInfo.getIdentifier(), is(info.getIdentifier())); }
@Test public void encodeDecode() { BuildCommand bc = BuildCommand.compose(new BuildCommand("bar1", map("arg1", "1", "arg2", "2")), BuildCommand.compose(new BuildCommand("barz"))); bc.setRunIfConfig("any"); bc.setTest(new BuildCommand("t", map("k1", "v1"))); bc.setOnCancel(BuildCommand.compose(BuildCommand.echo("foo"), BuildCommand.echo("bar"))); assertThat(MessageEncoding.decodeData(MessageEncoding.encodeData(bc), BuildCommand.class), is(bc)); } }