Use math round when convert float to int in Pod Topology Spread

This commit is contained in:
sanposhiho 2022-01-06 19:41:33 +09:00
parent 36746baa5f
commit 85816089a0
2 changed files with 23 additions and 23 deletions

View File

@ -209,7 +209,7 @@ func (pl *PodTopologySpread) Score(ctx context.Context, cycleState *framework.Cy
score += scoreForCount(cnt, c.MaxSkew, s.TopologyNormalizingWeight[i])
}
}
return int64(score), nil
return int64(math.Round(score)), nil
}
// NormalizeScore invoked after scoring all nodes.

View File

@ -22,7 +22,7 @@ import (
"github.com/google/go-cmp/cmp"
appsv1 "k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/sets"
@ -367,8 +367,8 @@ func TestPodTopologySpreadScore(t *testing.T) {
},
failedNodes: []*v1.Node{},
want: []framework.NodeScore{
{Name: "node-a", Score: 40},
{Name: "node-b", Score: 80},
{Name: "node-a", Score: 20},
{Name: "node-b", Score: 60},
{Name: "node-c", Score: 100},
{Name: "node-d", Score: 0},
},
@ -395,8 +395,8 @@ func TestPodTopologySpreadScore(t *testing.T) {
},
failedNodes: []*v1.Node{},
want: []framework.NodeScore{
{Name: "node-a", Score: 50}, // +10, compared to maxSkew=1
{Name: "node-b", Score: 83}, // +3, compared to maxSkew=1
{Name: "node-a", Score: 33}, // +13, compared to maxSkew=1
{Name: "node-b", Score: 66}, // +6, compared to maxSkew=1
{Name: "node-c", Score: 100},
{Name: "node-d", Score: 16}, // +16, compared to maxSkew=1
},
@ -427,8 +427,8 @@ func TestPodTopologySpreadScore(t *testing.T) {
},
failedNodes: []*v1.Node{},
want: []framework.NodeScore{
{Name: "node-a", Score: 33}, // +19 compared to maxSkew=1
{Name: "node-b", Score: 55}, // +13 compared to maxSkew=1
{Name: "node-a", Score: 44}, // +16 compared to maxSkew=1
{Name: "node-b", Score: 66}, // +9 compared to maxSkew=1
{Name: "node-c", Score: 77}, // +6 compared to maxSkew=1
{Name: "node-d", Score: 100},
},
@ -461,8 +461,8 @@ func TestPodTopologySpreadScore(t *testing.T) {
},
want: []framework.NodeScore{
// Same scores as if we were using one spreading constraint.
{Name: "node-a", Score: 33},
{Name: "node-b", Score: 55},
{Name: "node-a", Score: 44},
{Name: "node-b", Score: 66},
{Name: "node-c", Score: 77},
{Name: "node-d", Score: 100},
},
@ -494,8 +494,8 @@ func TestPodTopologySpreadScore(t *testing.T) {
st.MakeNode().Name("node-y").Label(v1.LabelHostname, "node-y").Obj(),
},
want: []framework.NodeScore{
{Name: "node-a", Score: 16},
{Name: "node-b", Score: 66},
{Name: "node-a", Score: 33},
{Name: "node-b", Score: 83},
{Name: "node-x", Score: 100},
},
},
@ -526,7 +526,7 @@ func TestPodTopologySpreadScore(t *testing.T) {
st.MakeNode().Name("node-y").Label(v1.LabelHostname, "node-y").Obj(),
},
want: []framework.NodeScore{
{Name: "node-a", Score: 20},
{Name: "node-a", Score: 16},
{Name: "node-b", Score: 0},
{Name: "node-x", Score: 100},
},
@ -558,8 +558,8 @@ func TestPodTopologySpreadScore(t *testing.T) {
st.MakeNode().Name("node-y").Label("zone", "zone2").Label(v1.LabelHostname, "node-y").Obj(),
},
want: []framework.NodeScore{
{Name: "node-a", Score: 62},
{Name: "node-b", Score: 62},
{Name: "node-a", Score: 75},
{Name: "node-b", Score: 75},
{Name: "node-x", Score: 100},
},
},
@ -591,7 +591,7 @@ func TestPodTopologySpreadScore(t *testing.T) {
},
want: []framework.NodeScore{
{Name: "node-a", Score: 100},
{Name: "node-x", Score: 54},
{Name: "node-x", Score: 63},
},
},
{
@ -624,10 +624,10 @@ func TestPodTopologySpreadScore(t *testing.T) {
},
failedNodes: []*v1.Node{},
want: []framework.NodeScore{
{Name: "node-a", Score: 75},
{Name: "node-b", Score: 25},
{Name: "node-a", Score: 60},
{Name: "node-b", Score: 20},
{Name: "node-x", Score: 100},
{Name: "node-y", Score: 50},
{Name: "node-y", Score: 60},
},
},
{
@ -652,8 +652,8 @@ func TestPodTopologySpreadScore(t *testing.T) {
failedNodes: []*v1.Node{},
want: []framework.NodeScore{
{Name: "node-a", Score: 100},
{Name: "node-b", Score: 75},
{Name: "node-x", Score: 50},
{Name: "node-b", Score: 60},
{Name: "node-x", Score: 40},
{Name: "node-y", Score: 0},
},
},
@ -680,7 +680,7 @@ func TestPodTopologySpreadScore(t *testing.T) {
st.MakeNode().Name("node-y").Label("zone", "zone2").Label(v1.LabelHostname, "node-y").Obj(),
},
want: []framework.NodeScore{
{Name: "node-a", Score: 75},
{Name: "node-a", Score: 50},
{Name: "node-b", Score: 25},
{Name: "node-x", Score: 100},
},
@ -702,7 +702,7 @@ func TestPodTopologySpreadScore(t *testing.T) {
},
want: []framework.NodeScore{
{Name: "node-a", Score: 100},
{Name: "node-b", Score: 50},
{Name: "node-b", Score: 33},
},
},
{