@@ -213,6 +213,55 @@ public void ItHandlesAllCombinationsOfLatency(bool oldLatency, bool newLatency)
213213 Assert . Empty ( LogCapture . GetMessages ( ) ) ;
214214 }
215215
216+ [ Fact ]
217+ public void ItRecordsLatencyInMillisecondsGreaterThanASecond ( )
218+ {
219+ var tracker = BasicTracker ( ) ;
220+ tracker . Op ( MigrationOperation . Read ) ;
221+ tracker . Invoked ( MigrationOrigin . New ) ;
222+ tracker . Invoked ( MigrationOrigin . Old ) ;
223+
224+ // 2.5 seconds = 2500 milliseconds
225+ var oldLatency = TimeSpan . FromMilliseconds ( 2500 ) ;
226+ var newLatency = TimeSpan . FromMilliseconds ( 1500 ) ;
227+
228+ tracker . Latency ( MigrationOrigin . Old , oldLatency ) ;
229+ tracker . Latency ( MigrationOrigin . New , newLatency ) ;
230+
231+ var optEvent = tracker . CreateEvent ( ) ;
232+ Assert . True ( optEvent . HasValue ) ;
233+ var migrationOpEvent = optEvent . Value ;
234+
235+ Assert . True ( migrationOpEvent . Latency . HasValue ) ;
236+ Assert . Equal ( 2500 , migrationOpEvent . Latency ? . Old ) ;
237+ Assert . Equal ( 1500 , migrationOpEvent . Latency ? . New ) ;
238+ Assert . Empty ( LogCapture . GetMessages ( ) ) ;
239+ }
240+
241+ [ Fact ]
242+ public void ItHandlesExtremelyLargeLatencyWithoutException ( )
243+ {
244+ var tracker = BasicTracker ( ) ;
245+ tracker . Op ( MigrationOperation . Read ) ;
246+ tracker . Invoked ( MigrationOrigin . New ) ;
247+ tracker . Invoked ( MigrationOrigin . Old ) ;
248+
249+ var hugeLatency = TimeSpan . MaxValue ;
250+
251+ Exception ex = Record . Exception ( ( ) =>
252+ {
253+ tracker . Latency ( MigrationOrigin . Old , hugeLatency ) ;
254+ tracker . Latency ( MigrationOrigin . New , hugeLatency ) ;
255+ var optEvent = tracker . CreateEvent ( ) ;
256+ var migrationOpEvent = optEvent . Value ;
257+ Assert . Equal ( ( long ? ) TimeSpan . MaxValue . TotalMilliseconds , migrationOpEvent . Latency ? . Old ) ;
258+ Assert . Equal ( ( long ? ) TimeSpan . MaxValue . TotalMilliseconds , migrationOpEvent . Latency ? . New ) ;
259+ Assert . Empty ( LogCapture . GetMessages ( ) ) ;
260+ } ) ;
261+
262+ Assert . Null ( ex ) ;
263+ }
264+
216265 [ Theory ]
217266 [ InlineData ( true ) ]
218267 [ InlineData ( false ) ]
0 commit comments