@@ -150,6 +150,43 @@ public void RemovingOldDestinationDoesNotStealSameIdRetry()
150150 Assert . Equal ( 0 , tracker . Count ) ;
151151 }
152152
153+ [ Fact ]
154+ public void RemovingOldGenerationDoesNotStealSameEndpointRetry ( )
155+ {
156+ var oldGeneration = SiloAddress . New ( new IPEndPoint ( Silo1 . Endpoint . Address , Silo1 . Endpoint . Port ) , 1 ) ;
157+ var newGeneration = SiloAddress . New ( new IPEndPoint ( Silo1 . Endpoint . Address , Silo1 . Endpoint . Port ) , 2 ) ;
158+ var tracker = CreateTracker ( ) ;
159+ var original = CreateMessage ( 1 , Message . Directions . Request , oldGeneration ) ;
160+ var retry = CreateMessage ( 1 , Message . Directions . Request , newGeneration ) ;
161+ Assert . True ( tracker . Track ( original ) ) ;
162+ Assert . True ( tracker . Track ( retry ) ) ;
163+
164+ Assert . False ( tracker . TryRemove ( original . Id , oldGeneration , out _ ) ) ;
165+ Assert . Equal ( 1 , tracker . Count ) ;
166+ Assert . True ( tracker . TryRemove ( retry . Id , newGeneration , out var removed ) ) ;
167+ Assert . Equal ( newGeneration , removed . TargetSilo ) ;
168+ Assert . Equal ( 0 , tracker . Count ) ;
169+ }
170+
171+ [ Fact ]
172+ public void SameCorrelationIdIsIsolatedByClientTracker ( )
173+ {
174+ var firstClient = CreateTracker ( ) ;
175+ var secondClient = CreateTracker ( ) ;
176+ var firstRequest = CreateMessage ( 1 , Message . Directions . Request , Silo1 ) ;
177+ var secondRequest = CreateMessage ( 1 , Message . Directions . Request , Silo2 ) ;
178+ Assert . True ( firstClient . Track ( firstRequest ) ) ;
179+ Assert . True ( secondClient . Track ( secondRequest ) ) ;
180+
181+ Assert . True ( firstClient . TryRemove ( firstRequest . Id , Silo1 , out _ ) ) ;
182+
183+ Assert . Equal ( 0 , firstClient . Count ) ;
184+ Assert . Equal ( 1 , secondClient . Count ) ;
185+ Assert . True ( secondClient . TryRemove ( secondRequest . Id , Silo2 , out var removed ) ) ;
186+ Assert . Equal ( Silo2 , removed . TargetSilo ) ;
187+ Assert . Equal ( 0 , secondClient . Count ) ;
188+ }
189+
153190 [ Fact ]
154191 public void ClearRemovesAllRequestsOnDisconnect ( )
155192 {
0 commit comments