// Copyright 2014-2015 Boundary, Inc. // // 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 com.boundary.sdk.event; import static org.junit.Assert.*; import org.junit.Test; import org.junit.After; import org.junit.Before; import com.boundary.sdk.event.RawEvent; import com.boundary.sdk.event.Severity; import com.boundary.sdk.event.Source; import com.boundary.sdk.event.Status; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class TestRawEvent { private RawEvent event; private String longStr; private String maxStr; private final int MAX_API_STRING_LENGTH = 255; private final int ONE_OVER_MAX_API_STRING_LENGTH = MAX_API_STRING_LENGTH + 1; @Before public void setUp() { event = new RawEvent(); longStr = createString(ONE_OVER_MAX_API_STRING_LENGTH,'T'); maxStr = createString(MAX_API_STRING_LENGTH,'T'); } @After public void destroy() { event = null; } /** * Helper method to create strings of repeating characters * * @param length Length of the string to create * @param ch Character to repeat * @return String */ public String createString(int length, char ch) { char[] chars = new char[length]; Arrays.fill(chars, ch); return new String(chars); } /** * Test default constructor */ @Test public void testNullEvent() { assertNotNull(event); } /** * Test default values of Events */ @Test public void testDefaultConstructor() { assertNull("Check createdAt",event.getCreatedAt()); assertNotNull("check for null fingerprint fields",event.getFingerprintFields()); assertNull("Check message",event.getMessage()); assertNull("Check organization id",event.getOrganizationId()); assertNotNull("check fingerprint fields",event.getProperties()); assertNull("Check receivedAt",event.getReceivedAt()); assertNotNull("Check sender",event.getSender()); assertNotNull("Check severity",event.getSeverity()); assertNotNull("Check source",event.getSource()); assertNotNull("Check for null source",event.getSource()); assertNotNull("Check status", event.getStatus()); assertNotNull("Check tags",event.getTags()); assertNull("check for null title",event.getTitle()); } @Test public void testCreatedAt() { Calendar expectedDate = Calendar.getInstance(); event.setCreatedAt(expectedDate.getTime()); assertEquals("Check createdAt",event.getCreatedAt(),expectedDate.getTime()); } @Test public void testFingerprintFields() { ArrayList<String> expectedFingerprintFields = new ArrayList<String>(); expectedFingerprintFields.add("foo"); event.setFingerprintFields(expectedFingerprintFields); assertTrue("Check fingerprintFields", event.getFingerprintFields().containsAll(expectedFingerprintFields)); } @Test public void testTruncatedFingerprintFields() { ArrayList<String> fingerprintFields = new ArrayList<String>(); ArrayList<String> maxFingerprintFields = new ArrayList<String>(); maxFingerprintFields.add(maxStr); fingerprintFields.add(longStr); event.setFingerprintFields(fingerprintFields); assertTrue("Check fingerprintFields", event.getFingerprintFields().containsAll(maxFingerprintFields)); } @Test public void testMaxFingerprintFields() { ArrayList<String> fingerprintFields = new ArrayList<String>(); ArrayList<String> maxFingerprintFields = new ArrayList<String>(); maxFingerprintFields.add(maxStr); fingerprintFields.add(maxStr); event.setFingerprintFields(fingerprintFields); assertTrue("Check fingerprintFields", event.getFingerprintFields().containsAll(maxFingerprintFields)); } @Test public void testAddFingerprintFields() { String expectedField = "DEADBEEFDEADBEEFDEADBEEF"; ArrayList<String> expectedFingerprintFields = new ArrayList<String>(); expectedFingerprintFields.add(expectedField); event.addFingerprintField(expectedField); assertTrue("Check add fingerprintFields", event.getFingerprintFields().containsAll(expectedFingerprintFields)); } @Test public void testAddTruncatedFingerprintFields() { ArrayList<String> expectedFingerprintFields = new ArrayList<String>(); expectedFingerprintFields.add(maxStr); event.addFingerprintField(longStr); assertTrue("Check add truncated fingerprintFields", event.getFingerprintFields().containsAll(expectedFingerprintFields)); } @Test public void testAddMaximumFingerprintFields() { ArrayList<String> expectedFingerprintFields = new ArrayList<String>(); expectedFingerprintFields.add(maxStr); event.addFingerprintField(maxStr); assertTrue("Check add maximum fingerprintFields", event.getFingerprintFields().containsAll(expectedFingerprintFields)); } @Test public void testMessage() { String expectedMessage ="Good Morning Vietnam!"; event.setMessage(expectedMessage); assertEquals("Check message field",expectedMessage,event.getMessage()); } @Test public void testTruncatedMessage() { event.setMessage(longStr); assertEquals("Check truncated message filed",maxStr,event.getMessage()); } @Test public void testMaxMessage() { event.setMessage(maxStr); assertEquals("Check truncated message filed",maxStr,event.getMessage()); } @Test public void testOrganizationId() { String expectedOrganizationId = "DEADBEEFDEADBEEFDEADBEEF"; event.setOrganizationId(expectedOrganizationId); assertEquals("Check organization field",expectedOrganizationId,event.getOrganizationId()); } @Test public void testProperties() { LinkedHashMap<String,Object> expectedProperties = new LinkedHashMap<String,Object>(); expectedProperties.put("host","some.really.long.host.name"); event.setProperties(expectedProperties); assertEquals("Check properities field",expectedProperties,event.getProperties()); } @Test public void testTruncatedProperties() { LinkedHashMap<String,Object> longProps = new LinkedHashMap<String,Object>(); LinkedHashMap<String,Object> maxProps = new LinkedHashMap<String,Object>(); longProps.put("closer to the heart", longStr); maxProps.put("closer to the heart", maxStr); event.setProperties(longProps); assertEquals("Check properities field",maxProps,event.getProperties()); } @Test public void testMaxProperties() { LinkedHashMap<String,Object> props = new LinkedHashMap<String,Object>(); LinkedHashMap<String,Object> maxProps = new LinkedHashMap<String,Object>(); props.put("closer to the heart", maxStr); maxProps.put("closer to the heart", maxStr); event.setProperties(props); assertEquals("Check properities field",maxProps,event.getProperties()); } @Test public void testReceivedAt() { Date expectedReceivedAt = new Date(); event.setReceivedAt(expectedReceivedAt); assertEquals("Check received at", expectedReceivedAt,event.getReceivedAt()); } @Test public void testSender() { Source expectedSender = new Source(); expectedSender.setRef("A"); expectedSender.setType("B"); expectedSender.setName("C"); LinkedHashMap<String,Object> aProp = new LinkedHashMap<String,Object>(); aProp.put("D","E"); event.setSender(expectedSender); assertEquals("Check Sender ref", expectedSender.getRef(),event.getSender().getRef()); assertEquals("Check Sender type",expectedSender.getType(),event.getSender().getType()); assertEquals("Check Sender name",expectedSender.getName(),event.getSender().getName()); assertEquals("Check Sender properties",expectedSender.getProperties(),event.getSender().getProperties()); } @Test public void setAndGetSender() { String aRef = "ren.nick.com"; String aType = "host"; String aName = "stimpy"; Source aSender = new Source(); Source bSender = new Source(); LinkedHashMap<String,Object> aProp = new LinkedHashMap<String,Object>(); LinkedHashMap<String,Object> bProp = new LinkedHashMap<String,Object>(); aSender.setRef(aRef); aSender.setType(aType); aSender.setName(aName); aProp.put("hello", "goodbye"); aSender.setProperties(aProp); bSender.setRef(aRef); bSender.setType(aType); bSender.setName(aName); bProp.put("hello", "goodbye"); bSender.setProperties(bProp); event.setSender(aSender); Source cSender = event.getSender(); assertEquals("Check Get Sender ref", bSender.getRef(),cSender.getRef()); assertEquals("Check Get Sender type",bSender.getType(),cSender.getType()); assertEquals("Check Get Sender name",bSender.getName(),cSender.getName()); assertEquals("Check Get Sender properties",bSender.getProperties(),cSender.getProperties()); } @Test public void testSeverity() { Severity expectedSeverity = Severity.CRITICAL; RawEvent event = new RawEvent(); event.setSeverity(expectedSeverity); assertEquals("Check Severity", event.getSeverity(),expectedSeverity); } @Test public void testSource() { Source source = new Source(); String aRef = "stimpy.nick.com"; String aType = "host"; String aName = "ren"; LinkedHashMap<String,Object> aProp = new LinkedHashMap<String,Object>(); String aValue = "Hello World!"; aProp.put("hello",aValue); source.setRef(aRef); source.setType(aType); source.setName(aName); source.setProperties(aProp); assertEquals("Check Source ref", aRef,source.getRef()); assertEquals("Check Source type",aType,source.getType()); assertEquals("Check Source name",aName,source.getName()); assertEquals("Check Source properties",aProp,source.getProperties()); } @Test public void setAndGetSource() { String aRef = "ren.nick.com"; String aType = "host"; String aName = "stimpy"; Source aSource = new Source(); Source bSource = new Source(); LinkedHashMap<String,Object> aProp = new LinkedHashMap<String,Object>(); LinkedHashMap<String,Object> bProp = new LinkedHashMap<String,Object>(); aSource.setRef(aRef); aSource.setType(aType); aSource.setName(aName); aProp.put("hello", "goodbye"); aSource.setProperties(aProp); bSource.setRef(aRef); bSource.setType(aType); bSource.setName(aName); bProp.put("hello", "goodbye"); bSource.setProperties(bProp); event.setSource(aSource); Source cSource = event.getSource(); assertEquals("Check Get Source ref", bSource.getRef(),cSource.getRef()); assertEquals("Check Get Source type",bSource.getType(),cSource.getType()); assertEquals("Check Get Source name",bSource.getName(),cSource.getName()); assertEquals("Check Get Source properties",bSource.getProperties(),cSource.getProperties()); } @Test public void testTruncatedSource() { Source source = new Source(); String longRef = createString(ONE_OVER_MAX_API_STRING_LENGTH,'X'); String longType = createString(ONE_OVER_MAX_API_STRING_LENGTH,'Y'); String longName = createString(ONE_OVER_MAX_API_STRING_LENGTH,'Z'); String maxRef = createString(MAX_API_STRING_LENGTH,'X'); String maxType = createString(MAX_API_STRING_LENGTH,'Y'); String maxName = createString(MAX_API_STRING_LENGTH,'Z'); source.setRef(longRef); source.setType(longType); source.setName(longName); LinkedHashMap<String,Object> longProp = new LinkedHashMap<String,Object>(); LinkedHashMap<String,Object> maxProp = new LinkedHashMap<String,Object>(); longProp.put("hello",longStr); maxProp.put("hello", maxStr); source.setProperties(longProp); assertEquals("Check Source ref", maxRef,source.getRef()); assertEquals("Check Source type",maxType,source.getType()); assertEquals("Check Source name",maxName,source.getName()); assertEquals("Check Source properties",maxProp,source.getProperties()); } @Test public void testStatus() { Status expectedStatus = Status.CLOSED; event.setStatus(expectedStatus); assertEquals("Check expectedStatus",expectedStatus,event.getStatus()); } @Test public void testTags() { ArrayList<String> tags = new ArrayList<String>(); tags.add("red"); tags.add("blue"); tags.add("green"); event.setTags(tags); assertEquals("Check tags",tags,event.getTags()); } @Test public void testTruncateTags() { String a = createString(ONE_OVER_MAX_API_STRING_LENGTH,'A'); String b = createString(ONE_OVER_MAX_API_STRING_LENGTH,'B'); String c = createString(ONE_OVER_MAX_API_STRING_LENGTH,'C'); String A = createString(MAX_API_STRING_LENGTH,'A'); String B = createString(MAX_API_STRING_LENGTH,'B'); String C = createString(MAX_API_STRING_LENGTH,'C'); ArrayList<String> tags = new ArrayList<String>(); tags.add(a); tags.add(b); tags.add(c); ArrayList<String> truncatedTags = new ArrayList<String>(); truncatedTags.add(A); truncatedTags.add(B); truncatedTags.add(C); event.setTags(tags); assertEquals("Check tags",truncatedTags,event.getTags()); } @Test public void testMaximumTags() { String a = createString(MAX_API_STRING_LENGTH,'A'); String b = createString(MAX_API_STRING_LENGTH,'B'); String c = createString(MAX_API_STRING_LENGTH,'C'); String A = createString(MAX_API_STRING_LENGTH,'A'); String B = createString(MAX_API_STRING_LENGTH,'B'); String C = createString(MAX_API_STRING_LENGTH,'C'); ArrayList<String> tags = new ArrayList<String>(); tags.add(a); tags.add(b); tags.add(c); ArrayList<String> truncatedTags = new ArrayList<String>(); truncatedTags.add(A); truncatedTags.add(B); truncatedTags.add(C); event.setTags(tags); assertEquals("Check tags",truncatedTags,event.getTags()); } @Test public void testAddTag() { String expectedTag = "DEADBEEFDEADBEEFDEADBEEF"; ArrayList<String> expectedTags = new ArrayList<String>(); expectedTags.add(expectedTag); event.addTag(expectedTag); assertTrue("Check add tag", event.getTags().containsAll(expectedTags)); } @Test public void testAddTruncateTag() { ArrayList<String> truncatedTags = new ArrayList<String>(); truncatedTags.add(maxStr); event.addTag(longStr); assertTrue("Check add truncated tag", event.getTags().containsAll(truncatedTags)); } @Test public void testAddMaximumTag() { ArrayList<String> maxTags = new ArrayList<String>(); maxTags.add(maxStr); event.addTag(maxStr); assertTrue("Check add truncated tag", event.getTags().containsAll(maxTags)); } @Test public void testTitle() { String expectedTitle = "My Message"; event.setTitle(expectedTitle); assertEquals("Check title", event.getTitle(),expectedTitle); } @Test public void testTitleTruncation() { event.setTitle(longStr); assertEquals("Check truncate title",maxStr,event.getTitle()); } @Test public void testTitleMaximum() { event.setTitle(maxStr); assertEquals("Check maximum title",maxStr,event.getTitle()); } private RawEventBuilder rawEventBuilder() { RawEventBuilder builder = RawEventBuilder.builder(); Date now = new Date(); builder.setCreatedAt(new Date()); List<String> fingerprintFields = new ArrayList<String>(); fingerprintFields.add("red"); fingerprintFields.add("blue"); fingerprintFields.add("green"); builder.setFingerprintFields(fingerprintFields); builder.setMessage("HELLO PEOPLE"); builder.setOrganizationId("foobar"); Map<String,Object> properties = new HashMap<String,Object>(); properties.put("one","1"); properties.put("two","2"); properties.put("three","3"); builder.setProperties(properties); builder.setReceivedAt(now); Source sender = new Source("alex","geddy","neal",properties); builder.setSender(sender); builder.setSeverity(Severity.INFO); Source source = new Source("larry","curl","moe",properties); builder.setSource(source); builder.setStatus(Status.OPEN); List<String> tags = new ArrayList<String>(); tags.add("cyan"); tags.add("magenta"); tags.add("yellow"); builder.setTags(tags); builder.setTitle("foobar"); return builder; } @Test public void testEventEquals() { RawEventBuilder builder = rawEventBuilder(); RawEvent event1 = builder.build(); RawEvent event2 = builder.build(); assertTrue("check equals",event1.equals(event2)); } @Test public void testNotEqual() { RawEventBuilder builder = RawEventBuilder.builder(); builder.setTitle("foobar"); RawEvent event1 = builder.build(); builder.setTitle("barfoo"); RawEvent event2 = builder.build(); assertFalse("check title equals",event1.equals(event2)); } }