@@ -284,6 +284,7 @@ mod test {
284284 use omicron_common:: api:: external:: {
285285 TufArtifactMeta , TufRepoDescription , TufRepoMeta ,
286286 } ;
287+ use omicron_common:: now_db_precision;
287288 use omicron_common:: update:: ArtifactId ;
288289 use omicron_test_utils:: dev;
289290 use semver:: Version ;
@@ -352,18 +353,19 @@ mod test {
352353
353354 // We should be able to set a new generation just like the first.
354355 // We allow some slack in the timestamp comparison because the
355- // database only stores timestamps with μsec precision.
356+ // database only stores timestamps with μsec precision, so the
357+ // `time_requested` we read back is truncated from what we wrote.
356358 let target_release =
357359 TargetRelease :: new_unspecified ( & initial_target_release) ;
360+ let time_requested = target_release. time_requested ;
358361 let target_release = datastore
359362 . target_release_insert ( opctx, target_release)
360363 . await
361364 . unwrap ( ) ;
362365 assert_eq ! ( target_release. generation, Generation ( 2 . into( ) ) ) ;
363366 assert ! (
364- ( target_release. time_requested - target_release. time_requested)
365- . abs( )
366- < TimeDelta :: new( 0 , 1_000 ) . expect( "1 μsec" )
367+ ( target_release. time_requested - time_requested) . abs( )
368+ < TimeDelta :: microseconds( 1 )
367369 ) ;
368370 assert_eq ! (
369371 target_release. release_source( ) . unwrap( ) ,
@@ -397,15 +399,21 @@ mod test {
397399 assert_eq ! ( repo. system_version, version. into( ) ) ;
398400 let tuf_repo_id = repo. id ;
399401
400- let before = Utc :: now ( ) ;
402+ // `time_requested` is read back from the database, which stores
403+ // timestamps at μsec precision, rounding down toward zero. Use
404+ // `now_db_precision()` for `before` to avoid comparison issues.
405+ //
406+ // `after` doesn't strictly need it, but using `now_db_precision()`
407+ // for it is more straightforward.
408+ let before = now_db_precision ( ) ;
401409 let target_release = datastore
402410 . target_release_insert (
403411 opctx,
404412 TargetRelease :: new_system_version ( & target_release, tuf_repo_id) ,
405413 )
406414 . await
407415 . unwrap ( ) ;
408- let after = Utc :: now ( ) ;
416+ let after = now_db_precision ( ) ;
409417 assert_eq ! ( target_release. generation, Generation ( 4 . into( ) ) ) ;
410418 assert ! ( target_release. time_requested >= before) ;
411419 assert ! ( target_release. time_requested <= after) ;
0 commit comments