1 /*======================================================================*
2 * Copyright (c) 2010, Frank Maritato All rights reserved. *
4 * Licensed under the New BSD License (the "License"); you may not use *
5 * this file except in compliance with the License. Unless required *
6 * by applicable law or agreed to in writing, software distributed *
7 * under the License is distributed on an "AS IS" BASIS, WITHOUT *
8 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
9 * See the License for the specific language governing permissions and *
10 * limitations under the License. See accompanying LICENSE file. *
11 *======================================================================*/
15 import org
.apache
.commons
.logging
.Log
;
16 import org
.apache
.commons
.logging
.LogFactory
;
17 import org
.junit
.Before
;
18 import org
.junit
.Test
;
19 import org
.lwes
.Event
;
20 import org
.lwes
.EventAttributeSizeException
;
21 import org
.lwes
.EventSystemException
;
24 import java
.net
.InetAddress
;
25 import java
.net
.UnknownHostException
;
26 import java
.util
.ArrayList
;
27 import java
.util
.Arrays
;
28 import java
.util
.Enumeration
;
29 import java
.util
.List
;
31 import static org
.junit
.Assert
.assertEquals
;
32 import static org
.junit
.Assert
.assertNotNull
;
33 import static org
.junit
.Assert
.assertTrue
;
40 public class ArrayTest
{
42 private static transient Log log
= LogFactory
.getLog(ArrayTest
.class);
44 private static final String ESF
= "src/test/java/org/lwes/db/ArrayTest.esf";
45 private static final String TEST_EVENT
= "TestEvent";
47 private EventTemplateDB template
= null;
51 template
= new EventTemplateDB();
52 template
.setESFFile(new File(ESF
));
53 template
.initialize();
57 public void testArrayParse() {
59 EventTemplateDB template
= new EventTemplateDB();
60 template
.setESFFile(new File(ESF
));
61 assertTrue("Template did not initialize", template
.initialize());
63 Enumeration
<String
> eventNames
= template
.getEventNames();
64 assertNotNull("Event names enum was null", eventNames
);
66 assertTrue("TestEvent was not known to the template",
67 template
.checkForEvent(TEST_EVENT
));
69 assertTrue("field1 attribute not known to the template",
70 template
.checkForAttribute(TEST_EVENT
, "field1"));
75 public void testStringArray() throws EventSystemException
{
77 // First try to set a valid string array
78 Event evt
= new Event("TestEvent", true, template
);
79 List
<String
> data
= new ArrayList
<String
>(Arrays
.asList("1", "2", "3"));
80 evt
.setStringArray("field1", data
);
81 List
<String
> ar
= evt
.getStringArray("field1");
82 assertNotNull("string array was null", ar
);
83 assertEquals("length was incorrect", 3, ar
.size());
85 // Make sure we can serialize/deserialize it
86 byte[] serializedEvent
= evt
.serialize();
87 Event evt2
= new Event(serializedEvent
, true, template
);
89 List a2
= evt2
.getStringArray("field1");
91 assertEquals("deserialized array length was incorrect", 3, a2
.size());
93 // Now try to set an invalid string array and make
94 // sure an exception is thrown.
95 boolean exceptionThrown
= false;
97 evt
.setStringArray("field1",
98 new ArrayList(Arrays
.asList("1", "2", "3",
103 catch (EventAttributeSizeException e
) {
104 if (log
.isDebugEnabled()) {
105 log
.debug(e
.getMessage());
107 exceptionThrown
= true;
109 assertTrue("No exception was thrown for array length", exceptionThrown
);
113 public void testInt16() throws EventSystemException
{
114 // First try to set a valid string array
115 Event evt
= new Event("TestEvent", true, template
);
116 evt
.setInt16Array("field2", new ArrayList(Arrays
.asList((short) 1, (short) 2, (short) 3)));
117 List
<Short
> ar
= evt
.getInt16Array("field2");
118 assertNotNull("string array was null", ar
);
119 assertEquals("length was incorrect", 3, ar
.size());
121 // Make sure we can serialize/deserialize it
122 byte[] serializedEvent
= evt
.serialize();
123 Event evt2
= new Event(serializedEvent
, true, template
);
125 List
<Short
> a2
= evt2
.getInt16Array("field2");
127 assertEquals("deserialized array length was incorrect", 3, a2
.size());
129 // Now try to set an invalid string array and make
130 // sure an exception is thrown.
131 boolean exceptionThrown
= false;
133 evt
.setInt16Array("field2", new ArrayList(Arrays
.asList(1, 2, 3,
138 catch (EventAttributeSizeException e
) {
139 if (log
.isDebugEnabled()) {
140 log
.debug(e
.getMessage());
142 exceptionThrown
= true;
144 assertTrue("No exception was thrown for array length", exceptionThrown
);
148 public void testInt32() throws EventSystemException
{
149 // First try to set a valid string array
150 Event evt
= new Event("TestEvent", true, template
);
151 evt
.setInt32Array("field3", new ArrayList(Arrays
.asList(1234567890, 234567890, 345678901)));
152 List
<Integer
> ar
= evt
.getInt32Array("field3");
153 assertNotNull("string array was null", ar
);
154 assertEquals("length was incorrect", 3, ar
.size());
156 // Make sure we can serialize/deserialize it
157 byte[] serializedEvent
= evt
.serialize();
158 Event evt2
= new Event(serializedEvent
, true, template
);
160 List
<Integer
> a2
= evt2
.getInt32Array("field3");
162 assertEquals("deserialized array length was incorrect", 3, a2
.size());
163 assertEquals("a2[0]", (int) a2
.get(0), 1234567890);
164 assertEquals("a2[1]", (int) a2
.get(1), 234567890);
165 assertEquals("a2[2]", (int) a2
.get(2), 345678901);
167 // Now try to set an invalid string array and make
168 // sure an exception is thrown.
169 boolean exceptionThrown
= false;
171 evt
.setInt32Array("field3", new ArrayList(Arrays
.asList(1, 2, 3,
176 catch (EventAttributeSizeException e
) {
177 if (log
.isDebugEnabled()) {
178 log
.debug(e
.getMessage());
180 exceptionThrown
= true;
182 assertTrue("No exception was thrown for array length", exceptionThrown
);
186 public void testInt64() throws EventSystemException
{
187 // First try to set a valid string array
188 Event evt
= new Event("TestEvent", true, template
);
189 evt
.setInt64Array("field4", new ArrayList(Arrays
.asList(123456789012l, 234567890123l)));
190 List
<Long
> ar
= evt
.getInt64Array("field4");
191 assertNotNull("string array was null", ar
);
192 assertEquals("length was incorrect", 2, ar
.size());
194 // Make sure we can serialize/deserialize it
195 byte[] serializedEvent
= evt
.serialize();
196 Event evt2
= new Event(serializedEvent
, true, template
);
198 List
<Long
> a2
= evt2
.getInt64Array("field4");
200 assertEquals("deserialized array length was incorrect", 2, a2
.size());
201 assertEquals("a2[0]", (long) a2
.get(0), 123456789012l);
202 assertEquals("a2[1]", (long) a2
.get(1), 234567890123l);
204 // Now try to set an invalid string array and make
205 // sure an exception is thrown.
206 boolean exceptionThrown
= false;
208 evt
.setInt64Array("field4", new ArrayList(Arrays
.asList(1, 2, 3,
213 catch (EventAttributeSizeException e
) {
214 if (log
.isDebugEnabled()) {
215 log
.debug(e
.getMessage());
217 exceptionThrown
= true;
219 assertTrue("No exception was thrown for array length", exceptionThrown
);
223 public void testUInt16() throws EventSystemException
{
224 // First try to set a valid string array
225 Event evt
= new Event("TestEvent", true, template
);
226 evt
.setUInt16Array("field5", new ArrayList(Arrays
.asList(1, 2, 3)));
227 List
<Integer
> ar
= evt
.getUInt16Array("field5");
228 assertNotNull("string array was null", ar
);
229 assertEquals("length was incorrect", 3, ar
.size());
231 // Make sure we can serialize/deserialize it
232 byte[] serializedEvent
= evt
.serialize();
233 Event evt2
= new Event(serializedEvent
, true, template
);
235 List
<Integer
> a2
= evt2
.getUInt16Array("field5");
237 assertEquals("deserialized array length was incorrect", 3, a2
.size());
239 // Now try to set an invalid string array and make
240 // sure an exception is thrown.
241 boolean exceptionThrown
= false;
243 evt
.setUInt16Array("field5", new ArrayList(Arrays
.asList(1, 2, 3,
248 catch (EventAttributeSizeException e
) {
249 if (log
.isDebugEnabled()) {
250 log
.debug(e
.getMessage());
252 exceptionThrown
= true;
254 assertTrue("No exception was thrown for array length", exceptionThrown
);
258 public void testUInt32() throws EventSystemException
{
259 // First try to set a valid string array
260 Event evt
= new Event("TestEvent", true, template
);
261 evt
.setUInt32Array("field6", new ArrayList(Arrays
.asList(1234567890l, 234567890l, 345678901l)));
262 List
<Long
> ar
= evt
.getUInt32Array("field6");
263 assertNotNull("string array was null", ar
);
264 assertEquals("length was incorrect", 3, ar
.size());
266 // Make sure we can serialize/deserialize it
267 byte[] serializedEvent
= evt
.serialize();
268 Event evt2
= new Event(serializedEvent
, true, template
);
270 List
<Long
> a2
= evt2
.getUInt32Array("field6");
272 assertEquals("deserialized array length was incorrect", 3, a2
.size());
273 assertEquals("a2[0]", (long) a2
.get(0), 1234567890);
274 assertEquals("a2[1]", (long) a2
.get(1), 234567890);
275 assertEquals("a2[2]", (long) a2
.get(2), 345678901);
277 // Now try to set an invalid string array and make
278 // sure an exception is thrown.
279 boolean exceptionThrown
= false;
281 evt
.setUInt32Array("field6", new ArrayList(Arrays
.asList(1, 2, 3,
286 catch (EventAttributeSizeException e
) {
287 if (log
.isDebugEnabled()) {
288 log
.debug(e
.getMessage());
290 exceptionThrown
= true;
292 assertTrue("No exception was thrown for array length", exceptionThrown
);
296 public void testUInt64() throws EventSystemException
{
297 // First try to set a valid string array
298 Event evt
= new Event("TestEvent", true, template
);
299 evt
.setUInt64Array("field7", new ArrayList(Arrays
.asList(123456789012l, 234567890123l)));
300 List ar
= evt
.getUInt64Array("field7");
301 assertNotNull("string array was null", ar
);
302 assertEquals("length was incorrect", 2, ar
.size());
304 // Make sure we can serialize/deserialize it
305 byte[] serializedEvent
= evt
.serialize();
306 Event evt2
= new Event(serializedEvent
, true, template
);
308 List a2
= evt2
.getUInt64Array("field7");
310 assertEquals("deserialized array length was incorrect", 2, a2
.size());
311 assertEquals("a2.get(0)", a2
.get(0), 123456789012l);
312 assertEquals("a2.get(1)", a2
.get(1), 234567890123l);
314 // Now try to set an invalid string array and make
315 // sure an exception is thrown.
316 boolean exceptionThrown
= false;
318 evt
.setUInt64Array("field7", new ArrayList(Arrays
.asList(1, 2, 3,
323 catch (EventAttributeSizeException e
) {
324 if (log
.isDebugEnabled()) {
325 log
.debug(e
.getMessage());
327 exceptionThrown
= true;
329 assertTrue("No exception was thrown for array length", exceptionThrown
);
333 public void testBooleanArray() throws EventSystemException
{
334 Event evt
= new Event("TestEvent", true, template
);
335 evt
.setBooleanArray("field8", new ArrayList(Arrays
.asList(true, false)));
336 List ar
= evt
.getBooleanArray("field8");
337 assertNotNull("boolean array was null", ar
);
338 assertEquals("length was incorrect", 2, ar
.size());
340 // Make sure we can serialize/deserialize it
341 byte[] serializedEvent
= evt
.serialize();
342 Event evt2
= new Event(serializedEvent
, true, template
);
344 List a2
= evt2
.getBooleanArray("field8");
346 assertEquals("deserialized array length was incorrect", 2, a2
.size());
347 assertEquals("a2.get(0)", a2
.get(0), true);
348 assertEquals("a2.get(1)", a2
.get(1), false);
352 public void testByteArray() throws EventSystemException
{
353 Event evt
= new Event("TestEvent", true, template
);
354 evt
.setByteArray("field9", new ArrayList(Arrays
.asList((byte) 0x1, (byte) 0x2)));
355 List ar
= evt
.getByteArray("field9");
356 assertNotNull("boolean array was null", ar
);
357 assertEquals("length was incorrect", 2, ar
.size());
359 // Make sure we can serialize/deserialize it
360 byte[] serializedEvent
= evt
.serialize();
361 Event evt2
= new Event(serializedEvent
, true, template
);
363 List a2
= evt2
.getByteArray("field9");
365 assertEquals("deserialized array length was incorrect", 2, a2
.size());
366 assertEquals("a2.get(0)", a2
.get(0), (byte) 0x1);
367 assertEquals("a2.get(1)", a2
.get(1), (byte) 0x2);
371 public void testDoubleArray() throws EventSystemException
{
373 Event evt
= new Event("TestEvent", true, template
);
374 evt
.setDoubleArray("field10", new ArrayList(Arrays
.asList(3.14159, 5.99999)));
375 List ar
= evt
.getDoubleArray("field10");
376 assertNotNull("double array was null", ar
);
377 assertEquals("number of fields is wrong", 2, ar
.size());
378 log
.debug("EVENT: " + evt
.toOneLineString());
379 // Make sure we can serialize/deserialize it
380 byte[] serializedEvent
= evt
.serialize();
381 Event evt2
= new Event(serializedEvent
, true, template
);
383 List
<Double
> a2
= evt2
.getDoubleArray("field10");
385 assertEquals("deserialized array length was incorrect", 2, a2
.size());
387 assertEquals("a2.get(0)", 3.14159, a2
.get(0), .00001);
388 assertEquals("a2.get(1)", 5.99999, a2
.get(1), .00001);
392 public void testFloatArray() throws EventSystemException
{
393 Event evt
= new Event("TestEvent", true, template
);
394 evt
.setFloatArray("field11", new ArrayList(Arrays
.asList(new Float(1.11), new Float(2.22))));
395 List ar
= evt
.getFloatArray("field11");
396 assertNotNull("Float array was null", ar
);
397 assertEquals("number of fields is wrong ", 2, ar
.size());
399 byte[] serializedEvent
= evt
.serialize();
400 Event evt2
= new Event(serializedEvent
, true, template
);
402 List
<Float
> a2
= evt2
.getFloatArray("field11");
404 assertEquals("deserialized array length was incorrect", 2, a2
.size());
405 assertEquals("a2.get(0)", (float) 1.11, a2
.get(0), .01);
406 assertEquals("a2.get(1)", (float) 2.22, a2
.get(1), .01);
410 public void testIPV4Array() throws EventSystemException
, UnknownHostException
{
411 Event evt
= new Event("TestEvent", true, template
);
412 evt
.setIPV4AddressArray("field12", new ArrayList
413 (Arrays
.asList(InetAddress
.getByName("yp.com"),
414 InetAddress
.getByName("yahoo.com"))));
415 List ar
= evt
.getIPV4Array("field12");
416 assertNotNull("IPV4 array was null", ar
);
417 assertEquals("number of fields is wrong ", 2, ar
.size());
419 byte[] serializedEvent
= evt
.serialize();
420 Event evt2
= new Event(serializedEvent
, true, template
);
422 List
<InetAddress
> a2
= evt2
.getFloatArray("field12");
424 assertEquals("deserialized array length was incorrect", 2, a2
.size());
425 assertTrue("a2.get(0)", a2
.get(0).getHostName().endsWith(".yp.atti.com"));
426 assertTrue("a2.get(1)", a2
.get(1).getHostName().endsWith(".yahoo.com"));