/*
* Copyright (c) 2008-2012 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.model;
import java.net.URI;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.emc.storageos.db.client.URIUtil;
/**
* Tests the GenericSerializer class
*/
public class GenericSerializerTest {
private static Logger _log = LoggerFactory.getLogger(GenericSerializerTest.class);
private GenericSerializer serializer = new GenericSerializer();
@Test
public void testSerializeDeserialize() {
// only longs
long value1 = Long.MIN_VALUE;
long value2 = Long.MAX_VALUE;
byte[] value1_enc = serializer.encodeVariantLong(value1);
byte[] value2_enc = serializer.encodeVariantLong(value2);
long value1_dec = serializer.decodeVariantLong(value1_enc);
Assert.assertEquals(value1, value1_dec);
long value2_dec = serializer.decodeVariantLong(value2_enc);
Assert.assertEquals(value2, value2_dec);
// try full event obj
String testStr = "{ 'acknowledged_time': 0,\n" +
" 'coalesce_instanceid': None,\n" +
" 'devid': 0,\n" +
" 'end': 0,\n" +
" 'event_id': 500010005,\n" +
" 'extreme_severity': 2,\n" +
" 'extreme_value': 0.0,\n" +
" 'instance_id': '1.9',\n" +
" 'is_coalescing': 0,\n" +
" 'last_save': 1331219074,\n" +
" 'latest_time': 1331219069,\n" +
" 'message': 'SmartQuotas Report failed: Failed to process report schedule',\n" +
" 'severity': 2,\n" +
" 'specifier': { 'devid': 0, 'lnn': 0, 'val': 0.0},\n" +
" 'start': 1331219069,\n" +
" 'update_count': None,\n" +
" 'value': 0.0}";
URI uri = URIUtil.createId(AuthnProvider.class);
long time = System.currentTimeMillis();
String id = "eventid12345678";
Event e = new Event();
e.setTimeInMillis(time);
e.setResourceId(uri);
e.setEventId(id);
e.setExtensions(testStr);
byte[] encoded = serializer.toByteArray(Event.class, e);
Assert.assertTrue(encoded.length > 0);
Event e1 = serializer.fromByteArray(Event.class, encoded);
Assert.assertTrue(e1 != null);
Assert.assertEquals(e.getTimeInMillis(), e1.getTimeInMillis());
Assert.assertEquals(e.getResourceId(), e1.getResourceId());
Assert.assertEquals(e.getEventId(), e1.getEventId());
Assert.assertEquals(e.getExtensions(), e1.getExtensions());
byte[] encoded2 = serializer.toByteArray(Event.class, e1);
Assert.assertEquals(encoded.length, encoded2.length);
}
}