From d0de5ee9649534e2d066b848786f0ba9ef2957dd Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Wed, 19 Nov 2014 22:45:17 +0000 Subject: [PATCH] cleanup tests --- scheduler/strategy/binpacking_test.go | 88 ++++++++++++++------------- 1 file changed, 47 insertions(+), 41 deletions(-) diff --git a/scheduler/strategy/binpacking_test.go b/scheduler/strategy/binpacking_test.go index f97c8d6faa..2745af6fb5 100644 --- a/scheduler/strategy/binpacking_test.go +++ b/scheduler/strategy/binpacking_test.go @@ -8,79 +8,84 @@ import ( "github.com/stretchr/testify/assert" ) +func createNode(ID string, memory int64, cpus int) *cluster.Node { + node := cluster.NewNode(ID, "") + node.Memory = memory * 1024 * 1024 * 1024 + node.Cpus = cpus + return node +} + +func createConfig(memory int, cpus int) *dockerclient.ContainerConfig { + return &dockerclient.ContainerConfig{Memory: memory * 1024 * 1024 * 1024, CpuShares: cpus} +} + +func createContainer(ID string, config *dockerclient.ContainerConfig) *cluster.Container { + return &cluster.Container{Container: dockerclient.Container{Id: ID}, Info: dockerclient.ContainerInfo{Config: config}} +} + func TestPlaceContainer(t *testing.T) { - var ( - s = &BinPackingPlacementStrategy{} + s := &BinPackingPlacementStrategy{} - nodes = []*cluster.Node{ - cluster.NewNode("node-1", ""), - cluster.NewNode("node-2", ""), - cluster.NewNode("node-3", ""), - } - - config1 = &dockerclient.ContainerConfig{Memory: 1024 * 1024 * 1024, CpuShares: 1} - config2 = &dockerclient.ContainerConfig{Memory: 2 * 1024 * 1024 * 1024, CpuShares: 1} - - container1 = &cluster.Container{Container: dockerclient.Container{Id: "c1"}, - Info: dockerclient.ContainerInfo{Config: config1}} - container2 = &cluster.Container{Container: dockerclient.Container{Id: "c2"}, - Info: dockerclient.ContainerInfo{Config: config1}} - container3 = &cluster.Container{Container: dockerclient.Container{Id: "c3"}, - Info: dockerclient.ContainerInfo{Config: config2}} - container4 = &cluster.Container{Container: dockerclient.Container{Id: "c4"}, - Info: dockerclient.ContainerInfo{Config: config1}} - container5 = &cluster.Container{Container: dockerclient.Container{Id: "c5"}, - Info: dockerclient.ContainerInfo{Config: config1}} - container6 = &cluster.Container{Container: dockerclient.Container{Id: "c6"}, - Info: dockerclient.ContainerInfo{Config: config1}} - ) - - for _, node := range nodes { - node.Memory = 2 * 1024 * 1024 * 1024 - node.Cpus = 4 + nodes := []*cluster.Node{ + createNode("node-1", 2, 4), + createNode("node-2", 2, 4), + createNode("node-3", 2, 4), } + // try to place a 10G container + config := createConfig(10, 1) + _, err := s.PlaceContainer(config, nodes) + + // check that it refuses because the cluster is full + assert.Error(t, err) + // add one container 1G - node1, err := s.PlaceContainer(config1, nodes) + config = createConfig(1, 1) + node1, err := s.PlaceContainer(config, nodes) assert.NoError(t, err) - node1.AddContainer(container1) + node1.AddContainer(createContainer("c1", config)) // add another container 1G - node2, err := s.PlaceContainer(config1, nodes) + config = createConfig(1, 1) + node2, err := s.PlaceContainer(config, nodes) assert.NoError(t, err) - node2.AddContainer(container2) + node2.AddContainer(createContainer("c2", config)) // check that both containers ended on the same node assert.Equal(t, node1.ID, node2.ID, "") assert.Equal(t, len(node1.Containers()), len(node2.Containers()), "") // add another container 2G - node3, err := s.PlaceContainer(config2, nodes) + config = createConfig(2, 1) + node3, err := s.PlaceContainer(createConfig(2, 1), nodes) assert.NoError(t, err) - node3.AddContainer(container3) + node3.AddContainer(createContainer("c3", config)) // check that it ends up on another node assert.NotEqual(t, node1.ID, node3.ID, "") // add another container 1G - node4, err := s.PlaceContainer(config1, nodes) + config = createConfig(1, 1) + node4, err := s.PlaceContainer(config, nodes) assert.NoError(t, err) - node4.AddContainer(container4) + node4.AddContainer(createContainer("c4", config)) // check that it ends up on another node assert.NotEqual(t, node1.ID, node4.ID, "") assert.NotEqual(t, node3.ID, node4.ID, "") // add another container 1G - node5, err := s.PlaceContainer(config1, nodes) + config = createConfig(1, 1) + node5, err := s.PlaceContainer(config, nodes) assert.NoError(t, err) - node5.AddContainer(container5) + node5.AddContainer(createContainer("c5", config)) // check that it ends up on the same node assert.Equal(t, node4.ID, node5.ID, "") // try to add another container - _, err = s.PlaceContainer(config1, nodes) + config = createConfig(1, 1) + _, err = s.PlaceContainer(config, nodes) // check that it refuses because the cluster is full assert.Error(t, err) @@ -89,9 +94,10 @@ func TestPlaceContainer(t *testing.T) { node3.CleanupContainers() // add another container - node6, err := s.PlaceContainer(config1, nodes) + config = createConfig(1, 1) + node6, err := s.PlaceContainer(config, nodes) assert.NoError(t, err) - node6.AddContainer(container6) + node6.AddContainer(createContainer("c6", config)) // check it ends up on `node3` assert.Equal(t, node3.ID, node6.ID, "")