Skip to content

Commit

Permalink
add unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
zc authored and CMGS committed Mar 19, 2020
1 parent 03e6537 commit 906e3e1
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 1 deletion.
2 changes: 1 addition & 1 deletion cluster/calcium/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ func (c *Calcium) doAllocResource(ctx context.Context, opts *types.DeployOptions
break
}
}
resourceType := types.GetGlobalResource(opts.CPUBind, volumeSchedule)
resourceType := types.GetResourceType(opts.CPUBind, volumeSchedule)

switch opts.DeployMethod {
case cluster.DeployAuto:
Expand Down
39 changes: 39 additions & 0 deletions scheduler/complex/utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,42 @@ func TestShuffle(t *testing.T) {
n2 := shuffle(ns)
assert.Len(t, ns, len(n2))
}

func TestScoreSort(t *testing.T) {
ns := []types.NodeInfo{
types.NodeInfo{
Name: "n1",
Usages: map[types.ResourceType]float64{
types.ResourceCPU: 0.1,
types.ResourceVolume: 0.3,
types.ResourceMemory: 0.4,
},
},
types.NodeInfo{
Name: "n2",
Usages: map[types.ResourceType]float64{
types.ResourceCPU: 0.3,
types.ResourceVolume: 0.3,
types.ResourceMemory: 0.1,
},
},
types.NodeInfo{
Name: "n3",
Usages: map[types.ResourceType]float64{
types.ResourceCPU: 0.2,
types.ResourceVolume: 0.3,
types.ResourceMemory: 0.1,
},
},
}

scoreSort(ns, types.ResourceCPU)
assert.Equal(t, ns[0].Name, "n1")
assert.Equal(t, ns[1].Name, "n3")
assert.Equal(t, ns[2].Name, "n2")

scoreSort(ns, types.ResourceCPU|types.ResourceMemory)
assert.Equal(t, ns[0].Name, "n3")
assert.Equal(t, ns[1].Name, "n2")
assert.Equal(t, ns[2].Name, "n1")
}
28 changes: 28 additions & 0 deletions types/node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,3 +174,31 @@ func TestNewVolumePlan(t *testing.T) {
assert.Equal(t, len(plan), 4)
assert.Equal(t, plan[MustToVolumeBinding("AUTO:/data3:rw:10")], VolumeMap{"/dir0": 10})
}

func TestNodeInfoGetResource(t *testing.T) {
n := NodeInfo{
Usages: map[ResourceType]float64{
ResourceCPU: 0.1,
ResourceMemory: 0.2,
ResourceStorage: 0.3,
ResourceVolume: 0.4,
},
}
assert.InDelta(t, n.GetResourceUsage(ResourceCPU), 0.1, 0.000001)
assert.InDelta(t, n.GetResourceUsage(ResourceCPU|ResourceMemory), 0.3, 0.000001)
assert.InDelta(t, n.GetResourceUsage(ResourceVolume|ResourceMemory), 0.6, 0.000001)
assert.InDelta(t, n.GetResourceUsage(ResourceAll), 1.0, 0.000001)

n = NodeInfo{
Rates: map[ResourceType]float64{
ResourceCPU: 0.1,
ResourceMemory: 0.2,
ResourceStorage: 0.3,
ResourceVolume: 0.4,
},
}
assert.InDelta(t, n.GetResourceRate(ResourceCPU), 0.1, 0.000001)
assert.InDelta(t, n.GetResourceRate(ResourceCPU|ResourceMemory), 0.3, 0.000001)
assert.InDelta(t, n.GetResourceRate(ResourceVolume|ResourceMemory), 0.6, 0.000001)
assert.InDelta(t, n.GetResourceRate(ResourceAll), 1.0, 0.000001)
}
26 changes: 26 additions & 0 deletions types/scheduler.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package types

type ResourceType int

const (
ResourceCPU ResourceType = 1 << iota
ResourceMemory
ResourceVolume
ResourceStorage
)

var ResourceAll = ResourceStorage | ResourceMemory | ResourceCPU | ResourceVolume
var AllResourceTypes = [...]ResourceType{ResourceCPU, ResourceMemory, ResourceVolume, ResourceStorage}

func GetResourceType(cpuBind, volumeSchedule bool) (resource ResourceType) {
if cpuBind {
resource |= ResourceCPU
}
if volumeSchedule {
resource |= ResourceVolume
}
if resource == 0 {
resource |= ResourceMemory
}
return
}
13 changes: 13 additions & 0 deletions types/scheduler_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package types

import (
"testing"

"github.com/stretchr/testify/assert"
)

func TestGetResource(t *testing.T) {
assert.Equal(t, GetResourceType(true, true), ResourceCPU|ResourceVolume)
assert.Equal(t, GetResourceType(true, false), ResourceCPU)
assert.Equal(t, GetResourceType(false, false), ResourceMemory)
}
1 change: 1 addition & 0 deletions types/volume_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ func TestVolumeBindings(t *testing.T) {
assert.Equal(t, vbs.ToStringSlice(false, false), []string{"/1:/dst:rw:1000", "/0:/dst:rom:0"})
assert.Equal(t, vbs.ToStringSlice(true, false), []string{"/0:/dst:rom:0", "/1:/dst:rw:1000"})
assert.Equal(t, vbs.AdditionalStorage(), int64(1000))
assert.Equal(t, vbs.TotalSize(), int64(1000))

vbs1, _ := MakeVolumeBindings([]string{"AUTO:/data0:rw:1", "AUTO:/data1:rw:2", "/mnt1:/data2:rw", "/mnt2:/data3:ro"})
vbs2, _ := MakeVolumeBindings([]string{"AUTO:/data7:rw:3", "AUTO:/data1:rw:3", "/mnt3:/data8", "AUTO:/data0:rw:-20"})
Expand Down

0 comments on commit 906e3e1

Please sign in to comment.