/* * Copyright 2014-2016 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.syslog.inbound; import static org.junit.Assert.assertEquals; import java.io.ByteArrayInputStream; import java.util.List; import java.util.Map; import org.junit.Test; import org.springframework.integration.syslog.SyslogHeaders; /** * @author Duncan McIntyre * @author Gary Russell * @since 4.1.1 * */ public class SyslogDeserializerTests { static final String VALID_UNFRAMED_ENTRY = "<14>1 2014-06-20T09:14:07+00:00 loggregator d0602076-b14a-4c55-852a-981e7afeed38 DEA - - Removing instance\n"; static final String VALID_FRAMED_ENTRY = "106 <14>1 2014-06-20T09:14:07+00:00 loggregator d0602076-b14a-4c55-852a-981e7afeed38 DEA - - Removing instance"; static final String SHORT_FRAMED_ENTRY = "107 <14>1 2014-06-20T09:14:07+00:00 loggregator d0602076-b14a-4c55-852a-981e7afeed38 DEA - - Removing instance"; static final String SD_ENTRY_1 = "179 <14>1 2014-06-20T09:14:07+00:00 loggregator d0602076-b14a-4c55-852a-981e7afeed38 DEA - " + "[exampleSDID@32473 iut=\\\"3\\\" eventSource=\\\"Application\\\" eventID=\\\"1011\\\"] Removing instance"; static final String SD_ENTRY_2 = "253 <14>1 2014-06-20T09:14:07+00:00 loggregator d0602076-b14a-4c55-852a-981e7afeed38 DEA - " + "[exampleSDID@32473 iut=\\\"3\\\" eventSource=\\\"Application\\\" eventID=\\\"1011\\\"][exampleSDID@32473 " + "iut=\\\"3\\\" eventSource=\\\"Application\\\" eventID=\\\"1011\\\"] Removing instance"; static final String SD_ENTRY_3 = "275 <14>1 2014-06-20T09:14:07+00:00 loggregator d0602076-b14a-4c55-852a-981e7afeed38 DEA - " + "[exampleSDID@32473 iut=\\\"3\\\" eventSource=\\\"Application\\\" eventID=\\\"1011\\\"][exampleSDID@32473 " + "iut=\\\"3\\\" eventSource=\\\"Application\\\" escapedBracket=\\\"\\]\\\" eventID=\\\"1011\\\"] Removing instance"; @Test public void shouldParseAValidFramedEntry() throws Exception { RFC6587SyslogDeserializer deserializer = new RFC6587SyslogDeserializer(); Map<String, ?> map = deserializer.deserialize(new ByteArrayInputStream(VALID_FRAMED_ENTRY.getBytes())); assertEquals(1, map.get(SyslogHeaders.FACILITY)); assertEquals(6, map.get(SyslogHeaders.SEVERITY)); assertEquals(1, map.get(SyslogHeaders.VERSION)); assertEquals("2014-06-20T09:14:07+00:00", map.get(SyslogHeaders.TIMESTAMP)); assertEquals("loggregator", map.get(SyslogHeaders.HOST)); assertEquals("d0602076-b14a-4c55-852a-981e7afeed38", map.get(SyslogHeaders.APP_NAME)); assertEquals("DEA", map.get(SyslogHeaders.PROCID)); assertEquals("-", map.get(SyslogHeaders.MSGID)); assertEquals("Removing instance", map.get(SyslogHeaders.MESSAGE)); } @Test public void shouldParseAValidUnframedEntry() throws Exception { RFC6587SyslogDeserializer deserializer = new RFC6587SyslogDeserializer(); Map<String, ?> map = deserializer.deserialize(new ByteArrayInputStream(VALID_UNFRAMED_ENTRY.getBytes())); assertEquals(1, map.get(SyslogHeaders.FACILITY)); assertEquals(6, map.get(SyslogHeaders.SEVERITY)); assertEquals(1, map.get(SyslogHeaders.VERSION)); assertEquals("2014-06-20T09:14:07+00:00", map.get(SyslogHeaders.TIMESTAMP)); assertEquals("loggregator", map.get(SyslogHeaders.HOST)); assertEquals("d0602076-b14a-4c55-852a-981e7afeed38", map.get(SyslogHeaders.APP_NAME)); assertEquals("DEA", map.get(SyslogHeaders.PROCID)); assertEquals("-", map.get(SyslogHeaders.MSGID)); assertEquals("Removing instance", map.get(SyslogHeaders.MESSAGE)); } @Test public void shouldGetStructuredData() throws Exception { RFC6587SyslogDeserializer deserializer = new RFC6587SyslogDeserializer(); Map<String, ?> map = deserializer.deserialize(new ByteArrayInputStream(SD_ENTRY_1.getBytes())); assertEquals(1, map.get(SyslogHeaders.FACILITY)); assertEquals(6, map.get(SyslogHeaders.SEVERITY)); assertEquals(1, map.get(SyslogHeaders.VERSION)); assertEquals("2014-06-20T09:14:07+00:00", map.get(SyslogHeaders.TIMESTAMP)); assertEquals("loggregator", map.get(SyslogHeaders.HOST)); assertEquals("d0602076-b14a-4c55-852a-981e7afeed38", map.get(SyslogHeaders.APP_NAME)); assertEquals("DEA", map.get(SyslogHeaders.PROCID)); assertEquals("-", map.get(SyslogHeaders.MSGID)); assertEquals("Removing instance", map.get(SyslogHeaders.MESSAGE)); assertEquals(1, ((List<?>) map.get(SyslogHeaders.STRUCTURED_DATA)).size()); } @Test public void shouldGetMultipleStructuredData() throws Exception { RFC6587SyslogDeserializer deserializer = new RFC6587SyslogDeserializer(); Map<String, ?> map = deserializer.deserialize(new ByteArrayInputStream(SD_ENTRY_2.getBytes())); assertEquals("false", map.get(SyslogHeaders.DECODE_ERRORS)); assertEquals("Removing instance", map.get(SyslogHeaders.MESSAGE)); assertEquals(2, ((List<?>) map.get(SyslogHeaders.STRUCTURED_DATA)).size()); } @Test public void shouldGetMultipleStructuredDataWithEscapedBracket() throws Exception { RFC6587SyslogDeserializer deserializer = new RFC6587SyslogDeserializer(); Map<String, ?> map = deserializer.deserialize(new ByteArrayInputStream(SD_ENTRY_3.getBytes())); assertEquals("false", map.get(SyslogHeaders.DECODE_ERRORS)); assertEquals("Removing instance", map.get(SyslogHeaders.MESSAGE)); } @Test public void shouldErrorOnShortFramedData() throws Exception { RFC6587SyslogDeserializer deserializer = new RFC6587SyslogDeserializer(); Map<String, ?> map = deserializer.deserialize(new ByteArrayInputStream(SHORT_FRAMED_ENTRY.getBytes())); assertEquals("true", map.get(SyslogHeaders.DECODE_ERRORS)); } }