@SuppressWarnings("unchecked") @Override public Optional<MessageParserResult<JSONObject>> parseOptionalResult(byte[] rawMessage) { if (grok == null) { init(); } if (multiLine) { return parseMultiLine(rawMessage); } return parseSingleLine(rawMessage); }
/** * Test that if a byte[] with multiple lines of log is passed in * it will be parsed into the correct number of messages. * @throws IOException if we can't read from disk * @throws ParseException if we can't parse */ @Test(expected = RuntimeException.class) @SuppressWarnings("unchecked") public void testLegacyInterfaceThrowsOneExceptionWithMultiline() throws IOException, ParseException { Map<String, Object> parserConfig = new HashMap<>(); parserConfig.put("grokPath", getGrokPath()); parserConfig.put("patternLabel", getGrokPatternLabel()); parserConfig.put("timestampField", getTimestampField()); parserConfig.put("dateFormat", getDateFormat()); parserConfig.put("timeFields", getTimeFields()); parserConfig.put("multiLine",getMultiLine()); GrokParser grokParser = new GrokParser(); grokParser.configure(parserConfig); grokParser.init(); JSONParser jsonParser = new JSONParser(); Map<String, String> testData = getTestData(); for (Map.Entry<String, String> e : testData.entrySet()) { byte[] rawMessage = e.getKey().getBytes(); List<JSONObject> parsedList = grokParser.parse(rawMessage); } }
@Test public void test() throws IOException, ParseException { Map<String, Object> parserConfig = new HashMap<>(); parserConfig.put("grokPath", getGrokPath()); parserConfig.put("patternLabel", getGrokPatternLabel()); parserConfig.put("timestampField", getTimestampField()); parserConfig.put("dateFormat", getDateFormat()); parserConfig.put("timeFields", getTimeFields()); GrokParser grokParser = new GrokParser(); grokParser.configure(parserConfig); grokParser.init(); JSONParser jsonParser = new JSONParser(); Map<String,String> testData = getTestData(); for( Map.Entry<String,String> e : testData.entrySet() ){ JSONObject expected = (JSONObject) jsonParser.parse(e.getValue()); byte[] rawMessage = e.getKey().getBytes(); Optional<MessageParserResult<JSONObject>> resultOptional = grokParser.parseOptionalResult(rawMessage); Assert.assertNotNull(resultOptional); Assert.assertTrue(resultOptional.isPresent()); List<JSONObject> parsedList = resultOptional.get().getMessages(); Assert.assertEquals(1, parsedList.size()); compare(expected, parsedList.get(0)); } }
/** * Test that if a byte[] with multiple lines of log is passed in * it will be parsed into the correct number of messages. * @throws IOException if we can't read from disk * @throws ParseException if we can't parse */ @Test @SuppressWarnings("unchecked") public void testLegacyInterfaceReturnsMultiline() throws IOException, ParseException { Map<String, Object> parserConfig = new HashMap<>(); parserConfig.put("grokPath", getGrokPath()); parserConfig.put("patternLabel", getGrokPatternLabel()); parserConfig.put("timestampField", getTimestampField()); parserConfig.put("dateFormat", getDateFormat()); parserConfig.put("timeFields", getTimeFields()); parserConfig.put("multiLine", getMultiLine()); GrokParser grokParser = new GrokParser(); grokParser.configure(parserConfig); grokParser.init(); JSONParser jsonParser = new JSONParser(); Map<String, String> testData = getTestData(); for (Map.Entry<String, String> e : testData.entrySet()) { byte[] rawMessage = e.getKey().getBytes(); Optional<MessageParserResult<JSONObject>> resultOptional = grokParser.parseOptionalResult(rawMessage); Assert.assertNotNull(resultOptional); Assert.assertTrue(resultOptional.isPresent()); List<JSONObject> parsedList = resultOptional.get().getMessages(); Assert.assertEquals(10, parsedList.size()); } }
grokParser.init();
grokParser.init();