@@ -168,11 +168,11 @@ public async Task ReplicaIdOffsetIfCalculatedCorrectly(Task<IFunctionStore> stor
168168 await watchdog3 . Initialize ( ) ;
169169
170170 await watchdog3 . PerformIteration ( ) ;
171- replicaId3 . Offset . ShouldBe ( 2 ) ;
171+ replicaId3 . Offset . ShouldBe ( ( ulong ) 2 ) ;
172172 await watchdog2 . PerformIteration ( ) ;
173- replicaId2 . Offset . ShouldBe ( 1 ) ;
173+ replicaId2 . Offset . ShouldBe ( ( ulong ) 1 ) ;
174174 await watchdog1 . PerformIteration ( ) ;
175- replicaId1 . Offset . ShouldBe ( 0 ) ;
175+ replicaId1 . Offset . ShouldBe ( ( ulong ) 0 ) ;
176176 }
177177
178178 public abstract Task ReplicaIdOffsetIsUpdatedWhenNodeIsAddedAndDeleted ( ) ;
@@ -190,38 +190,38 @@ public async Task ReplicaIdOffsetIsUpdatedWhenNodeIsAddedAndDeleted(Task<IFuncti
190190 var watchdog3 = new ReplicaWatchdog ( cluster3 , functionStore , checkFrequency : TimeSpan . FromHours ( 1 ) , default ( UnhandledExceptionHandler ) ! ) ;
191191
192192 await watchdog3 . Initialize ( ) ;
193- cluster3 . Offset . ShouldBe ( 0 ) ;
194- cluster3 . ReplicaCount . ShouldBe ( 1 ) ;
193+ cluster3 . Offset . ShouldBe ( ( ulong ) 0 ) ;
194+ cluster3 . ReplicaCount . ShouldBe ( ( ulong ) 1 ) ;
195195
196196 await watchdog2 . Initialize ( ) ;
197197 await watchdog3 . PerformIteration ( ) ;
198- cluster3 . Offset . ShouldBe ( 1 ) ;
199- cluster3 . ReplicaCount . ShouldBe ( 2 ) ;
200- cluster2 . Offset . ShouldBe ( 0 ) ;
201- cluster2 . ReplicaCount . ShouldBe ( 2 ) ;
198+ cluster3 . Offset . ShouldBe ( ( ulong ) 1 ) ;
199+ cluster3 . ReplicaCount . ShouldBe ( ( ulong ) 2 ) ;
200+ cluster2 . Offset . ShouldBe ( ( ulong ) 0 ) ;
201+ cluster2 . ReplicaCount . ShouldBe ( ( ulong ) 2 ) ;
202202
203203 await watchdog1 . Initialize ( ) ;
204204 await watchdog2 . PerformIteration ( ) ;
205205 await watchdog3 . PerformIteration ( ) ;
206- cluster3 . Offset . ShouldBe ( 2 ) ;
207- cluster3 . ReplicaCount . ShouldBe ( 3 ) ;
208- cluster2 . Offset . ShouldBe ( 1 ) ;
209- cluster2 . ReplicaCount . ShouldBe ( 3 ) ;
210- cluster1 . Offset . ShouldBe ( 0 ) ;
211- cluster1 . ReplicaCount . ShouldBe ( 3 ) ;
206+ cluster3 . Offset . ShouldBe ( ( ulong ) 2 ) ;
207+ cluster3 . ReplicaCount . ShouldBe ( ( ulong ) 3 ) ;
208+ cluster2 . Offset . ShouldBe ( ( ulong ) 1 ) ;
209+ cluster2 . ReplicaCount . ShouldBe ( ( ulong ) 3 ) ;
210+ cluster1 . Offset . ShouldBe ( ( ulong ) 0 ) ;
211+ cluster1 . ReplicaCount . ShouldBe ( ( ulong ) 3 ) ;
212212
213213 await store . Delete ( cluster1 . ReplicaId ) ;
214214 await watchdog3 . PerformIteration ( ) ;
215215 await watchdog2 . PerformIteration ( ) ;
216- cluster3 . Offset . ShouldBe ( 1 ) ;
217- cluster3 . ReplicaCount . ShouldBe ( 2 ) ;
218- cluster2 . Offset . ShouldBe ( 0 ) ;
219- cluster2 . ReplicaCount . ShouldBe ( 2 ) ;
216+ cluster3 . Offset . ShouldBe ( ( ulong ) 1 ) ;
217+ cluster3 . ReplicaCount . ShouldBe ( ( ulong ) 2 ) ;
218+ cluster2 . Offset . ShouldBe ( ( ulong ) 0 ) ;
219+ cluster2 . ReplicaCount . ShouldBe ( ( ulong ) 2 ) ;
220220
221221 await store . Delete ( cluster2 . ReplicaId ) ;
222222 await watchdog3 . PerformIteration ( ) ;
223- cluster3 . Offset . ShouldBe ( 0 ) ;
224- cluster3 . ReplicaCount . ShouldBe ( 1 ) ;
223+ cluster3 . Offset . ShouldBe ( ( ulong ) 0 ) ;
224+ cluster3 . ReplicaCount . ShouldBe ( ( ulong ) 1 ) ;
225225 }
226226
227227 public abstract Task ActiveReplicasDoNotDeleteEachOther ( ) ;
@@ -328,4 +328,35 @@ public async Task ReplicaWatchdogUpdatesHeartbeat(Task<IFunctionStore> storeTask
328328 storedReplicas . Single ( ) . Heartbeat . ShouldBeGreaterThan ( 1 ) ;
329329
330330 }
331+
332+ public abstract Task WorkIsDividedBetweenReplicas ( ) ;
333+ public Task WorkIsDividedBetweenReplicas ( Task < IFunctionStore > storeTask )
334+ {
335+ var replicaId1 = ReplicaId . NewId ( ) ;
336+ var clusterInfo = new ClusterInfo ( replicaId1 )
337+ {
338+ ReplicaCount = 3
339+ } ;
340+
341+ var storedIds = Enumerable
342+ . Range ( 0 , 10 )
343+ . Select ( i => new StoredId ( new StoredType ( 0 ) , i . ToString ( ) . ToStoredInstance ( ) ) )
344+ . ToList ( ) ;
345+
346+ //offset 0
347+ var owned = storedIds . Select ( clusterInfo . OwnedByThisReplica ) . ToList ( ) ;
348+ owned . Any ( ) . ShouldBeTrue ( ) ;
349+
350+ //offset 1
351+ clusterInfo . Offset = 1 ;
352+ owned = storedIds . Select ( clusterInfo . OwnedByThisReplica ) . ToList ( ) ;
353+ owned . Any ( ) . ShouldBeTrue ( ) ;
354+
355+ //offset 2
356+ clusterInfo . Offset = 2 ;
357+ owned = storedIds . Select ( clusterInfo . OwnedByThisReplica ) . ToList ( ) ;
358+ owned . Any ( ) . ShouldBeTrue ( ) ;
359+
360+ return Task . CompletedTask ;
361+ }
331362}
0 commit comments