mirror of https://github.com/docker/docs.git
77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package task
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/docker/swarm/cluster"
|
|
"github.com/samalba/dockerclient"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type testLauncher struct {
|
|
count int
|
|
}
|
|
|
|
func (t *testLauncher) LaunchTask(_ *Task) bool {
|
|
t.count = t.count - 1
|
|
return t.count == 0
|
|
}
|
|
|
|
func TestAdd(t *testing.T) {
|
|
q := NewTasks(&testLauncher{count: 1})
|
|
|
|
task1, _ := NewTask(cluster.BuildContainerConfig(dockerclient.ContainerConfig{
|
|
Image: "test-image",
|
|
CpuShares: 42,
|
|
Memory: 2097152,
|
|
Cmd: []string{"ls", "foo", "bar"},
|
|
}), "name1")
|
|
|
|
task2, _ := NewTask(cluster.BuildContainerConfig(dockerclient.ContainerConfig{
|
|
Image: "test-image",
|
|
CpuShares: 42,
|
|
Memory: 2097152,
|
|
Cmd: []string{"ls", "foo", "bar"},
|
|
}), "name2")
|
|
q.Add(task1)
|
|
assert.Equal(t, len(q.Tasks), 0)
|
|
|
|
q.Add(task2)
|
|
assert.Equal(t, len(q.Tasks), 1)
|
|
|
|
}
|
|
|
|
func TestRemove(t *testing.T) {
|
|
q := NewTasks(&testLauncher{count: 2})
|
|
task1, _ := NewTask(cluster.BuildContainerConfig(dockerclient.ContainerConfig{
|
|
Image: "test-image",
|
|
CpuShares: 42,
|
|
Memory: 2097152,
|
|
Cmd: []string{"ls", "foo", "bar"},
|
|
}), "name1")
|
|
|
|
q.Add(task1)
|
|
assert.Equal(t, len(q.Tasks), 1)
|
|
q.Remove(task1)
|
|
assert.Equal(t, len(q.Tasks), 0)
|
|
|
|
}
|
|
|
|
func TestProcess(t *testing.T) {
|
|
q := NewTasks(&testLauncher{count: 3})
|
|
task1, _ := NewTask(cluster.BuildContainerConfig(dockerclient.ContainerConfig{
|
|
Image: "test-image",
|
|
CpuShares: 42,
|
|
Memory: 2097152,
|
|
Cmd: []string{"ls", "foo", "bar"},
|
|
}), "name1")
|
|
|
|
q.Add(task1)
|
|
assert.Equal(t, len(q.Tasks), 1)
|
|
q.Process()
|
|
assert.Equal(t, len(q.Tasks), 1)
|
|
q.Process()
|
|
assert.Equal(t, len(q.Tasks), 0)
|
|
|
|
}
|