/** * Estimates the number of operations in this queue. * * In order to provide a bounded execution time the result is an underestimate * of the true number of queued operations. */ public int estimateSize() { int estimate = 0; // Sum delta size for a fixed number of deltas at the start. int headDeltasToCount = ESTIMATE_DELTAS_TO_COUNT; Iterator<Item> itr = queue.iterator(); while ((headDeltasToCount > 0) && itr.hasNext()) { estimate += itr.next().opSequence.size(); --headDeltasToCount; } if (itr.hasNext()) { // Add size of the last delta as new ops are likely to be pushed into it. estimate += queue.getLast().opSequence.size(); // Add one for each other delta in the queue. if (queue.size() > (ESTIMATE_DELTAS_TO_COUNT + 1)) { estimate += queue.size() - (ESTIMATE_DELTAS_TO_COUNT + 1); } } return estimate; }
public void optimise() { int startSize = size(); if (startSize == 1) { return;
public void testOptimiseEmptyDoesNothing() { MergingSequence delta = new MergingSequence(); delta.optimise(); assertEquals(0, delta.size()); }
public void testOptimiseEmptyDoesNothing() { MergingSequence delta = new MergingSequence(); delta.optimise(); assertEquals(0, delta.size()); }
public void testOptimisesDeltasWithNonDocOps() throws OperationException { MergingSequence delta = new MergingSequence(); delta.addAll(Arrays.asList( makeBlipContentOp("a", 2), makeBlipContentOp("a", 1), makeOtherBlipOp("a", 3) )); delta.optimise(); assertEquals(2, delta.size()); }
public void testOptimisesOpsOnSeparateBlips1() throws OperationException { MergingSequence delta = new MergingSequence(); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), makeBlipContentOp("b", 3) )); delta.optimise(); assertEquals(2, delta.size()); }
public void testOptimisesDeltasWithNonDocOps() throws OperationException { MergingSequence delta = new MergingSequence(); delta.addAll(Arrays.asList( makeBlipContentOp("a", 2), makeBlipContentOp("a", 1), makeOtherBlipOp("a", 3) )); delta.optimise(); assertEquals(2, delta.size()); }
public void testOptimisesOpsOnSeparateBlips1() throws OperationException { MergingSequence delta = new MergingSequence(); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), makeBlipContentOp("b", 3) )); delta.optimise(); assertEquals(2, delta.size()); }
public void testOptimisesDocumentOpsOnSameBlipWithLastTimestamp() throws OperationException { MergingSequence delta = new MergingSequence(); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), makeBlipContentOp("a", 3) )); delta.optimise(); assertEquals(1, delta.size()); assertTimestamp(3, delta); }
public void testOptimisesDocumentOpsOnSameBlipWithLastTimestamp() throws OperationException { MergingSequence delta = new MergingSequence(); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), makeBlipContentOp("a", 3) )); delta.optimise(); assertEquals(1, delta.size()); assertTimestamp(3, delta); }
public void testOptimisesDeltasWithNonBlipOps1() throws OperationException { MergingSequence delta = new MergingSequence(); ParticipantId jim = new ParticipantId("jim"); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), new AddParticipant(new WaveletOperationContext(jim, 5L, 1L), jim) )); delta.optimise(); assertEquals(2, delta.size()); }
public void testOptimisesDeltasWithNonBlipOps1() throws OperationException { MergingSequence delta = new MergingSequence(); ParticipantId jim = new ParticipantId("jim"); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), new AddParticipant(new WaveletOperationContext(jim, 5L, 1L), jim) )); delta.optimise(); assertEquals(2, delta.size()); }
public void testOptimisesOpsOnSeparateBlips2() throws OperationException { MergingSequence delta = new MergingSequence(); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), makeBlipContentOp("b", 3), makeBlipContentOp("b", 4), makeBlipContentOp("b", 5), makeBlipContentOp("a", 6), makeBlipContentOp("a", 7) )); delta.optimise(); assertEquals(3, delta.size()); }
public void testOptimisesOpsOnSeparateBlips2() throws OperationException { MergingSequence delta = new MergingSequence(); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), makeBlipContentOp("b", 3), makeBlipContentOp("b", 4), makeBlipContentOp("b", 5), makeBlipContentOp("a", 6), makeBlipContentOp("a", 7) )); delta.optimise(); assertEquals(3, delta.size()); }
public void testOptimisesDeltasWithNonBlipOps2() throws OperationException { MergingSequence delta = new MergingSequence(); ParticipantId jim = new ParticipantId("jim"); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), new AddParticipant(new WaveletOperationContext(jim, 5L, 1L), jim), makeBlipContentOp("a", 4), makeBlipContentOp("a", 5) )); delta.optimise(); assertEquals(3, delta.size()); }
public void testOptimisesDeltasWithNonBlipOps2() throws OperationException { MergingSequence delta = new MergingSequence(); ParticipantId jim = new ParticipantId("jim"); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), new AddParticipant(new WaveletOperationContext(jim, 5L, 1L), jim), makeBlipContentOp("a", 4), makeBlipContentOp("a", 5) )); delta.optimise(); assertEquals(3, delta.size()); }
public void testOptimisesDeltasWithNonBlipOps3() throws OperationException { MergingSequence delta = new MergingSequence(); ParticipantId jim = new ParticipantId("jim"); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), new AddParticipant(new WaveletOperationContext(jim, 5L, 1L), jim), makeBlipContentOp("b", 4), makeBlipContentOp("b", 5) )); delta.optimise(); assertEquals(3, delta.size()); }
public void testOptimisesDeltasWithNonBlipOps3() throws OperationException { MergingSequence delta = new MergingSequence(); ParticipantId jim = new ParticipantId("jim"); delta.addAll(Arrays.asList( makeBlipContentOp("a", 1), makeBlipContentOp("a", 2), new AddParticipant(new WaveletOperationContext(jim, 5L, 1L), jim), makeBlipContentOp("b", 4), makeBlipContentOp("b", 5) )); delta.optimise(); assertEquals(3, delta.size()); }