github.com/ncodes/nomad@v0.5.7-0.20170403112158-97adf4a74fb3/api/compose_test.go (about) 1 package api 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/ncodes/nomad/helper" 8 ) 9 10 func TestCompose(t *testing.T) { 11 // Compose a task 12 task := NewTask("task1", "exec"). 13 SetConfig("foo", "bar"). 14 SetMeta("foo", "bar"). 15 Constrain(NewConstraint("kernel.name", "=", "linux")). 16 Require(&Resources{ 17 CPU: helper.IntToPtr(1250), 18 MemoryMB: helper.IntToPtr(1024), 19 DiskMB: helper.IntToPtr(2048), 20 IOPS: helper.IntToPtr(500), 21 Networks: []*NetworkResource{ 22 &NetworkResource{ 23 CIDR: "0.0.0.0/0", 24 MBits: helper.IntToPtr(100), 25 ReservedPorts: []Port{{"", 80}, {"", 443}}, 26 }, 27 }, 28 }) 29 30 // Compose a task group 31 grp := NewTaskGroup("grp1", 2). 32 Constrain(NewConstraint("kernel.name", "=", "linux")). 33 SetMeta("foo", "bar"). 34 AddTask(task) 35 36 // Compose a job 37 job := NewServiceJob("job1", "myjob", "region1", 2). 38 SetMeta("foo", "bar"). 39 AddDatacenter("dc1"). 40 Constrain(NewConstraint("kernel.name", "=", "linux")). 41 AddTaskGroup(grp) 42 43 // Check that the composed result looks correct 44 expect := &Job{ 45 Region: helper.StringToPtr("region1"), 46 ID: helper.StringToPtr("job1"), 47 Name: helper.StringToPtr("myjob"), 48 Type: helper.StringToPtr(JobTypeService), 49 Priority: helper.IntToPtr(2), 50 Datacenters: []string{ 51 "dc1", 52 }, 53 Meta: map[string]string{ 54 "foo": "bar", 55 }, 56 Constraints: []*Constraint{ 57 &Constraint{ 58 LTarget: "kernel.name", 59 RTarget: "linux", 60 Operand: "=", 61 }, 62 }, 63 TaskGroups: []*TaskGroup{ 64 &TaskGroup{ 65 Name: helper.StringToPtr("grp1"), 66 Count: helper.IntToPtr(2), 67 Constraints: []*Constraint{ 68 &Constraint{ 69 LTarget: "kernel.name", 70 RTarget: "linux", 71 Operand: "=", 72 }, 73 }, 74 Tasks: []*Task{ 75 &Task{ 76 Name: "task1", 77 Driver: "exec", 78 Resources: &Resources{ 79 CPU: helper.IntToPtr(1250), 80 MemoryMB: helper.IntToPtr(1024), 81 DiskMB: helper.IntToPtr(2048), 82 IOPS: helper.IntToPtr(500), 83 Networks: []*NetworkResource{ 84 &NetworkResource{ 85 CIDR: "0.0.0.0/0", 86 MBits: helper.IntToPtr(100), 87 ReservedPorts: []Port{ 88 {"", 80}, 89 {"", 443}, 90 }, 91 }, 92 }, 93 }, 94 Constraints: []*Constraint{ 95 &Constraint{ 96 LTarget: "kernel.name", 97 RTarget: "linux", 98 Operand: "=", 99 }, 100 }, 101 Config: map[string]interface{}{ 102 "foo": "bar", 103 }, 104 Meta: map[string]string{ 105 "foo": "bar", 106 }, 107 }, 108 }, 109 Meta: map[string]string{ 110 "foo": "bar", 111 }, 112 }, 113 }, 114 } 115 if !reflect.DeepEqual(job, expect) { 116 t.Fatalf("expect: %#v, got: %#v", expect, job) 117 } 118 }