Files
Assistant/modules/capability/domain/fleet_test.go
m 30443027a6
CI / test (push) Failing after 37s
CI / test (pull_request) Failing after 32s
feat: add evidence-based adaptive model rating
2026-08-22 23:42:10 +03:00

63 lines
2.8 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)
}
}
func TestFleetReadinessCpuPreferenceCanUseOtherReadyClass(t *testing.T) {
readiness, err := BuildFleetReadiness(100, []capability.FleetMember{
{ProviderInstanceID: "medium", ModelDescriptorID: "medium-model", Tier: capability.FleetTierMedium, Ready: true, Reason: "available"},
{ProviderInstanceID: "lifeboat", ModelDescriptorID: "lifeboat-model", Tier: capability.FleetTierLifeboat, Ready: true, Reason: "available"},
})
if err != nil {
t.Fatal(err)
}
selected, err := SelectFleetTier(readiness, capability.FleetTierFast)
if err != nil || selected != capability.FleetTierMedium {
t.Fatalf("selected=%q err=%v", selected, err)
}
}