public virtual void TestWriteEdits() { EditLogOutputStream stm = CreateLogSegment(); QJMTestUtil.WriteOp(stm, 1); QJMTestUtil.WriteOp(stm, 2); stm.SetReadyToFlush(); QJMTestUtil.WriteOp(stm, 3); // The flush should log txn 1-2 FutureReturns(null).When(spyLoggers[0]).SendEdits(Matchers.AnyLong(), Matchers.Eq (1L), Matchers.Eq(2), Org.Mockito.Mockito.Any <byte[]>()); FutureReturns(null).When(spyLoggers[1]).SendEdits(Matchers.AnyLong(), Matchers.Eq (1L), Matchers.Eq(2), Org.Mockito.Mockito.Any <byte[]>()); FutureReturns(null).When(spyLoggers[2]).SendEdits(Matchers.AnyLong(), Matchers.Eq (1L), Matchers.Eq(2), Org.Mockito.Mockito.Any <byte[]>()); stm.Flush(); // Another flush should now log txn #3 stm.SetReadyToFlush(); FutureReturns(null).When(spyLoggers[0]).SendEdits(Matchers.AnyLong(), Matchers.Eq (3L), Matchers.Eq(1), Org.Mockito.Mockito.Any <byte[]>()); FutureReturns(null).When(spyLoggers[1]).SendEdits(Matchers.AnyLong(), Matchers.Eq (3L), Matchers.Eq(1), Org.Mockito.Mockito.Any <byte[]>()); FutureReturns(null).When(spyLoggers[2]).SendEdits(Matchers.AnyLong(), Matchers.Eq (3L), Matchers.Eq(1), Org.Mockito.Mockito.Any <byte[]>()); stm.Flush(); }
public virtual void TestWriteEditsOneSlow() { EditLogOutputStream stm = CreateLogSegment(); QJMTestUtil.WriteOp(stm, 1); stm.SetReadyToFlush(); // Make the first two logs respond immediately FutureReturns(null).When(spyLoggers[0]).SendEdits(Matchers.AnyLong(), Matchers.Eq (1L), Matchers.Eq(1), Org.Mockito.Mockito.Any <byte[]>()); FutureReturns(null).When(spyLoggers[1]).SendEdits(Matchers.AnyLong(), Matchers.Eq (1L), Matchers.Eq(1), Org.Mockito.Mockito.Any <byte[]>()); // And the third log not respond SettableFuture <Void> slowLog = SettableFuture.Create(); Org.Mockito.Mockito.DoReturn(slowLog).When(spyLoggers[2]).SendEdits(Matchers.AnyLong (), Matchers.Eq(1L), Matchers.Eq(1), Org.Mockito.Mockito.Any <byte[]>()); stm.Flush(); Org.Mockito.Mockito.Verify(spyLoggers[0]).SetCommittedTxId(1L); }