@@ -53,6 +53,29 @@ public void Current_WhenLocalSiloIsNotActive_ResolvesTypeFromLocalManifest()
5353 Assert . Equal ( TestGrainType , typeResolver . GetGrainType ( TestInterfaceType ) ) ;
5454 }
5555
56+ [ Fact ]
57+ public void Current_WhenLocalSiloBecomesActive_IncludesLocalManifestSynchronously ( )
58+ {
59+ var localSilo = CreateSiloAddress ( 11111 , 1 ) ;
60+ using var membership = new TestClusterMembershipService ( CreateMembershipSnapshot (
61+ 1 ,
62+ ( localSilo , SiloStatus . Created ) ) ) ;
63+ var grainFactory = CreateGrainFactory ( CreateSiloAddress ( 11112 , 1 ) , CreateGrainManifest ( ) ) ;
64+ var provider = CreateClusterManifestProvider ( localSilo , membership , grainFactory ) ;
65+
66+ Assert . DoesNotContain ( localSilo , provider . Current . Silos . Keys ) ;
67+
68+ membership . Update ( CreateMembershipSnapshot (
69+ 2 ,
70+ ( localSilo , SiloStatus . Active ) ) ) ;
71+
72+ var current = provider . Current ;
73+
74+ Assert . Equal ( new MajorMinorVersion ( 2 , 0 ) , current . Version ) ;
75+ Assert . Contains ( localSilo , current . Silos . Keys ) ;
76+ Assert . Contains ( provider . LocalGrainManifest , current . AllGrainManifests ) ;
77+ }
78+
5679 [ Fact ]
5780 public async Task Current_WhenMembershipVersionAdvances_PrunesNonActiveSilosAtFirstMinorVersion ( )
5881 {
@@ -91,7 +114,7 @@ public async Task Current_WhenMembershipVersionAdvances_PrunesNonActiveSilosAtFi
91114 }
92115
93116 [ Fact ]
94- public async Task Current_WhenRemoteSiloBecomesActive_PublishesPrunedManifestBeforeRemoteFetch ( )
117+ public async Task Current_WhenRemoteSiloBecomesActive_IncludesLocalManifestBeforeRemoteFetch ( )
95118 {
96119 var localSilo = CreateSiloAddress ( 11111 , 1 ) ;
97120 var remoteSilo = CreateSiloAddress ( 11112 , 1 ) ;
@@ -105,7 +128,7 @@ public async Task Current_WhenRemoteSiloBecomesActive_PublishesPrunedManifestBef
105128
106129 var current = provider . Current ;
107130 Assert . Equal ( new MajorMinorVersion ( 1 , 0 ) , current . Version ) ;
108- Assert . DoesNotContain ( localSilo , current . Silos . Keys ) ;
131+ Assert . Contains ( localSilo , current . Silos . Keys ) ;
109132 Assert . DoesNotContain ( remoteSilo , current . Silos . Keys ) ;
110133 Assert . Contains ( provider . LocalGrainManifest , current . AllGrainManifests ) ;
111134
@@ -116,7 +139,7 @@ public async Task Current_WhenRemoteSiloBecomesActive_PublishesPrunedManifestBef
116139
117140 var pruned = provider . Current ;
118141 Assert . Equal ( new MajorMinorVersion ( 2 , 0 ) , pruned . Version ) ;
119- Assert . DoesNotContain ( localSilo , pruned . Silos . Keys ) ;
142+ Assert . Contains ( localSilo , pruned . Silos . Keys ) ;
120143 Assert . DoesNotContain ( remoteSilo , pruned . Silos . Keys ) ;
121144
122145 var lifecycle = await StartAsync ( provider ) ;
@@ -183,7 +206,11 @@ private static ClusterManifestProvider CreateClusterManifestProvider(
183206 . AddSingleton ( grainFactory )
184207 . BuildServiceProvider ( ) ;
185208
209+ var localSiloDetails = Substitute . For < ILocalSiloDetails > ( ) ;
210+ localSiloDetails . SiloAddress . Returns ( localSilo ) ;
211+
186212 return new ClusterManifestProvider (
213+ localSiloDetails ,
187214 siloManifestProvider ,
188215 membership ,
189216 Substitute . For < IFatalErrorHandler > ( ) ,
0 commit comments