public virtual void TestInit()
 {
     foreach (long now in GetTimestamps())
     {
         BPServiceActor.Scheduler scheduler = MakeMockScheduler(now);
         NUnit.Framework.Assert.IsTrue(scheduler.IsHeartbeatDue(now));
         NUnit.Framework.Assert.IsTrue(scheduler.IsBlockReportDue());
     }
 }
 public virtual void TestScheduleBlockReportImmediate()
 {
     foreach (long now in GetTimestamps())
     {
         BPServiceActor.Scheduler scheduler = MakeMockScheduler(now);
         scheduler.ScheduleBlockReport(0);
         NUnit.Framework.Assert.IsTrue(scheduler.resetBlockReportTime);
         Assert.AssertThat(scheduler.nextBlockReportTime, IS.Is(now));
     }
 }
 private BPServiceActor.Scheduler MakeMockScheduler(long now)
 {
     Log.Info("Using now = " + now);
     BPServiceActor.Scheduler mockScheduler = Org.Mockito.Mockito.Spy(new BPServiceActor.Scheduler
                                                                          (HeartbeatIntervalMs, BlockReportIntervalMs));
     Org.Mockito.Mockito.DoReturn(now).When(mockScheduler).MonotonicNow();
     mockScheduler.nextBlockReportTime = now;
     mockScheduler.nextHeartbeatTime   = now;
     return(mockScheduler);
 }
 public virtual void TestScheduleNextBlockReport2()
 {
     foreach (long now in GetTimestamps())
     {
         BPServiceActor.Scheduler scheduler = MakeMockScheduler(now);
         scheduler.resetBlockReportTime = false;
         scheduler.ScheduleNextBlockReport();
         Assert.AssertThat(scheduler.nextBlockReportTime, IS.Is(now + BlockReportIntervalMs
                                                                ));
     }
 }
 public virtual void TestScheduleNextBlockReport()
 {
     foreach (long now in GetTimestamps())
     {
         BPServiceActor.Scheduler scheduler = MakeMockScheduler(now);
         NUnit.Framework.Assert.IsTrue(scheduler.resetBlockReportTime);
         scheduler.ScheduleNextBlockReport();
         NUnit.Framework.Assert.IsTrue(scheduler.nextBlockReportTime - (now + BlockReportIntervalMs
                                                                        ) < 0);
     }
 }
 public virtual void TestScheduleBlockReportDelayed()
 {
     foreach (long now in GetTimestamps())
     {
         BPServiceActor.Scheduler scheduler = MakeMockScheduler(now);
         long delayMs = 10;
         scheduler.ScheduleBlockReport(delayMs);
         NUnit.Framework.Assert.IsTrue(scheduler.resetBlockReportTime);
         NUnit.Framework.Assert.IsTrue(scheduler.nextBlockReportTime - now >= 0);
         NUnit.Framework.Assert.IsTrue(scheduler.nextBlockReportTime - (now + delayMs) < 0
                                       );
     }
 }
 public virtual void TestScheduleDelayedHeartbeat()
 {
     foreach (long now in GetTimestamps())
     {
         BPServiceActor.Scheduler scheduler = MakeMockScheduler(now);
         scheduler.ScheduleNextHeartbeat();
         NUnit.Framework.Assert.IsFalse(scheduler.IsHeartbeatDue(now));
         // Simulate a delayed heartbeat e.g. due to slow processing by NN.
         scheduler.nextHeartbeatTime = now - (HeartbeatIntervalMs * 10);
         scheduler.ScheduleNextHeartbeat();
         // Ensure that the next heartbeat is not due immediately.
         NUnit.Framework.Assert.IsFalse(scheduler.IsHeartbeatDue(now));
     }
 }
 public virtual void TestScheduleNextBlockReport3()
 {
     foreach (long now in GetTimestamps())
     {
         BPServiceActor.Scheduler scheduler = MakeMockScheduler(now);
         scheduler.resetBlockReportTime = false;
         // Make it look like the block report was scheduled to be sent between 1-3
         // intervals ago but sent just now.
         long blockReportDelay = BlockReportIntervalMs + random.Next(2 * (int)BlockReportIntervalMs
                                                                     );
         long origBlockReportTime = now - blockReportDelay;
         scheduler.nextBlockReportTime = origBlockReportTime;
         scheduler.ScheduleNextBlockReport();
         NUnit.Framework.Assert.IsTrue(scheduler.nextBlockReportTime - now < BlockReportIntervalMs
                                       );
         NUnit.Framework.Assert.IsTrue(((scheduler.nextBlockReportTime - origBlockReportTime
                                         ) % BlockReportIntervalMs) == 0);
     }
 }