11using Microsoft . Extensions . Logging ;
22using Microsoft . Extensions . Options ;
3+ using Microsoft . Extensions . Time . Testing ;
34using Orleans . Configuration ;
45using Orleans . Runtime . MembershipService ;
56using Xunit ;
@@ -26,6 +27,7 @@ public class MembershipTableManagerTests
2627 private readonly IFatalErrorHandler fatalErrorHandler ;
2728 private readonly IMembershipGossiper membershipGossiper ;
2829 private readonly SiloLifecycleSubject lifecycle ;
30+ private readonly FakeTimeProvider timeProvider ;
2931
3032 public MembershipTableManagerTests ( ITestOutputHelper output )
3133 {
@@ -42,6 +44,7 @@ public MembershipTableManagerTests(ITestOutputHelper output)
4244 this . fatalErrorHandler . IsUnexpected ( default ) . ReturnsForAnyArgs ( true ) ;
4345 this . membershipGossiper = Substitute . For < IMembershipGossiper > ( ) ;
4446 this . lifecycle = new SiloLifecycleSubject ( this . loggerFactory . CreateLogger < SiloLifecycleSubject > ( ) ) ;
47+ this . timeProvider = new FakeTimeProvider ( ) ;
4548 }
4649
4750 /// <summary>
@@ -223,7 +226,7 @@ public async Task MembershipTableManager_Restarted()
223226 fatalErrorHandler : this . fatalErrorHandler ,
224227 gossiper : this . membershipGossiper ,
225228 log : this . loggerFactory . CreateLogger < MembershipTableManager > ( ) ,
226- timerFactory : new AsyncTimerFactory ( this . loggerFactory ) ,
229+ timerFactory : new AsyncTimerFactory ( this . loggerFactory , this . timeProvider ) ,
227230 this . lifecycle ) ;
228231
229232 // Validate that the initial snapshot is valid and contains the local silo.
@@ -319,7 +322,7 @@ public async Task MembershipTableManager_Superseded()
319322 fatalErrorHandler : this . fatalErrorHandler ,
320323 gossiper : this . membershipGossiper ,
321324 log : this . loggerFactory . CreateLogger < MembershipTableManager > ( ) ,
322- timerFactory : new AsyncTimerFactory ( this . loggerFactory ) ,
325+ timerFactory : new AsyncTimerFactory ( this . loggerFactory , this . timeProvider ) ,
323326 this . lifecycle ) ;
324327
325328 ( ( ILifecycleParticipant < ISiloLifecycle > ) manager ) . Participate ( this . lifecycle ) ;
@@ -361,7 +364,7 @@ public async Task MembershipTableManager_AlreadyDeclaredDead()
361364 fatalErrorHandler : this . fatalErrorHandler ,
362365 gossiper : this . membershipGossiper ,
363366 log : this . loggerFactory . CreateLogger < MembershipTableManager > ( ) ,
364- timerFactory : new AsyncTimerFactory ( this . loggerFactory ) ,
367+ timerFactory : new AsyncTimerFactory ( this . loggerFactory , this . timeProvider ) ,
365368 this . lifecycle ) ;
366369
367370 ( ( ILifecycleParticipant < ISiloLifecycle > ) manager ) . Participate ( this . lifecycle ) ;
@@ -399,7 +402,7 @@ public async Task MembershipTableManager_DeclaredDead_AfterJoining()
399402 fatalErrorHandler : this . fatalErrorHandler ,
400403 gossiper : this . membershipGossiper ,
401404 log : this . loggerFactory . CreateLogger < MembershipTableManager > ( ) ,
402- timerFactory : new AsyncTimerFactory ( this . loggerFactory ) ,
405+ timerFactory : new AsyncTimerFactory ( this . loggerFactory , this . timeProvider ) ,
403406 siloLifecycle : this . lifecycle ) ;
404407 ( ( ILifecycleParticipant < ISiloLifecycle > ) manager ) . Participate ( this . lifecycle ) ;
405408 await this . lifecycle . OnStart ( ) ;
@@ -445,7 +448,7 @@ public async Task MembershipTableManager_TrySuspectOrKill_ButIAmKill()
445448 fatalErrorHandler : this . fatalErrorHandler ,
446449 gossiper : this . membershipGossiper ,
447450 log : this . loggerFactory . CreateLogger < MembershipTableManager > ( ) ,
448- timerFactory : new AsyncTimerFactory ( this . loggerFactory ) ,
451+ timerFactory : new AsyncTimerFactory ( this . loggerFactory , this . timeProvider ) ,
449452 siloLifecycle : this . lifecycle ) ;
450453 ( ( ILifecycleParticipant < ISiloLifecycle > ) manager ) . Participate ( this . lifecycle ) ;
451454 await this . lifecycle . OnStart ( ) ;
@@ -487,7 +490,7 @@ public async Task MembershipTableManager_TrySuspectOrKill_AlreadyDead()
487490 fatalErrorHandler : this . fatalErrorHandler ,
488491 gossiper : this . membershipGossiper ,
489492 log : this . loggerFactory . CreateLogger < MembershipTableManager > ( ) ,
490- timerFactory : new AsyncTimerFactory ( this . loggerFactory ) ,
493+ timerFactory : new AsyncTimerFactory ( this . loggerFactory , this . timeProvider ) ,
491494 siloLifecycle : this . lifecycle ) ;
492495 ( ( ILifecycleParticipant < ISiloLifecycle > ) manager ) . Participate ( this . lifecycle ) ;
493496 await this . lifecycle . OnStart ( ) ;
@@ -519,7 +522,7 @@ public async Task MembershipTableManager_TrySuspectOrKill_DeclareDead_SmallClust
519522 fatalErrorHandler : this . fatalErrorHandler ,
520523 gossiper : this . membershipGossiper ,
521524 log : this . loggerFactory . CreateLogger < MembershipTableManager > ( ) ,
522- timerFactory : new AsyncTimerFactory ( this . loggerFactory ) ,
525+ timerFactory : new AsyncTimerFactory ( this . loggerFactory , this . timeProvider ) ,
523526 siloLifecycle : this . lifecycle ) ;
524527 ( ( ILifecycleParticipant < ISiloLifecycle > ) manager ) . Participate ( this . lifecycle ) ;
525528 await this . lifecycle . OnStart ( ) ;
@@ -561,7 +564,7 @@ public async Task MembershipTableManager_TrySuspectOrKill_ClocksNotSynchronized(
561564 fatalErrorHandler : this . fatalErrorHandler ,
562565 gossiper : this . membershipGossiper ,
563566 log : this . loggerFactory . CreateLogger < MembershipTableManager > ( ) ,
564- timerFactory : new AsyncTimerFactory ( this . loggerFactory ) ,
567+ timerFactory : new AsyncTimerFactory ( this . loggerFactory , this . timeProvider ) ,
565568 siloLifecycle : this . lifecycle ) ;
566569
567570 // Rig the local clock.
@@ -634,7 +637,7 @@ public async Task MembershipTableManager_TrySuspectOrKill_DeclareDead_LargerClus
634637 fatalErrorHandler : this . fatalErrorHandler ,
635638 gossiper : this . membershipGossiper ,
636639 log : this . loggerFactory . CreateLogger < MembershipTableManager > ( ) ,
637- timerFactory : new AsyncTimerFactory ( this . loggerFactory ) ,
640+ timerFactory : new AsyncTimerFactory ( this . loggerFactory , this . timeProvider ) ,
638641 siloLifecycle : this . lifecycle ) ;
639642 ( ( ILifecycleParticipant < ISiloLifecycle > ) manager ) . Participate ( this . lifecycle ) ;
640643 await this . lifecycle . OnStart ( ) ;
0 commit comments