DbusEventBuffer dbusBuf =
new DbusEventBuffer(getConfig(10000, 10000, 320, 5000, AllocationPolicy.HEAP_MEMORY,
QueuePolicy.OVERWRITE_ON_WRITE, AssertLevel.ALL));
//dbusBuf.getLog().setLevel(Level.DEBUG);
DbusEventGenerator generator = new DbusEventGenerator();
Vector<DbusEvent> events = new Vector<DbusEvent>();
//event size: 10 + 61 = 71
//window size: 5 * 71 + 61 = 416
//layout: [61 + 23 * 416 + 5 * 71 = 9984 ] <WrapAround> [ 61 + 22 * 416 + 2 * 71 + 61 = 9416 ]
// [ H=Gen:0,Ofs:0, T=Gen:0,Ofs:9984, L=10000 ]
// [ H=Gen:0,Ofs:9629, T=Gen:1,Ofs:9416, L=9984 ]
generator.generateEvents(232, 5, 100, 10, events);
// Add events to the EventBuffer
DbusEventAppender appender = new DbusEventAppender(events,dbusBuf,null);
appender.run();
log.info("Dbus Event Buffer is :" + dbusBuf);
log.info("SCNIndex is :" + dbusBuf.getScnIndex());
final BufferPosition headPos = new BufferPosition(dbusBuf.getHead(),
dbusBuf.getBufferPositionParser(),
dbusBuf.getBuffer());
final BufferPosition tailPos = new BufferPosition(dbusBuf.getTail(),
dbusBuf.getBufferPositionParser(),
dbusBuf.getBuffer());
Assert.assertEquals(0, headPos.bufferGenId());
Assert.assertEquals(0, headPos.bufferIndex());
Assert.assertEquals(9629, headPos.bufferOffset());
Assert.assertEquals(1, tailPos.bufferGenId());
Assert.assertEquals(0, tailPos.bufferIndex());
Assert.assertEquals(9416, tailPos.bufferOffset());
Assert.assertEquals(9984, dbusBuf.getBuffer()[0].limit());
dbusBuf.getScnIndex().assertHeadPosition(dbusBuf.getHead());
final BufferPosition lastWinStart = new BufferPosition(61 + 22 * 416,
dbusBuf.getBufferPositionParser(),
dbusBuf.getBuffer());
dbusBuf.getScnIndex().assertLastWrittenPos(lastWinStart);
long lastScn = events.get(events.size() - 1).sequence();
generator = new DbusEventGenerator(lastScn - 1);
events.clear();
//event size: 10 + 61 = 71
generator.generateEvents(2, 2, 75, 10, events);
//intended layout: append 2 * 71 = 142 bytes
// [ H=Gen:0,Ofs:9629, T=Gen:1,Ofs:9558, L=9984 ]
lastScn = events.get(events.size() - 1).sequence();
generator = new DbusEventGenerator(lastScn - 1 );
//event size: 500 + 61 = 561
//partial window size: 561 = 622
generator.generateEvents(1, 1, 800, 500, events);
//intended layout: append 561 bytes;
// [ H=Gen:1,Ofs:893, T=Gen:2,Ofs:561, L=9558 ]
// head moves to first window after 561: 61 + 2 * 416 = 893 > 561
//Set up the ReadChannel with new events