package domain import ( "testing" "git.cin.su/m/Assistant/contracts/capability" ) func TestFleetReadinessFallsBackToLifeboatWhenPrimaryTiersUnavailable(t *testing.T) { readiness, err := BuildFleetReadiness(100, []capability.FleetMember{{ProviderInstanceID: "cpu", ModelDescriptorID: "qwen", Tier: capability.FleetTierLifeboat, Ready: true, Reason: "local"}, {ProviderInstanceID: "gpu", ModelDescriptorID: "heavy", Tier: capability.FleetTierHeavy, Ready: false, Reason: "timeout"}}) if err != nil { t.Fatal(err) } selected, err := SelectFleetTier(readiness, capability.FleetTierHeavy) if err != nil || selected != capability.FleetTierLifeboat { t.Fatalf("selected=%q err=%v", selected, err) } } func TestFleetReadinessFallsBackFromHeavyToMediumBeforeLifeboat(t *testing.T) { readiness, err := BuildFleetReadiness(100, []capability.FleetMember{ {ProviderInstanceID: "medium", ModelDescriptorID: "qwen-medium", Tier: capability.FleetTierMedium, Ready: true, Reason: "available"}, {ProviderInstanceID: "heavy", ModelDescriptorID: "gpu", Tier: capability.FleetTierHeavy, Ready: false, Reason: "timeout"}, {ProviderInstanceID: "lifeboat", ModelDescriptorID: "qwen-lifeboat", Tier: capability.FleetTierLifeboat, Ready: true, Reason: "available"}, }) if err != nil { t.Fatal(err) } selected, err := SelectFleetTier(readiness, capability.FleetTierHeavy) if err != nil || selected != capability.FleetTierMedium { t.Fatalf("selected=%q err=%v", selected, err) } } func TestFleetReadinessFallsBackFromHeavyToFastBeforeLifeboat(t *testing.T) { readiness, err := BuildFleetReadiness(100, []capability.FleetMember{ {ProviderInstanceID: "fast", ModelDescriptorID: "qwen-fast", Tier: capability.FleetTierFast, Ready: true, Reason: "available"}, {ProviderInstanceID: "heavy", ModelDescriptorID: "gpu", Tier: capability.FleetTierHeavy, Ready: false, Reason: "timeout"}, {ProviderInstanceID: "lifeboat", ModelDescriptorID: "qwen-lifeboat", Tier: capability.FleetTierLifeboat, Ready: true, Reason: "available"}, }) if err != nil { t.Fatal(err) } selected, err := SelectFleetTier(readiness, capability.FleetTierHeavy) if err != nil || selected != capability.FleetTierFast { t.Fatalf("selected=%q err=%v", selected, err) } }