github.com/andy2046/gopie@v0.7.0/pkg/drf/drf_test.go (about) 1 package drf_test 2 3 import ( 4 "testing" 5 6 "github.com/andy2046/gopie/pkg/drf" 7 ) 8 9 func TestDRF(t *testing.T) { 10 nodeA := drf.NewNode(map[drf.Typ]float64{ 11 drf.CPU: 1, 12 drf.MEMORY: 4, 13 }) 14 nodeB := drf.NewNode(map[drf.Typ]float64{ 15 drf.CPU: 3, 16 drf.MEMORY: 1, 17 }) 18 cluster, _ := drf.New(map[drf.Typ]float64{ 19 drf.CPU: 9, 20 drf.MEMORY: 18, 21 }, nodeA, nodeB) 22 var err error 23 for err == nil { 24 err = cluster.NextTask() 25 } 26 t.Logf("Error from NextTask %v", err) 27 t.Logf("Resource for cluster %v", cluster.Resource()) 28 t.Logf("Consumed by cluster %v", cluster.Consumed()) 29 allcNodeA := nodeA.Allocated() 30 t.Logf("Allocated for node A %v", allcNodeA) 31 if allcNodeA[drf.CPU] != 3 { 32 t.Fatalf("got %v, want %v", allcNodeA[drf.CPU], 3) 33 } 34 allcNodeB := nodeB.Allocated() 35 t.Logf("Allocated for node B %v", allcNodeB) 36 if allcNodeB[drf.CPU] != 6 { 37 t.Fatalf("got %v, want %v", allcNodeB[drf.CPU], 6) 38 } 39 } 40 41 func BenchmarkDRF(b *testing.B) { 42 nodeA := drf.NewNode(map[drf.Typ]float64{ 43 drf.CPU: 1, 44 drf.MEMORY: 4, 45 }) 46 nodeB := drf.NewNode(map[drf.Typ]float64{ 47 drf.CPU: 3, 48 drf.MEMORY: 1, 49 }) 50 cluster, _ := drf.New(map[drf.Typ]float64{ 51 drf.CPU: 9, 52 drf.MEMORY: 18, 53 }, nodeA, nodeB) 54 55 b.ReportAllocs() 56 b.ResetTimer() 57 for i := 0; i < b.N; i++ { 58 cluster.NextTask() 59 } 60 }