private synchronized void sendMsg(ZMQ.Socket socket, List<Message> messages) { if (!isShutdown()) { messages.forEach(message -> { String header = toJson(message.getHeader()); String parent = toJson(message.getParentHeader()); String meta = toJson(message.getMetadata()); String content = toJson(message.getContent()); String digest = hmac.sign(Arrays.asList(header, parent, meta, content)); ZMsg newZmsg = new ZMsg(); message.getIdentities().forEach(newZmsg::add); newZmsg.add(DELIM); newZmsg.add(digest.getBytes(StandardCharsets.UTF_8)); newZmsg.add(header.getBytes(StandardCharsets.UTF_8)); newZmsg.add(parent.getBytes(StandardCharsets.UTF_8)); newZmsg.add(meta.getBytes(StandardCharsets.UTF_8)); newZmsg.add(content.getBytes(StandardCharsets.UTF_8)); message.getBuffers().forEach(x -> newZmsg.add(x)); newZmsg.send(socket); }); } }
@Test public void previewShouldHaveParentHeaderFromParentMessage() throws Exception { //given Message parentMessage = commMsg(); kernel.clearMessages(); //when button.onClick(new HashMap(), parentMessage); //then Optional<Message> message = EvaluatorResultTestWatcher.waitForDisplayDataMessage(kernel); assertThat(message.get().getParentHeader()).isEqualTo(parentMessage.getHeader()); } }
@Test public void commCreatedWithoutParentMessageShouldAlwaysSendHeaderFromMessageGivenFromInternalVariable() throws NoSuchAlgorithmException { // code from first execution Message message1 = submitCodeToExecution(); comm.open(); assertThat(kernel.getPublishedMessages().get(0).getParentHeader()).isEqualTo(message1.getHeader()); kernel.clearPublishedMessages(); // code from second execution Message message2 = submitCodeToExecution(); comm.send(COMM_MSG, Comm.Buffer.EMPTY, comm.getData()); assertThat(kernel.getPublishedMessages().get(0).getParentHeader()).isEqualTo(message2.getHeader()); }
@Test public void initMessageWithData_messageHasDataIsNotNull() { //when Message message = createMessage(); //then Assertions.assertThat(message.getIdentities()).isNotEmpty(); Assertions.assertThat(message.getHeader()).isNotNull(); Assertions.assertThat(message.getParentHeader()).isNotNull(); Assertions.assertThat(message.getMetadata()).isNotNull(); Assertions.assertThat(message.getContent()).isNotNull(); } }
@Test public void commCreatedWithParentMessageShouldAlwaysSendHeaderFromThisParentMessage() throws NoSuchAlgorithmException { //given submitCodeToExecution(); //when Message parentMessage = commMsg(); comm.open(parentMessage); assertThat(kernel.getPublishedMessages().get(0).getParentHeader()).isEqualTo(parentMessage.getHeader()); kernel.clearPublishedMessages(); //then comm.send(COMM_MSG, Comm.Buffer.EMPTY, comm.getData()); assertThat(kernel.getPublishedMessages().get(0).getParentHeader()).isEqualTo(parentMessage.getHeader()); }
@Test public void handleMessage_sentMessageHasParentHeader() throws Exception { //given String expectedHeader = message.getHeader().asJson(); //when commInfoHandler.handle(message); //then Assertions.assertThat(kernel.getSentMessages()).isNotEmpty(); Message sendMessage = kernel.getSentMessages().get(0); Assertions.assertThat(sendMessage.getParentHeader().asJson()).isEqualTo(expectedHeader); }
@Test public void handleMessage_firstSentMessageHasParentHeader() throws Exception { //given String expectedHeader = message.getHeader().asJson(); //when commMsgHandler.handle(message); //then Assertions.assertThat(kernel.getPublishedMessages()).isNotEmpty(); Message publishMessage = kernel.getPublishedMessages().get(0); Assertions.assertThat(publishMessage.getParentHeader().asJson()).isEqualTo(expectedHeader); }
@Test public void handleMessage_sentMessageHasParentHeader() throws Exception { //given String expectedHeader = message.getHeader().asJson(); //when commCloseHandler.handle(message); //then Assertions.assertThat(kernel.getSentMessages()).isNotEmpty(); Message sendMessage = kernel.getSentMessages().get(0); Assertions.assertThat(sendMessage.getParentHeader().asJson()).isEqualTo(expectedHeader); }
@Test public void handleMessage_sentMessageHasParentHeader() throws Exception { //given String expectedHeader = message.getHeader().asJson(); //when commOpenHandler.handle(message); //then Assertions.assertThat(kernel.getSentMessages()).isNotEmpty(); Message sendMessage = kernel.getSentMessages().get(0); Assertions.assertThat(sendMessage.getParentHeader().asJson()).isEqualTo(expectedHeader); }
@Test public void handleMessage_firstSentMessageHasParentHeader() throws Exception { //given String expectedHeader = message.getHeader().asJson(); //when executeRequestHandler.handle(message); waitForIdleMessage(kernel); //then assertThat(kernel.getPublishedMessages()).isNotEmpty(); Message publishMessage = kernel.getPublishedMessages().get(0); assertThat(publishMessage.getParentHeader().asJson()).isEqualTo(expectedHeader); }
@Test public void handleMessage_secondSentMessageHasParentHeader() throws Exception { //given String expectedHeader = message.getHeader().asJson(); //when executeRequestHandler.handle(message); waitForIdleMessage(kernel); //then assertThat(kernel.getPublishedMessages()).isNotEmpty(); Message publishMessage = kernel.getPublishedMessages().get(1); assertThat(publishMessage.getParentHeader().asJson()).isEqualTo(expectedHeader); }
private static Message copyMessage(Message origin) { String header = toJson(origin.getHeader()); Message copy = new Message(parse(header, Header.class)); for (byte[] list : origin.getIdentities()) { copy.getIdentities().add(list.clone()); } String parent = toJson(origin.getParentHeader()); String metadata = toJson(origin.getMetadata()); String content = toJson(origin.getContent()); copy.setParentHeader(parse(parent, Header.class)); copy.setMetadata(parse(metadata, LinkedHashMap.class)); copy.setContent(parse(content, LinkedHashMap.class)); return copy; }