49 lines
2.2 KiB
Go
49 lines
2.2 KiB
Go
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)
|
|
}
|
|
}
|