2015-09-10 00:59:18 +00:00
|
|
|
package api
|
|
|
|
|
|
|
|
import (
|
|
|
|
"reflect"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestTaskGroup_NewTaskGroup(t *testing.T) {
|
|
|
|
grp := NewTaskGroup("grp1", 2)
|
|
|
|
expect := &TaskGroup{
|
|
|
|
Name: "grp1",
|
|
|
|
Count: 2,
|
|
|
|
}
|
|
|
|
if !reflect.DeepEqual(grp, expect) {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", expect, grp)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTaskGroup_Constrain(t *testing.T) {
|
|
|
|
grp := NewTaskGroup("grp1", 1)
|
|
|
|
|
|
|
|
// Add a constraint to the group
|
2015-10-27 21:31:14 +00:00
|
|
|
out := grp.Constrain(NewConstraint("kernel.name", "=", "darwin"))
|
2015-09-10 00:59:18 +00:00
|
|
|
if n := len(grp.Constraints); n != 1 {
|
|
|
|
t.Fatalf("expected 1 constraint, got: %d", n)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check that the group was returned
|
|
|
|
if out != grp {
|
|
|
|
t.Fatalf("expected: %#v, got: %#v", grp, out)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Add a second constraint
|
2015-10-27 21:31:14 +00:00
|
|
|
grp.Constrain(NewConstraint("memory.totalbytes", ">=", "128000000"))
|
2015-09-10 00:59:18 +00:00
|
|
|
expect := []*Constraint{
|
|
|
|
&Constraint{
|
|
|
|
LTarget: "kernel.name",
|
|
|
|
RTarget: "darwin",
|
|
|
|
Operand: "=",
|
|
|
|
},
|
|
|
|
&Constraint{
|
|
|
|
LTarget: "memory.totalbytes",
|
|
|
|
RTarget: "128000000",
|
|
|
|
Operand: ">=",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
if !reflect.DeepEqual(grp.Constraints, expect) {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", expect, grp.Constraints)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTaskGroup_SetMeta(t *testing.T) {
|
|
|
|
grp := NewTaskGroup("grp1", 1)
|
|
|
|
|
|
|
|
// Initializes an empty map
|
|
|
|
out := grp.SetMeta("foo", "bar")
|
|
|
|
if grp.Meta == nil {
|
|
|
|
t.Fatalf("should be initialized")
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check that we returned the group
|
|
|
|
if out != grp {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", grp, out)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Add a second meta k/v
|
|
|
|
grp.SetMeta("baz", "zip")
|
|
|
|
expect := map[string]string{"foo": "bar", "baz": "zip"}
|
|
|
|
if !reflect.DeepEqual(grp.Meta, expect) {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", expect, grp.Meta)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTaskGroup_AddTask(t *testing.T) {
|
|
|
|
grp := NewTaskGroup("grp1", 1)
|
|
|
|
|
|
|
|
// Add the task to the task group
|
|
|
|
out := grp.AddTask(NewTask("task1", "java"))
|
|
|
|
if n := len(grp.Tasks); n != 1 {
|
|
|
|
t.Fatalf("expected 1 task, got: %d", n)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check that we returned the group
|
|
|
|
if out != grp {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", grp, out)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Add a second task
|
|
|
|
grp.AddTask(NewTask("task2", "exec"))
|
|
|
|
expect := []*Task{
|
|
|
|
&Task{
|
|
|
|
Name: "task1",
|
|
|
|
Driver: "java",
|
|
|
|
},
|
|
|
|
&Task{
|
|
|
|
Name: "task2",
|
|
|
|
Driver: "exec",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
if !reflect.DeepEqual(grp.Tasks, expect) {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", expect, grp.Tasks)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTask_NewTask(t *testing.T) {
|
|
|
|
task := NewTask("task1", "exec")
|
|
|
|
expect := &Task{
|
|
|
|
Name: "task1",
|
|
|
|
Driver: "exec",
|
|
|
|
}
|
|
|
|
if !reflect.DeepEqual(task, expect) {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", expect, task)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTask_SetConfig(t *testing.T) {
|
|
|
|
task := NewTask("task1", "exec")
|
|
|
|
|
|
|
|
// Initializes an empty map
|
|
|
|
out := task.SetConfig("foo", "bar")
|
|
|
|
if task.Config == nil {
|
|
|
|
t.Fatalf("should be initialized")
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check that we returned the task
|
|
|
|
if out != task {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", task, out)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set another config value
|
|
|
|
task.SetConfig("baz", "zip")
|
|
|
|
expect := map[string]string{"foo": "bar", "baz": "zip"}
|
|
|
|
if !reflect.DeepEqual(task.Config, expect) {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", expect, task.Config)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTask_SetMeta(t *testing.T) {
|
|
|
|
task := NewTask("task1", "exec")
|
|
|
|
|
|
|
|
// Initializes an empty map
|
|
|
|
out := task.SetMeta("foo", "bar")
|
|
|
|
if task.Meta == nil {
|
|
|
|
t.Fatalf("should be initialized")
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check that we returned the task
|
|
|
|
if out != task {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", task, out)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set another meta k/v
|
|
|
|
task.SetMeta("baz", "zip")
|
|
|
|
expect := map[string]string{"foo": "bar", "baz": "zip"}
|
|
|
|
if !reflect.DeepEqual(task.Meta, expect) {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", expect, task.Meta)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTask_Require(t *testing.T) {
|
|
|
|
task := NewTask("task1", "exec")
|
|
|
|
|
|
|
|
// Create some require resources
|
|
|
|
resources := &Resources{
|
2015-09-23 18:14:32 +00:00
|
|
|
CPU: 1250,
|
2015-09-10 00:59:18 +00:00
|
|
|
MemoryMB: 128,
|
|
|
|
DiskMB: 2048,
|
2015-10-06 22:44:01 +00:00
|
|
|
IOPS: 500,
|
2015-09-10 00:59:18 +00:00
|
|
|
Networks: []*NetworkResource{
|
|
|
|
&NetworkResource{
|
|
|
|
CIDR: "0.0.0.0/0",
|
|
|
|
MBits: 100,
|
|
|
|
ReservedPorts: []int{80, 443},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
out := task.Require(resources)
|
|
|
|
if !reflect.DeepEqual(task.Resources, resources) {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", resources, task.Resources)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check that we returned the task
|
|
|
|
if out != task {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", task, out)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTask_Constrain(t *testing.T) {
|
|
|
|
task := NewTask("task1", "exec")
|
|
|
|
|
|
|
|
// Add a constraint to the task
|
2015-10-27 21:31:14 +00:00
|
|
|
out := task.Constrain(NewConstraint("kernel.name", "=", "darwin"))
|
2015-09-10 00:59:18 +00:00
|
|
|
if n := len(task.Constraints); n != 1 {
|
|
|
|
t.Fatalf("expected 1 constraint, got: %d", n)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check that the task was returned
|
|
|
|
if out != task {
|
|
|
|
t.Fatalf("expected: %#v, got: %#v", task, out)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Add a second constraint
|
2015-10-27 21:31:14 +00:00
|
|
|
task.Constrain(NewConstraint("memory.totalbytes", ">=", "128000000"))
|
2015-09-10 00:59:18 +00:00
|
|
|
expect := []*Constraint{
|
|
|
|
&Constraint{
|
|
|
|
LTarget: "kernel.name",
|
|
|
|
RTarget: "darwin",
|
|
|
|
Operand: "=",
|
|
|
|
},
|
|
|
|
&Constraint{
|
|
|
|
LTarget: "memory.totalbytes",
|
|
|
|
RTarget: "128000000",
|
|
|
|
Operand: ">=",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
if !reflect.DeepEqual(task.Constraints, expect) {
|
|
|
|
t.Fatalf("expect: %#v, got: %#v", expect, task.Constraints)
|
|
|
|
}
|
|
|
|
}
|