@Test
public void testSerialization() throws Exception {
assertSerializedEdit(TransactionEdit.createAborted(1L, TransactionType.SHORT, new long[0]));
assertSerializedEdit(TransactionEdit.createAborted(1L, TransactionType.SHORT, new long[]{ 2L, 3L }));
assertSerializedEdit(TransactionEdit.createAborted(1L, TransactionType.LONG, new long[0]));
assertSerializedEdit(TransactionEdit.createAborted(1L, TransactionType.LONG, new long[]{ 2L, 3L }));
assertSerializedEdit(TransactionEdit.createCheckpoint(2L, 1L));
assertSerializedEdit(TransactionEdit.createCommitted(1L, Sets.<ChangeId>newHashSet(), 2L, false));
assertSerializedEdit(TransactionEdit.createCommitted(1L, Sets.<ChangeId>newHashSet(), 2L, true));
assertSerializedEdit(TransactionEdit.createCommitted(1L,
Sets.newHashSet(new ChangeId(new byte[]{'a', 'b', 'c'})), 2L, false));
assertSerializedEdit(TransactionEdit.createCommitted(1L,
Sets.newHashSet(new ChangeId(new byte[]{ 'a', 'b', 'c' }), new ChangeId(new byte[]{ 'd', 'e', 'f' })),
2L, true));
assertSerializedEdit(TransactionEdit.createCommitting(1L, Sets.<ChangeId>newHashSet()));
assertSerializedEdit(TransactionEdit.createCommitting(1L,
Sets.newHashSet(new ChangeId(new byte[]{'a', 'b', 'c'}))));
assertSerializedEdit(TransactionEdit.createCommitting(1L,
Sets.newHashSet(new ChangeId(new byte[]{'a', 'b', 'c'}), new ChangeId(new byte[]{'d', 'e', 'f'}))));
assertSerializedEdit(TransactionEdit.createInvalid(1L));
assertSerializedEdit(TransactionEdit.createMoveWatermark(10L));
assertSerializedEdit(TransactionEdit.createStarted(2L, 1L, System.currentTimeMillis() + 1000,
TransactionType.SHORT));
assertSerializedEdit(TransactionEdit.createStarted(2L, 1L, System.currentTimeMillis() + 10000,
TransactionType.LONG));
assertSerializedEdit(TransactionEdit.createTruncateInvalidTx(Sets.newHashSet(new Long(1))));
assertSerializedEdit(TransactionEdit.createTruncateInvalidTx(
Sets.newHashSet(new Long(1), new Long(2), new Long(3))));
assertSerializedEdit(TransactionEdit.createTruncateInvalidTxBefore(System.currentTimeMillis()));
}