@Test public void testNullable() throws Exception { MessageParser parser = new TestMessageParser() { @Override public List<JSONObject> parse(byte[] rawMessage) { return null; } }; Assert.assertNotNull(parser.parseOptionalResult(null)); Assert.assertFalse(parser.parseOptionalResult(null).isPresent()); }
@Test public void testNotNullable() throws Exception { MessageParser<JSONObject> parser = new TestMessageParser() { @Override public List<JSONObject> parse(byte[] rawMessage) { return new ArrayList<>(); } }; Assert.assertNotNull(parser.parseOptionalResult(null)); Optional<MessageParserResult<JSONObject>> ret = parser.parseOptionalResult(null); Assert.assertTrue(ret.isPresent()); Assert.assertEquals(0, ret.get().getMessages().size()); }
@Test public void testParseException() { MessageParser<JSONObject> parser = new TestMessageParser() { @Override public List<JSONObject> parse(byte[] rawMessage) { throw new RuntimeException("parse exception"); } }; Optional<MessageParserResult<JSONObject>> ret = parser.parseOptionalResult("message".getBytes()); Assert.assertTrue(ret.isPresent()); Assert.assertTrue(ret.get().getMasterThrowable().isPresent()); Assert.assertEquals("parse exception", ret.get().getMasterThrowable().get().getMessage()); }
@Test public void testParseOptionalException() { MessageParser<JSONObject> parser = new TestMessageParser() { @Override public Optional<List<JSONObject>> parseOptional(byte[] rawMessage) { throw new RuntimeException("parse exception"); } }; Optional<MessageParserResult<JSONObject>> ret = parser.parseOptionalResult("message".getBytes()); Assert.assertTrue(ret.isPresent()); Assert.assertTrue(ret.get().getMasterThrowable().isPresent()); Assert.assertEquals("parse exception", ret.get().getMasterThrowable().get().getMessage()); }
@Test public void testParse() { JSONObject message = new JSONObject(); MessageParser<JSONObject> parser = new TestMessageParser() { @Override public List<JSONObject> parse(byte[] rawMessage) { return Collections.singletonList(message); } }; Optional<MessageParserResult<JSONObject>> ret = parser.parseOptionalResult("message".getBytes()); Assert.assertTrue(ret.isPresent()); Assert.assertEquals(1, ret.get().getMessages().size()); Assert.assertEquals(message, ret.get().getMessages().get(0)); }
@Test public void testParseOptional() { JSONObject message = new JSONObject(); MessageParser<JSONObject> parser = new TestMessageParser() { @Override public Optional<List<JSONObject>> parseOptional(byte[] rawMessage) { return Optional.of(Collections.singletonList(message)); } }; Optional<MessageParserResult<JSONObject>> ret = parser.parseOptionalResult("message".getBytes()); Assert.assertTrue(ret.isPresent()); Assert.assertEquals(1, ret.get().getMessages().size()); Assert.assertEquals(message, ret.get().getMessages().get(0)); }
parser.init(); Optional<MessageParserResult<JSONObject>> result = parser.parseOptionalResult(parseMessageRequest.getSampleData().getBytes()); if (!result.isPresent()) { throw new RestException("Unknown error parsing sample data");
if (sensorParserConfig != null) { MessageParser<JSONObject> parser = sensorToParserComponentMap.get(sensorType).getMessageParser(); Optional<MessageParserResult<JSONObject>> optionalMessageParserResult = parser.parseOptionalResult(rawMessage.getMessage()); if (optionalMessageParserResult.isPresent()) { MessageParserResult<JSONObject> messageParserResult = optionalMessageParserResult.get();
@Test public void shouldExecuteWithMasterThrowable() { parserRunner = spy(parserRunner); RawMessage rawMessage = new RawMessage("raw_message".getBytes(), new HashMap<>()); Throwable masterThrowable = mock(Throwable.class); MessageParserResult<JSONObject> messageParserResult = new DefaultMessageParserResult<>(masterThrowable); when(broParser.parseOptionalResult(rawMessage.getMessage())).thenReturn(Optional.of(messageParserResult)); parserRunner.setSensorToParserComponentMap(new HashMap<String, ParserComponent>() {{ put("bro", new ParserComponent(broParser, stellarFilter)); }}); ParserRunnerResults<JSONObject> parserRunnerResults = parserRunner.execute("bro", rawMessage, parserConfigurations); verify(parserRunner, times(0)) .processMessage(any(), any(), any(), any(), any()); MetronError expectedError = new MetronError() .withErrorType(Constants.ErrorType.PARSER_ERROR) .withThrowable(masterThrowable) .withSensorType(Collections.singleton("bro")) .addRawMessage(rawMessage.getMessage()); Assert.assertEquals(1, parserRunnerResults.getErrors().size()); Assert.assertTrue(parserRunnerResults.getErrors().contains(expectedError)); }
ProcessResult processedErrorResult = mock(ProcessResult.class); when(broParser.parseOptionalResult(rawMessage.getMessage())).thenReturn(Optional.of(messageParserResult)); when(processedMessageResult.getMessage()).thenReturn(processedMessage); when(processedErrorResult.isError()).thenReturn(true);