/* * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.integration.transformer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Date; import java.util.Map; import java.util.Map.Entry; import org.junit.Test; /** * @author Gary Russell * @author Artem Bilan * @author Karol Dowbecki * @since 2.2 */ public class SysLogTransformerTests { private final SyslogToMapTransformer sut = new SyslogToMapTransformer(); @Test public void testMap() throws Exception { String syslog = "<158>JUL 26 22:08:35 WEBERN TESTING[70729]: TEST SYSLOG MESSAGE"; Map<String, ?> transformed = sut.transformPayload(syslog.getBytes()); assertEquals(6, transformed.size()); assertEquals(19, transformed.get(SyslogToMapTransformer.FACILITY)); assertEquals(6, transformed.get(SyslogToMapTransformer.SEVERITY)); Object date = transformed.get(SyslogToMapTransformer.TIMESTAMP); assertTrue(date instanceof Date || date instanceof String); assertEquals("WEBERN", transformed.get(SyslogToMapTransformer.HOST)); assertEquals("TESTING", transformed.get(SyslogToMapTransformer.TAG)); assertEquals("[70729]: TEST SYSLOG MESSAGE", transformed.get(SyslogToMapTransformer.MESSAGE)); String[] fields = { SyslogToMapTransformer.FACILITY, SyslogToMapTransformer.SEVERITY, SyslogToMapTransformer.TIMESTAMP, SyslogToMapTransformer.HOST, SyslogToMapTransformer.TAG, SyslogToMapTransformer.MESSAGE }; Object[] values = { 19, 6, date, "WEBERN", "TESTING", "[70729]: TEST SYSLOG MESSAGE" }; assertIterationOrder(fields, values, transformed); } @Test public void testBadPattern() throws Exception { String syslog = "&158>JUL 26 22:08:35 WEBERN TESTING[70729]: TEST SYSLOG MESSAGE"; Map<String, ?> transformed = sut.transformPayload(syslog.getBytes()); assertEquals(1, transformed.size()); assertEquals(syslog, transformed.get(SyslogToMapTransformer.UNDECODED)); } @Test public void testBadFacilitySeverity() throws Exception { String syslog = "<X58>JUL 26 22:08:35 WEBERN TESTING[70729]: TEST SYSLOG MESSAGE"; Map<String, ?> transformed = sut.transformPayload(syslog.getBytes()); assertEquals(1, transformed.size()); assertEquals(syslog, transformed.get(SyslogToMapTransformer.UNDECODED)); } @Test public void testWithoutTag() throws Exception { String syslog = "<158>JUL 26 22:08:35 WEBERN [70729]: TEST SYSLOG MESSAGE"; Map<String, ?> transformed = sut.transformPayload(syslog.getBytes()); assertEquals(5, transformed.size()); assertEquals(19, transformed.get(SyslogToMapTransformer.FACILITY)); assertEquals(6, transformed.get(SyslogToMapTransformer.SEVERITY)); Object date = transformed.get(SyslogToMapTransformer.TIMESTAMP); assertTrue(date instanceof Date || date instanceof String); assertEquals("WEBERN", transformed.get(SyslogToMapTransformer.HOST)); assertFalse(transformed.containsKey(SyslogToMapTransformer.TAG)); assertEquals("[70729]: TEST SYSLOG MESSAGE", transformed.get(SyslogToMapTransformer.MESSAGE)); String[] fields = { SyslogToMapTransformer.FACILITY, SyslogToMapTransformer.SEVERITY, SyslogToMapTransformer.TIMESTAMP, SyslogToMapTransformer.HOST, SyslogToMapTransformer.MESSAGE }; Object[] values = { 19, 6, date, "WEBERN", "[70729]: TEST SYSLOG MESSAGE" }; assertIterationOrder(fields, values, transformed); } @Test public void testTagMaxLength() throws Exception { String syslog = "<158>JUL 26 22:08:35 WEBERN ABCDE1234567890ABCDE1234567890UVXYZ TEST SYSLOG MESSAGE"; Map<String, ?> transformed = sut.transformPayload(syslog.getBytes()); assertEquals(6, transformed.size()); assertEquals(19, transformed.get(SyslogToMapTransformer.FACILITY)); assertEquals(6, transformed.get(SyslogToMapTransformer.SEVERITY)); Object date = transformed.get(SyslogToMapTransformer.TIMESTAMP); assertTrue(date instanceof Date || date instanceof String); assertEquals("WEBERN", transformed.get(SyslogToMapTransformer.HOST)); assertEquals("ABCDE1234567890ABCDE1234567890UV", transformed.get(SyslogToMapTransformer.TAG)); assertEquals("XYZ TEST SYSLOG MESSAGE", transformed.get(SyslogToMapTransformer.MESSAGE)); String[] fields = { SyslogToMapTransformer.FACILITY, SyslogToMapTransformer.SEVERITY, SyslogToMapTransformer.TIMESTAMP, SyslogToMapTransformer.HOST, SyslogToMapTransformer.TAG, SyslogToMapTransformer.MESSAGE }; Object[] values = { 19, 6, date, "WEBERN", "ABCDE1234567890ABCDE1234567890UV", "XYZ TEST SYSLOG MESSAGE" }; assertIterationOrder(fields, values, transformed); } private static void assertIterationOrder(String[] expectedFields, Object[] expectedValues, Map<String, ?> actualTransformed) { int n = 0; for (Entry<String, ?> entry : actualTransformed.entrySet()) { assertEquals(expectedFields[n++], entry.getKey()); } n = 0; for (String key : actualTransformed.keySet()) { assertEquals(expectedFields[n++], key); } n = 0; for (Object value : actualTransformed.values()) { assertEquals(expectedValues[n++], value); } } }