@Test
public void testSerDser() {
final String tableName = "testTable";
final IMetadataManager metadataManager = new MemoryMetadataManager();
final SinkStatManager sinkStatManager1 = new SinkStatManager(tableName, metadataManager);
sinkStatManager1.init();
Assert.assertEquals(0, sinkStatManager1.getAvgRecordSize());
Assert.assertFalse(sinkStatManager1.isStatHistoryAvailable());
final int avgRecordSize1 = 30;
sinkStatManager1.getCurrentStat().put(SinkStat.AVG_RECORD_SIZE, Integer.toString(avgRecordSize1));
Assert.assertEquals(0, metadataManager.getAllKeys().size());
sinkStatManager1.persist();
Assert.assertEquals(1, metadataManager.getAllKeys().size());
final SinkStatManager sinkStatManager2 = new SinkStatManager(tableName, metadataManager);
sinkStatManager2.init();
Assert.assertEquals(avgRecordSize1, sinkStatManager2.getAvgRecordSize());
final int avgRecordSize2 = 20;
sinkStatManager2.getCurrentStat().put(SinkStat.AVG_RECORD_SIZE, Integer.toString(avgRecordSize2));
sinkStatManager2.persist();
final SinkStatManager sinkStatManager3 = new SinkStatManager(tableName, metadataManager);
sinkStatManager3.init();
Assert.assertEquals((avgRecordSize1 + avgRecordSize2) / 2, sinkStatManager3.getAvgRecordSize());
}