Skip to content

Commit

Permalink
make tests deterministic
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewjstone committed May 16, 2024
1 parent 0c8b224 commit b27d34c
Show file tree
Hide file tree
Showing 13 changed files with 297 additions and 289 deletions.
2 changes: 1 addition & 1 deletion common/src/disk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ use serde::{Deserialize, Serialize};
)]
pub struct DiskIdentity {
pub vendor: String,
pub serial: String,
pub model: String,
pub serial: String,
}
16 changes: 12 additions & 4 deletions nexus/reconfigurator/planning/src/blueprint_builder/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ use omicron_common::api::external::MacAddr;
use omicron_common::api::external::Vni;
use omicron_common::api::internal::shared::NetworkInterface;
use omicron_common::api::internal::shared::NetworkInterfaceKind;
use omicron_uuid_kinds::ExternalIpUuid;
use omicron_uuid_kinds::ExternalIpKind;
use omicron_uuid_kinds::GenericUuid;
use omicron_uuid_kinds::OmicronZoneKind;
use omicron_uuid_kinds::OmicronZoneUuid;
Expand Down Expand Up @@ -807,7 +807,7 @@ impl<'a> BlueprintBuilder<'a> {
for _ in 0..num_nexus_to_add {
let nexus_id = self.rng.zone_rng.next();
let external_ip = OmicronZoneExternalFloatingIp {
id: ExternalIpUuid::new_v4(),
id: self.rng.external_ip_rng.next(),
ip: self
.available_external_ips
.next()
Expand Down Expand Up @@ -992,6 +992,7 @@ struct BlueprintBuilderRng {
blueprint_rng: UuidRng,
zone_rng: TypedUuidRng<OmicronZoneKind>,
network_interface_rng: UuidRng,
external_ip_rng: TypedUuidRng<ExternalIpKind>,
}

impl BlueprintBuilderRng {
Expand All @@ -1004,8 +1005,15 @@ impl BlueprintBuilderRng {
let zone_rng = TypedUuidRng::from_parent_rng(&mut parent, "zone");
let network_interface_rng =
UuidRng::from_parent_rng(&mut parent, "network_interface");

BlueprintBuilderRng { blueprint_rng, zone_rng, network_interface_rng }
let external_ip_rng =
TypedUuidRng::from_parent_rng(&mut parent, "external_ip");

BlueprintBuilderRng {
blueprint_rng,
zone_rng,
network_interface_rng,
external_ip_rng,
}
}

fn set_seed<H: Hash>(&mut self, seed: H) {
Expand Down
7 changes: 4 additions & 3 deletions nexus/reconfigurator/planning/src/planner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -886,7 +886,7 @@ mod test {

// Make generated disk ids deterministic
let mut disk_rng =
TypedUuidRng::from_seed(TEST_NAME, "NEW PHYSICAL DISKS");
TypedUuidRng::from_seed(TEST_NAME, "NewPhysicalDisks");
let mut new_sled_disk = |policy| nexus_types::deployment::SledDisk {
disk_identity: DiskIdentity {
vendor: "test-vendor".to_string(),
Expand All @@ -908,15 +908,16 @@ mod test {
const NEW_IN_SERVICE_DISKS: usize = 2;
const NEW_EXPUNGED_DISKS: usize = 1;

let mut zpool_rng = TypedUuidRng::from_seed(TEST_NAME, "NewZpools");
for _ in 0..NEW_IN_SERVICE_DISKS {
sled_details.resources.zpools.insert(
ZpoolUuid::new_v4(),
ZpoolUuid::from(zpool_rng.next()),
new_sled_disk(nexus_types::external_api::views::PhysicalDiskPolicy::InService),
);
}
for _ in 0..NEW_EXPUNGED_DISKS {
sled_details.resources.zpools.insert(
ZpoolUuid::new_v4(),
ZpoolUuid::from(zpool_rng.next()),
new_sled_disk(nexus_types::external_api::views::PhysicalDiskPolicy::Expunged),
);
}
Expand Down
5 changes: 4 additions & 1 deletion nexus/reconfigurator/planning/src/system.rs
Original file line number Diff line number Diff line change
Expand Up @@ -440,13 +440,16 @@ impl Sled {
hardware_slot: u16,
nzpools: u8,
) -> Sled {
use typed_rng::TypedUuidRng;
let unique = unique.unwrap_or_else(|| hardware_slot.to_string());
let model = format!("model{}", unique);
let serial = format!("serial{}", unique);
let revision = 0;
let mut zpool_rng =
TypedUuidRng::from_seed("SystemSimultatedSled", "ZpoolUuid");
let zpools: BTreeMap<_, _> = (0..nzpools)
.map(|_| {
let zpool = ZpoolUuid::new_v4();
let zpool = ZpoolUuid::from(zpool_rng.next());
let disk = SledDisk {
disk_identity: DiskIdentity {
vendor: String::from("fake-vendor"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ to: blueprint e4aeb3b3-272f-4967-be34-2d34daa46aa1
----------------------------------------------------------------------
vendor model serial
----------------------------------------------------------------------
fake-vendor fake-model serial-162ad193-c3be-46c6-af06-4ab4229a2cc9
fake-vendor fake-model serial-373bce00-8ad2-4faf-a006-a98b5635ba8f
fake-vendor fake-model serial-7827ded7-aa36-4305-bd5c-85cd8db8b316
fake-vendor fake-model serial-7afaff6f-220e-48e0-8ffa-8220aa722014
fake-vendor fake-model serial-7bd2b032-7741-48e3-96ce-4b451f38cf52
fake-vendor fake-model serial-8d42af8b-890e-4af4-bc86-640d466441ef
fake-vendor fake-model serial-b8f34dc4-b0bf-4d69-a944-763468564c9b
fake-vendor fake-model serial-cdb62c6c-0b9e-4feb-8ea0-2150ff26e6e3
fake-vendor fake-model serial-e94e4202-b6d3-4312-a4ee-6b4092e983ed
fake-vendor fake-model serial-fa9c800f-b10e-4fbe-8d4b-4fd1e6ed1c82
fake-vendor fake-model serial-088f76ef-e985-41fd-8630-c321ed8cca37
fake-vendor fake-model serial-30d0e693-dec4-402f-baa0-d6d9a93c98a7
fake-vendor fake-model serial-32e90a17-7080-4c33-a94d-05f4bfb5d368
fake-vendor fake-model serial-44473266-e28a-43fa-9314-c3416b8b3c14
fake-vendor fake-model serial-53372ece-d666-4f5b-8f25-286e36242088
fake-vendor fake-model serial-795061c9-db7b-404a-a2a3-0dad5fdfceb1
fake-vendor fake-model serial-7b8bc126-4ff8-434f-a949-e98eda2709a5
fake-vendor fake-model serial-b644318e-da11-46e1-b650-47a067e6024c
fake-vendor fake-model serial-bb2b397b-a3f5-4142-a433-4f2ab5fe284b
fake-vendor fake-model serial-bdbf1352-725d-4b17-98d5-4d7105726721


omicron zones at generation 2:
Expand All @@ -44,16 +44,16 @@ to: blueprint e4aeb3b3-272f-4967-be34-2d34daa46aa1
----------------------------------------------------------------------
vendor model serial
----------------------------------------------------------------------
fake-vendor fake-model serial-055c7598-bcd4-46a5-b44c-7ba4c0733719
fake-vendor fake-model serial-08d212f8-2ca0-4373-b3ad-5723034aa091
fake-vendor fake-model serial-18638c2d-02ad-457d-818e-d79c0f9cbc6c
fake-vendor fake-model serial-1b1b0f12-e98e-4d02-a554-ab09a9466240
fake-vendor fake-model serial-53e75fce-76ea-4d79-af12-a2d36fa778b6
fake-vendor fake-model serial-77c4292e-202b-4e07-aa2e-85f5653117d9
fake-vendor fake-model serial-9850de63-8351-4e9c-bda7-786bc5bb27bb
fake-vendor fake-model serial-a2b1d20c-8659-4937-bc81-6ecbb41127d9
fake-vendor fake-model serial-e21e8008-080e-4589-8a29-539519cb6a15
fake-vendor fake-model serial-fdc58277-3b9e-4400-b257-affb231e1441
fake-vendor fake-model serial-088f76ef-e985-41fd-8630-c321ed8cca37
fake-vendor fake-model serial-30d0e693-dec4-402f-baa0-d6d9a93c98a7
fake-vendor fake-model serial-32e90a17-7080-4c33-a94d-05f4bfb5d368
fake-vendor fake-model serial-44473266-e28a-43fa-9314-c3416b8b3c14
fake-vendor fake-model serial-53372ece-d666-4f5b-8f25-286e36242088
fake-vendor fake-model serial-795061c9-db7b-404a-a2a3-0dad5fdfceb1
fake-vendor fake-model serial-7b8bc126-4ff8-434f-a949-e98eda2709a5
fake-vendor fake-model serial-b644318e-da11-46e1-b650-47a067e6024c
fake-vendor fake-model serial-bb2b397b-a3f5-4142-a433-4f2ab5fe284b
fake-vendor fake-model serial-bdbf1352-725d-4b17-98d5-4d7105726721


omicron zones at generation 2:
Expand All @@ -80,16 +80,16 @@ to: blueprint e4aeb3b3-272f-4967-be34-2d34daa46aa1
----------------------------------------------------------------------
vendor model serial
----------------------------------------------------------------------
fake-vendor fake-model serial-11e06da4-5446-49ef-91ee-1b94a2b119d9
fake-vendor fake-model serial-2e2b7421-7853-4c84-a67d-43b04d01f040
fake-vendor fake-model serial-4a2939ee-e10e-42a3-8e32-866fcda434dd
fake-vendor fake-model serial-619ea4b8-b278-4523-b032-73abcf8265ee
fake-vendor fake-model serial-84c6c51f-34c6-4bd6-aaf5-a39fb0e71d53
fake-vendor fake-model serial-95a7278b-9271-408f-a8ab-763748798865
fake-vendor fake-model serial-9d0ea50d-ffdf-4dd6-ac7b-b81215a5a066
fake-vendor fake-model serial-a6d1df8d-9fbb-4bd2-b20a-03f04a3b5465
fake-vendor fake-model serial-d6027e08-ecfe-48a4-bd45-cf7ca107d313
fake-vendor fake-model serial-de77777a-3010-4189-a0b2-2ee2df8f4886
fake-vendor fake-model serial-088f76ef-e985-41fd-8630-c321ed8cca37
fake-vendor fake-model serial-30d0e693-dec4-402f-baa0-d6d9a93c98a7
fake-vendor fake-model serial-32e90a17-7080-4c33-a94d-05f4bfb5d368
fake-vendor fake-model serial-44473266-e28a-43fa-9314-c3416b8b3c14
fake-vendor fake-model serial-53372ece-d666-4f5b-8f25-286e36242088
fake-vendor fake-model serial-795061c9-db7b-404a-a2a3-0dad5fdfceb1
fake-vendor fake-model serial-7b8bc126-4ff8-434f-a949-e98eda2709a5
fake-vendor fake-model serial-b644318e-da11-46e1-b650-47a067e6024c
fake-vendor fake-model serial-bb2b397b-a3f5-4142-a433-4f2ab5fe284b
fake-vendor fake-model serial-bdbf1352-725d-4b17-98d5-4d7105726721


omicron zones at generation 2:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ to: blueprint 4171ad05-89dd-474b-846b-b007e4346366
----------------------------------------------------------------------
vendor model serial
----------------------------------------------------------------------
fake-vendor fake-model serial-161d3316-e089-482a-8332-22f1ab4dd79e
fake-vendor fake-model serial-2d14fc89-b0ef-494d-a4ed-8d47e4608714
fake-vendor fake-model serial-391b7bf5-437c-46b2-89d5-6e98646d26b6
fake-vendor fake-model serial-3fc73883-08be-4a24-91e3-5fded9677ab5
fake-vendor fake-model serial-69354652-344d-4e79-90a7-1eb067754a93
fake-vendor fake-model serial-92edc67c-50c3-4c52-9e16-a88098412d7a
fake-vendor fake-model serial-b6185e29-74db-474a-8d47-bb8d0fc7db8d
fake-vendor fake-model serial-c91a90f3-63e4-414a-b65c-22326e5d12dc
fake-vendor fake-model serial-cd056d01-a889-4f3b-91bf-d9c1a8d844c0
fake-vendor fake-model serial-da5608be-bd60-4fd1-80e0-08ed2616adb7
fake-vendor fake-model serial-088f76ef-e985-41fd-8630-c321ed8cca37
fake-vendor fake-model serial-30d0e693-dec4-402f-baa0-d6d9a93c98a7
fake-vendor fake-model serial-32e90a17-7080-4c33-a94d-05f4bfb5d368
fake-vendor fake-model serial-44473266-e28a-43fa-9314-c3416b8b3c14
fake-vendor fake-model serial-53372ece-d666-4f5b-8f25-286e36242088
fake-vendor fake-model serial-795061c9-db7b-404a-a2a3-0dad5fdfceb1
fake-vendor fake-model serial-7b8bc126-4ff8-434f-a949-e98eda2709a5
fake-vendor fake-model serial-b644318e-da11-46e1-b650-47a067e6024c
fake-vendor fake-model serial-bb2b397b-a3f5-4142-a433-4f2ab5fe284b
fake-vendor fake-model serial-bdbf1352-725d-4b17-98d5-4d7105726721


omicron zones at generation 2:
Expand All @@ -45,16 +45,16 @@ to: blueprint 4171ad05-89dd-474b-846b-b007e4346366
----------------------------------------------------------------------
vendor model serial
----------------------------------------------------------------------
fake-vendor fake-model serial-0c0c2405-4d78-4191-a123-4df5481cfca8
fake-vendor fake-model serial-1fa0aa29-9c9c-41f7-9a4c-d539c6c13f38
fake-vendor fake-model serial-22d78afb-13f6-4324-8b77-c84fcfae35c7
fake-vendor fake-model serial-31f862ab-d211-4264-abbe-41ce49a447f2
fake-vendor fake-model serial-687f9bc7-478a-4649-a10e-237158d4f404
fake-vendor fake-model serial-75282d22-f91a-4123-9609-ad0871fa58b9
fake-vendor fake-model serial-9c923587-1148-47ed-bdce-485d184dcb29
fake-vendor fake-model serial-a92608a2-0e74-434a-96bc-5301e6939e3e
fake-vendor fake-model serial-a978da47-dc3c-431d-aab8-5e5f39f0c94a
fake-vendor fake-model serial-d350ed2c-fb56-416e-b5b1-000471348831
fake-vendor fake-model serial-088f76ef-e985-41fd-8630-c321ed8cca37
fake-vendor fake-model serial-30d0e693-dec4-402f-baa0-d6d9a93c98a7
fake-vendor fake-model serial-32e90a17-7080-4c33-a94d-05f4bfb5d368
fake-vendor fake-model serial-44473266-e28a-43fa-9314-c3416b8b3c14
fake-vendor fake-model serial-53372ece-d666-4f5b-8f25-286e36242088
fake-vendor fake-model serial-795061c9-db7b-404a-a2a3-0dad5fdfceb1
fake-vendor fake-model serial-7b8bc126-4ff8-434f-a949-e98eda2709a5
fake-vendor fake-model serial-b644318e-da11-46e1-b650-47a067e6024c
fake-vendor fake-model serial-bb2b397b-a3f5-4142-a433-4f2ab5fe284b
fake-vendor fake-model serial-bdbf1352-725d-4b17-98d5-4d7105726721


omicron zones at generation 2:
Expand All @@ -81,16 +81,16 @@ to: blueprint 4171ad05-89dd-474b-846b-b007e4346366
----------------------------------------------------------------------
vendor model serial
----------------------------------------------------------------------
fake-vendor fake-model serial-316d9f2a-d787-4f71-a308-001e7124290d
fake-vendor fake-model serial-321122b6-3d16-400c-85c3-0dbe9ac0b345
fake-vendor fake-model serial-4f213afe-42ed-4af6-a6ff-64fc1f18da0c
fake-vendor fake-model serial-5441b5f1-dbac-4cb2-af3d-934fcb686669
fake-vendor fake-model serial-5cfb6b25-8e22-4b7a-acd1-2264736a846d
fake-vendor fake-model serial-6cc47c7c-bf84-4f0b-bae6-936a6d5550bc
fake-vendor fake-model serial-cfbde14c-143a-4a63-a354-da7d9582fb52
fake-vendor fake-model serial-da0864c1-dfc9-43d4-a93f-7a3ba687b53f
fake-vendor fake-model serial-e288955f-4e37-4e2b-ac48-f5bd784a4815
fake-vendor fake-model serial-fb00d3e9-128a-45c4-8b66-49c2bac849e0
fake-vendor fake-model serial-088f76ef-e985-41fd-8630-c321ed8cca37
fake-vendor fake-model serial-30d0e693-dec4-402f-baa0-d6d9a93c98a7
fake-vendor fake-model serial-32e90a17-7080-4c33-a94d-05f4bfb5d368
fake-vendor fake-model serial-44473266-e28a-43fa-9314-c3416b8b3c14
fake-vendor fake-model serial-53372ece-d666-4f5b-8f25-286e36242088
fake-vendor fake-model serial-795061c9-db7b-404a-a2a3-0dad5fdfceb1
fake-vendor fake-model serial-7b8bc126-4ff8-434f-a949-e98eda2709a5
fake-vendor fake-model serial-b644318e-da11-46e1-b650-47a067e6024c
fake-vendor fake-model serial-bb2b397b-a3f5-4142-a433-4f2ab5fe284b
fake-vendor fake-model serial-bdbf1352-725d-4b17-98d5-4d7105726721


omicron zones at generation 2:
Expand Down Expand Up @@ -119,16 +119,16 @@ to: blueprint 4171ad05-89dd-474b-846b-b007e4346366
----------------------------------------------------------------------
vendor model serial
----------------------------------------------------------------------
+ fake-vendor fake-model serial-0f159606-908f-4fb0-85da-25011e4cc43c
+ fake-vendor fake-model serial-24e98795-f71b-4c55-b55c-3fc09da0e208
+ fake-vendor fake-model serial-4e6da4f9-1f79-40c0-9350-4787fcdff1d0
+ fake-vendor fake-model serial-a1a09c3f-7cfa-49c6-9478-fcf5532802fe
+ fake-vendor fake-model serial-ad79c532-bf86-4301-a98c-f70365403e2d
+ fake-vendor fake-model serial-cb130570-1824-4263-aa43-029eebb7b1c6
+ fake-vendor fake-model serial-d75a7123-4372-4128-93eb-e8afbb1f944f
+ fake-vendor fake-model serial-e0d8da9a-8927-430d-b240-a2960c6f9394
+ fake-vendor fake-model serial-ebeb1424-dd40-4b03-bb2c-8bad9189a815
+ fake-vendor fake-model serial-f3de7193-2f19-481a-9a86-571ec3e4c115
+ fake-vendor fake-model serial-088f76ef-e985-41fd-8630-c321ed8cca37
+ fake-vendor fake-model serial-30d0e693-dec4-402f-baa0-d6d9a93c98a7
+ fake-vendor fake-model serial-32e90a17-7080-4c33-a94d-05f4bfb5d368
+ fake-vendor fake-model serial-44473266-e28a-43fa-9314-c3416b8b3c14
+ fake-vendor fake-model serial-53372ece-d666-4f5b-8f25-286e36242088
+ fake-vendor fake-model serial-795061c9-db7b-404a-a2a3-0dad5fdfceb1
+ fake-vendor fake-model serial-7b8bc126-4ff8-434f-a949-e98eda2709a5
+ fake-vendor fake-model serial-b644318e-da11-46e1-b650-47a067e6024c
+ fake-vendor fake-model serial-bb2b397b-a3f5-4142-a433-4f2ab5fe284b
+ fake-vendor fake-model serial-bdbf1352-725d-4b17-98d5-4d7105726721


omicron zones at generation 2:
Expand Down

0 comments on commit b27d34c

Please sign in to comment.