@@ -6,14 +6,20 @@ package reclaim_test
66import (
77 "fmt"
88 "testing"
9+ "time"
910
11+ "github.com/stretchr/testify/require"
1012 . "go.uber.org/mock/gomock"
1113 "gopkg.in/h2non/gock.v1"
1214 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1315
16+ kaiv1 "github.com/kai-scheduler/KAI-scheduler/pkg/apis/kai/v1"
1417 kaiv1alpha1 "github.com/kai-scheduler/KAI-scheduler/pkg/apis/kai/v1alpha1"
18+ commonconstants "github.com/kai-scheduler/KAI-scheduler/pkg/common/constants"
1519 "github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/actions/reclaim"
20+ "github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/common_info"
1621 "github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/pod_status"
22+ "github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/podgroup_info"
1723 "github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/podgroup_info/subgroup_info"
1824 "github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/api/topology_info"
1925 "github.com/kai-scheduler/KAI-scheduler/pkg/scheduler/constants"
@@ -46,6 +52,35 @@ const (
4652 unschedulableDistributedRackKey = "benchmark.kai.scheduler/rack"
4753)
4854
55+ func TestReducedBudgetFailedReclaimRecordsScenarioSearchUnresolved (t * testing.T ) {
56+ defer gock .Off ()
57+
58+ test_utils .InitTestingInfrastructure ()
59+ controller := NewController (t )
60+ defer controller .Finish ()
61+
62+ topology := buildUnschedulableDistributedReclaimBenchmarkTopology (
63+ defaultUnschedulableDistributedReclaimBenchmarkParams (10 ),
64+ )
65+ ssn := test_utils .BuildSession (topology , controller )
66+ ssn .Config .ScenarioSearchBudgets = & kaiv1.ScenarioSearchBudgets {
67+ MaxActionSearchDuration : map [string ]metav1.Duration {
68+ commonconstants .ActionReclaim : {Duration : 250 * time .Millisecond },
69+ },
70+ MaxJobSearchDuration : & metav1.Duration {Duration : time .Second },
71+ MinJobSearchDuration : & metav1.Duration {Duration : 500 * time .Millisecond },
72+ }
73+
74+ reclaim .New ().Execute (ssn )
75+
76+ job := ssn .ClusterInfo .PodGroupInfos [common_info .PodGroupID ("unschedulable-distributed-job" )]
77+ require .NotNil (t , job )
78+ require .Empty (t , job .JobFitErrors )
79+ require .NotNil (t , job .ScenarioSearchUnresolved )
80+ require .Equal (t , podgroup_info .ScenarioSearchResultGeneratorsExhausted , job .ScenarioSearchUnresolved .Reason )
81+ require .True (t , job .ScenarioSearchUnresolved .ReducedBudget )
82+ }
83+
4984func BenchmarkReclaimUnschedulableDistributedJob_10Node (b * testing.B ) {
5085 benchmarkReclaimUnschedulableDistributedJob (b , 10 )
5186}
0 commit comments