/* * Copyright 2014 TORCH GmbH * * 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.graylog2.gelfclient; import org.testng.annotations.Test; import java.util.HashMap; import java.util.Map; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotEquals; import static org.testng.Assert.assertNull; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertTrue; public class GelfMessageTest { @Test public void testGetVersion() throws Exception { assertEquals(GelfMessageVersion.V1_1, new GelfMessage("Test").getVersion()); } @Test public void testSetTimestamp() throws Exception { final double timestamp = System.currentTimeMillis() / 1000d; final GelfMessage message = new GelfMessage("Test"); message.setTimestamp(timestamp); assertEquals(timestamp, message.getTimestamp()); } @Test public void testAutoTimestamp() throws Exception { final GelfMessage message = new GelfMessage("Test"); assertTrue(message.getTimestamp() <= System.currentTimeMillis() / 1000d); } @Test public void testGetMessage() throws Exception { final GelfMessage message = new GelfMessage("Hello world!"); assertEquals("Hello world!", message.getMessage()); } @Test public void testGetFullMessage() throws Exception { final GelfMessage message = new GelfMessage("Test"); message.setFullMessage("Hello full world!"); assertEquals("Hello full world!", message.getFullMessage()); } @Test public void testGetHost() throws Exception { assertEquals("localhost", new GelfMessage("Test").getHost()); assertEquals("example.com", new GelfMessage("Test", "example.com").getHost()); } @Test public void testGetAdditionalFields() throws Exception { assertTrue(new GelfMessage("Test").getAdditionalFields().isEmpty()); } @Test public void testAddAdditionalField() throws Exception { final Map<String, Object> data = new HashMap<>(); data.put("_foo", "test"); data.put("_bar", 10); final GelfMessage message = new GelfMessage("Test"); message.addAdditionalField("_foo", "test"); message.addAdditionalField("_bar", 10); assertEquals(data, message.getAdditionalFields()); } @Test public void testAddAdditionalFields() throws Exception { final Map<String, Object> data = new HashMap<>(); data.put("_foo", "test"); data.put("_bar", 10); final GelfMessage message = new GelfMessage("Test"); message.addAdditionalFields(data); assertEquals(data, message.getAdditionalFields()); } @Test public void testAddAdditionalFieldWithNullKey() throws Exception { final GelfMessage message = new GelfMessage("Test"); message.addAdditionalField(null, "null"); assertTrue(message.getAdditionalFields().isEmpty()); } @Test public void testAddAdditionalFieldWithNullValue() throws Exception { Map<String, Object> data = new HashMap<>(); data.put("_null", null); final GelfMessage message = new GelfMessage("Test"); message.addAdditionalField("_null", null); assertEquals(data, message.getAdditionalFields()); } @Test public void testEquals() throws Exception { final GelfMessage message = new GelfMessage("Test"); assertEquals(new GelfMessage("Test"), message); assertNotEquals(new GelfMessage("Not Equal"), message); } @Test public void testHashCode() throws Exception { final GelfMessage message = new GelfMessage("Test"); assertEquals(new GelfMessage("Test").hashCode(), message.hashCode()); assertNotEquals(new GelfMessage("Not Equal"), message); } @Test public void testHashCodeIgnoresAdditionalFields() throws Exception { final GelfMessage message = new GelfMessage("Test"); message.addAdditionalField("key", "value"); assertEquals(new GelfMessage("Test").hashCode(), message.hashCode()); assertNotEquals(new GelfMessage("NotEqual").hashCode(), message.hashCode()); } @Test public void testToString() throws Exception { final GelfMessage message = new GelfMessage("Test"); message.setTimestamp(123456.0d); message.addAdditionalField("additional_key", "additional_value"); assertTrue(message.toString().contains("1.1")); assertTrue(message.toString().contains("Test")); assertTrue(message.toString().contains("123456")); assertTrue(message.toString().contains("ALERT")); assertFalse(message.toString().contains("additional_key")); } @Test public void testWorksWithNullLevel() throws Exception { final GelfMessage message = new GelfMessage("hello"); final GelfMessage message2 = new GelfMessage("hello"); final GelfMessage messageNoNull = new GelfMessage("hello"); // Make sure timestamp is the same for all objects. message.setTimestamp(1.0); message2.setTimestamp(1.0); messageNoNull.setTimestamp(1.0); message.setLevel(null); message2.setLevel(null); assertNull(message.getLevel()); assertTrue(message.toString().contains("level=\"null\"")); assertEquals(message, message2); assertNotEquals(message, messageNoNull); assertEquals(message.hashCode(), message2.hashCode()); assertNotEquals(message.hashCode(), messageNoNull.hashCode()); } }