@Test public void testDecodeBase64() throws Exception { morphline = createMorphline("test-morphlines/decodeBase64"); Record record = new Record(); record.put("data", "SGVsbG8gV29ybGQ="); startSession(); assertEquals(1, collector.getNumStartEvents()); assertTrue(morphline.process(record)); byte[] actual = (byte[]) collector.getFirstRecord().getFirstValue("data"); assertArrayEquals("Hello World".getBytes(Charsets.UTF_8), actual); assertSame(record, collector.getFirstRecord()); }
@Test public void testNotWithTrue() throws Exception { morphline = createMorphline("test-morphlines/notWithTrue"); Record record = createBasicRecord(); startSession(); assertEquals(1, collector.getNumStartEvents()); assertFalse(morphline.process(record)); assertEquals(Lists.newArrayList(), collector.getRecords()); }
private void processAndVerifySuccess(Record input, Record expected, boolean isSame) { collector.reset(); startSession(); assertEquals(1, collector.getNumStartEvents()); assertTrue(morphline.process(input)); assertEquals(expected, collector.getFirstRecord()); if (isSame) { assertSame(input, collector.getFirstRecord()); } else { assertNotSame(input, collector.getFirstRecord()); } }
@Test public void testPipeWithTwoBasicCommands() throws Exception { morphline = createMorphline("test-morphlines/pipeWithTwoBasicCommands"); Record record = createBasicRecord(); processAndVerifySuccess(record, record); }
@Test public void testJavaCompilationException() throws Exception { Config config = parse("test-morphlines/javaCompilationException"); try { createMorphline(config); fail(); } catch (MorphlineCompilationException e) { assertTrue(e.getMessage().startsWith("Cannot compile script")); } }
private void testGrokFindSubstringsInternal(boolean inplace, boolean twoExpressions) throws Exception { morphline = createMorphline( "test-morphlines/grokFindSubstrings" + (inplace ? "Inplace" : "") String id = "myid"; record.put(Fields.ID, id); startSession(); assertEquals(1, collector.getNumStartEvents()); assertTrue(morphline.process(record)); Record expected = new Record(); expected.put(Fields.MESSAGE, msg); expected.put("word", "world"); expected.put("word", "foo"); assertEquals(expected, collector.getFirstRecord()); if (inplace) { assertSame(record, collector.getFirstRecord()); } else { assertNotSame(record, collector.getFirstRecord()); record.put(Fields.MESSAGE, ""); record.put(Fields.ID, id); startSession(); assertEquals(1, collector.getNumStartEvents()); assertFalse(morphline.process(record)); assertEquals(Lists.newArrayList(), collector.getRecords());
@Test public void testIfThenElseWithElseEmpty() throws Exception { morphline = createMorphline("test-morphlines/ifThenElseWithElseEmpty"); Record record = createBasicRecord(); processAndVerifySuccess(record, record); assertEquals("init1", collector.getFirstRecord().getFirstValue("state")); }
FileUtils.deleteDirectory(testMetricsOutput1.getParentFile()); FileUtils.deleteDirectory(testMetricsOutput2.getParentFile()); assertFalse(testMetricsOutput1.getParentFile().exists()); assertFalse(testMetricsOutput2.getParentFile().exists()); morphline = createMorphline("test-morphlines/startReportingMetricsToCSV"); try { Record record = new Record(); Record expected = new Record(); expected.put(Fields.MESSAGE, msg); processAndVerifySuccess(record, expected); waitForFileLengthGreaterThan(testMetricsOutput1, 0); waitForFileLengthGreaterThan(testMetricsOutput2, 0); assertTrue(testMetricsOutput1.isFile()); assertTrue(testMetricsOutput2.isFile()); long len1 = testMetricsOutput1.length(); long len2 = testMetricsOutput2.length(); assertTrue(len1 > 0); assertTrue(len2 > 0); for (int i = 0; i < 2; i++) { waitForFileLengthGreaterThan(testMetricsOutput1, len1); waitForFileLengthGreaterThan(testMetricsOutput2, len2); long len1b = testMetricsOutput1.length(); long len2b = testMetricsOutput2.length(); assertTrue(len1b > len1); assertTrue(len2b > len2); len1 = len1b; len2 = len2b;
@Test public void testIsTrue() throws Exception { System.setProperty("MY_VARIABLE", "true"); morphline = createMorphline("test-morphlines/isTrue"); Record record = new Record(); record.put("isTooYoung", "true"); processAndVerifySuccess(record, record); System.setProperty("MY_VARIABLE", "false"); morphline = createMorphline("test-morphlines/isTrue"); processAndVerifyFailure(createBasicRecord()); System.clearProperty("MY_VARIABLE"); try { morphline = createMorphline("test-morphlines/isTrue"); fail(); } catch (ConfigException.UnresolvedSubstitution e) { ; } }
@Test public void testHeadUnlimited() throws Exception { morphline = createMorphline("test-morphlines/headUnlimited"); int size = 5; for (int i = 0; i < size; i++) { assertTrue(morphline.process(new Record())); } assertEquals(size, collector.getRecords().size()); }
private void processAndVerifySuccess(Record input, Multimap... expectedMaps) { collector.reset(); startSession(); assertEquals(1, collector.getNumStartEvents()); assertTrue(morphline.process(input)); Iterator<Record> iter = collector.getRecords().iterator(); for (Multimap expected : expectedMaps) { assertTrue(iter.hasNext()); Record record = iter.next(); assertEquals(expected, record.getFields()); } assertFalse(iter.hasNext()); }
ObjectName timerName = new ObjectName("domain1", "name", "myMetrics.myTimer"); ObjectName timer2Name = new ObjectName("domain1", "name", "myMetrics.myTimer2"); assertMBeanInstanceNotFound(obj1Name, mBeanServer); assertMBeanInstanceNotFound(obj2Name, mBeanServer); assertMBeanInstanceNotFound(timerName, mBeanServer); assertMBeanInstanceNotFound(timer2Name, mBeanServer); morphline = createMorphline("test-morphlines/startReportingMetricsToJMX"); assertEquals(0L, mBeanServer.getAttribute(obj1Name, "Count")); mBeanServer.getMBeanInfo(obj1Name); assertEquals(0L, mBeanServer.getAttribute(obj2Name, "Count")); mBeanServer.getMBeanInfo(obj2Name); assertMBeanInstanceNotFound(timerName, mBeanServer); assertMBeanInstanceNotFound(timer2Name, mBeanServer); Record expected = new Record(); expected.put(Fields.MESSAGE, msg); processAndVerifySuccess(record, expected); assertEquals(2L, mBeanServer.getAttribute(obj1Name, "Count")); assertEquals("events/second", mBeanServer.getAttribute(obj1Name, "RateUnit")); mBeanServer.getMBeanInfo(obj1Name); assertEquals(2L, mBeanServer.getAttribute(obj2Name, "Count")); assertEquals("events/second", mBeanServer.getAttribute(obj2Name, "RateUnit")); mBeanServer.getMBeanInfo(obj2Name); assertEquals(1L, mBeanServer.getAttribute(timerName, "Count")); assertEquals("milliseconds", mBeanServer.getAttribute(timerName, "DurationUnit")); assertEquals("events/millisecond", mBeanServer.getAttribute(timerName, "RateUnit")); mBeanServer.getMBeanInfo(timerName);
@Test public void testReadLine() throws Exception { String threeLines = "first\nsecond\nthird"; byte[] in = threeLines.getBytes("UTF-8"); morphline = createMorphline("test-morphlines/readLine"); // uses ignoreFirstLine : true Record record = new Record(); record.put(Fields.ATTACHMENT_BODY, in); processAndVerifySuccess(record, ImmutableMultimap.of(Fields.MESSAGE, "second"), ImmutableMultimap.of(Fields.MESSAGE, "third") ); // verify counters boolean foundCounter = false; for (Entry<String, Meter> entry : morphContext.getMetricRegistry().getMeters().entrySet()) { if (entry.getKey().equals("morphline.readLine." + Metrics.NUM_RECORDS)) { assertEquals(2, entry.getValue().getCount()); foundCounter = true; } } assertTrue(foundCounter); }
@Test public void testGrokWithEscaping() throws Exception { morphline = createMorphline("test-morphlines/grokWithEscaping"); Record record = new Record(); record.put(Fields.MESSAGE, "{SystemSourceId}=foo"); assertTrue(morphline.process(record)); assertSame(record, collector.getFirstRecord()); record = new Record(); record.put(Fields.MESSAGE, "SystemSourceId}=foo"); // missing opening brace assertFalse(morphline.process(record)); }
private void processAndVerifyFailure(Record input) { collector.reset(); startSession(); assertEquals(1, collector.getNumStartEvents()); assertFalse(morphline.process(input)); assertEquals(0, collector.getRecords().size()); }
@Test public void testSampleWithoutSeed() throws Exception { morphline = createMorphline("test-morphlines/sampleWithoutSeed"); int size = 100; for (int i = 0; i < size; i++) { assertTrue(morphline.process(new Record())); } int actual = collector.getRecords().size(); double delta = 0.2; assertTrue("actual: " + actual, actual >= Math.round(size * (0.9 - delta))); assertTrue("actual: " + actual, actual <= Math.round(size * (0.9 + delta))); }
.build(); assertSame(settings, ctx.getSettings()); assertSame(ex, ctx.getExceptionHandler()); assertSame(metricRegistry, ctx.getMetricRegistry()); assertSame(healthChecks, ctx.getHealthCheckRegistry()); ctx.getHealthCheckRegistry().runHealthChecks(); assertEquals(0, new MorphlineContext.Builder().build().getSettings().size());
@Test public void testCompileWithExplicitMorphlineId() throws Exception { String file = "test-morphlines/pipeWithTwoBasicCommands"; morphline = new Compiler().compile( new File(RESOURCES_DIR + "/" + file + ".conf"), "morphline1", new MorphlineContext.Builder().build(), null); assertNotNull(morphline); }
@Test public void testGrokSeparatedValues() throws Exception { String msg = "hello\tworld\tfoo"; Pattern pattern = Pattern.compile("(?<word>.+?)(\\t|\\z)"); Matcher matcher = pattern.matcher(msg); List<String> results = Lists.newArrayList(); while (matcher.find()) { //System.out.println("match:'" + matcher.group(1) + "'"); results.add(matcher.group(1)); } assertEquals(Arrays.asList("hello", "world", "foo"), results); }
@Test public void testNotWithFalse() throws Exception { morphline = createMorphline("test-morphlines/notWithFalse"); Record record = createBasicRecord(); startSession(); assertEquals(1, collector.getNumStartEvents()); assertTrue(morphline.process(record)); assertEquals(record, collector.getFirstRecord()); assertSame(record, collector.getFirstRecord()); }