Files
EdgeCommon/pkg/serverconfigs/schedulingconfigs/scheduling_round_robin_test.go
2020-09-15 14:44:38 +08:00

102 lines
1.7 KiB
Go

package schedulingconfigs
import "testing"
func TestRoundRobinScheduling_Next(t *testing.T) {
s := &RoundRobinScheduling{}
s.Add(&TestCandidate{
Name: "a",
Weight: 5,
})
s.Add(&TestCandidate{
Name: "b",
Weight: 10,
})
s.Add(&TestCandidate{
Name: "c",
Weight: 20,
})
s.Add(&TestCandidate{
Name: "d",
Weight: 30,
})
s.Start()
for _, c := range s.Candidates {
t.Log(c.(*TestCandidate).Name, c.CandidateWeight())
}
t.Log(s.currentWeights)
for i := 0; i < 100; i ++ {
t.Log("===", "round", i, "===")
t.Log(s.Next(nil))
t.Log(s.currentWeights)
t.Log(s.rawWeights)
}
}
func TestRoundRobinScheduling_Two(t *testing.T) {
s := &RoundRobinScheduling{}
s.Add(&TestCandidate{
Name: "a",
Weight: 10,
})
s.Add(&TestCandidate{
Name: "b",
Weight: 10,
})
s.Start()
for _, c := range s.Candidates {
t.Log(c.(*TestCandidate).Name, c.CandidateWeight())
}
t.Log(s.currentWeights)
for i := 0; i < 100; i ++ {
t.Log("===", "round", i, "===")
t.Log(s.Next(nil))
t.Log(s.currentWeights)
t.Log(s.rawWeights)
}
}
func TestRoundRobinScheduling_NextPerformance(t *testing.T) {
s := &RoundRobinScheduling{}
s.Add(&TestCandidate{
Name: "a",
Weight: 1,
})
s.Add(&TestCandidate{
Name: "b",
Weight: 2,
})
s.Add(&TestCandidate{
Name: "c",
Weight: 3,
})
s.Add(&TestCandidate{
Name: "d",
Weight: 6,
})
s.Start()
for _, c := range s.Candidates {
t.Log(c.(*TestCandidate).Name, c.CandidateWeight())
}
t.Log(s.currentWeights)
hits := map[string]uint{}
for _, c := range s.Candidates {
hits[c.(*TestCandidate).Name] = 0
}
for i := 0; i < 100*10000; i ++ {
c := s.Next(nil)
hits[c.(*TestCandidate).Name] ++
}
t.Log(hits)
}