Skip to content

Commit 0454090

Browse files
authored
use now_db_precision in target_release_datastore test (#10464)
Also fix a vacuous comparison issue found along the way. Fixes #10461.
1 parent 381099a commit 0454090

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

nexus/db-queries/src/db/datastore/target_release.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)