cloud/shepherd/manager: fix data race
Change-Id: I74dfe7ebd274a2014df827ae804d02cded3af090
Reviewed-on: https://review.monogon.dev/c/monogon/+/3689
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/cloud/shepherd/manager/provisioner_test.go b/cloud/shepherd/manager/provisioner_test.go
index 079bf96..aea7717 100644
--- a/cloud/shepherd/manager/provisioner_test.go
+++ b/cloud/shepherd/manager/provisioner_test.go
@@ -64,19 +64,21 @@
return err
})
if err != nil {
- t.Errorf("Transact failed: %v", err)
+ t.Fatalf("Transact failed: %v", err)
}
if len(provided) < 10 {
continue
}
if len(provided) > 10 {
- t.Errorf("%d machines provided (limit: 10)", len(provided))
+ t.Fatalf("%d machines provided (limit: 10)", len(provided))
}
for _, mp := range provided {
+ provider.muMachines.RLock()
if provider.machines[shepherd.ProviderID(mp.ProviderID)] == nil {
- t.Errorf("BMDB machine %q has unknown provider ID %q", mp.MachineID, mp.ProviderID)
+ t.Fatalf("BMDB machine %q has unknown provider ID %q", mp.MachineID, mp.ProviderID)
}
+ provider.muMachines.RUnlock()
}
return
@@ -131,7 +133,7 @@
t.Run(tt.name, func(t *testing.T) {
p := &Provisioner{}
if got := p.resolvePossiblyUsed(&dummyMachine{id: tt.machineID, availability: tt.machineAvailability}, providedMachines); got != tt.wantedAvailability {
- t.Errorf("resolvePossiblyUsed() = %v, want %v", got, tt.wantedAvailability)
+ t.Fatalf("resolvePossiblyUsed() = %v, want %v", got, tt.wantedAvailability)
}
})
}