Added and modified tests in binding common
Signed-off-by: Yash Pandey <yash.pandey@agoda.com>
This commit is contained in:
parent
bcefb22baa
commit
7bef0986ca
|
@ -18,6 +18,7 @@ package binding
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"sort"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
|
@ -379,3 +380,122 @@ func Test_shouldSuspendDispatching(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_needReviseReplicas(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
replicas int32
|
||||||
|
placement *policyv1alpha1.Placement
|
||||||
|
want bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "replicas is zero",
|
||||||
|
replicas: 0,
|
||||||
|
placement: &policyv1alpha1.Placement{
|
||||||
|
ReplicaScheduling: &policyv1alpha1.ReplicaSchedulingStrategy{
|
||||||
|
ReplicaSchedulingType: policyv1alpha1.ReplicaSchedulingTypeDivided,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "placement is nil",
|
||||||
|
replicas: 1,
|
||||||
|
placement: nil,
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "replica scheduling type is not divided",
|
||||||
|
replicas: 1,
|
||||||
|
placement: &policyv1alpha1.Placement{
|
||||||
|
ReplicaScheduling: &policyv1alpha1.ReplicaSchedulingStrategy{
|
||||||
|
ReplicaSchedulingType: policyv1alpha1.ReplicaSchedulingTypeDuplicated,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "replica scheduling type is divided",
|
||||||
|
replicas: 1,
|
||||||
|
placement: &policyv1alpha1.Placement{
|
||||||
|
ReplicaScheduling: &policyv1alpha1.ReplicaSchedulingStrategy{
|
||||||
|
ReplicaSchedulingType: policyv1alpha1.ReplicaSchedulingTypeDivided,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
if got := needReviseReplicas(tt.replicas, tt.placement); got != tt.want {
|
||||||
|
t.Errorf("needReviseReplicas() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_divideReplicasByJobCompletions(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
workload *unstructured.Unstructured
|
||||||
|
clusters []workv1alpha2.TargetCluster
|
||||||
|
want []workv1alpha2.TargetCluster
|
||||||
|
wantErr bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "completions found",
|
||||||
|
workload: &unstructured.Unstructured{
|
||||||
|
Object: map[string]interface{}{
|
||||||
|
"spec": map[string]interface{}{
|
||||||
|
"completions": int64(10),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
clusters: []workv1alpha2.TargetCluster{
|
||||||
|
{Name: "cluster1", Replicas: 5},
|
||||||
|
{Name: "cluster2", Replicas: 5},
|
||||||
|
},
|
||||||
|
want: []workv1alpha2.TargetCluster{
|
||||||
|
{Name: "cluster1", Replicas: 5},
|
||||||
|
{Name: "cluster2", Replicas: 5},
|
||||||
|
},
|
||||||
|
wantErr: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "error in NestedInt64",
|
||||||
|
workload: &unstructured.Unstructured{
|
||||||
|
Object: map[string]interface{}{
|
||||||
|
"spec": "invalid",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
clusters: []workv1alpha2.TargetCluster{
|
||||||
|
{Name: "cluster1", Replicas: 5},
|
||||||
|
{Name: "cluster2", Replicas: 5},
|
||||||
|
},
|
||||||
|
want: nil,
|
||||||
|
wantErr: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
got, err := divideReplicasByJobCompletions(tt.workload, tt.clusters)
|
||||||
|
if (err != nil) != tt.wantErr {
|
||||||
|
t.Errorf("divideReplicasByJobCompletions() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.Slice(got, func(i, j int) bool {
|
||||||
|
return got[i].Name < got[j].Name
|
||||||
|
})
|
||||||
|
sort.Slice(tt.want, func(i, j int) bool {
|
||||||
|
return tt.want[i].Name < tt.want[j].Name
|
||||||
|
})
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(got, tt.want) {
|
||||||
|
t.Errorf("divideReplicasByJobCompletions() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue