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