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  }