github.com/blixtra/nomad@v0.7.2-0.20171221000451-da9a1d7bb050/api/jobs_testing.go (about) 1 package api 2 3 import ( 4 "time" 5 6 "github.com/hashicorp/nomad/helper" 7 "github.com/hashicorp/nomad/helper/uuid" 8 ) 9 10 func MockJob() *Job { 11 job := &Job{ 12 Region: helper.StringToPtr("global"), 13 ID: helper.StringToPtr(uuid.Generate()), 14 Name: helper.StringToPtr("my-job"), 15 Type: helper.StringToPtr("service"), 16 Priority: helper.IntToPtr(50), 17 AllAtOnce: helper.BoolToPtr(false), 18 Datacenters: []string{"dc1"}, 19 Constraints: []*Constraint{ 20 { 21 LTarget: "${attr.kernel.name}", 22 RTarget: "linux", 23 Operand: "=", 24 }, 25 }, 26 TaskGroups: []*TaskGroup{ 27 { 28 Name: helper.StringToPtr("web"), 29 Count: helper.IntToPtr(10), 30 EphemeralDisk: &EphemeralDisk{ 31 SizeMB: helper.IntToPtr(150), 32 }, 33 RestartPolicy: &RestartPolicy{ 34 Attempts: helper.IntToPtr(3), 35 Interval: helper.TimeToPtr(10 * time.Minute), 36 Delay: helper.TimeToPtr(1 * time.Minute), 37 Mode: helper.StringToPtr("delay"), 38 }, 39 Tasks: []*Task{ 40 { 41 Name: "web", 42 Driver: "exec", 43 Config: map[string]interface{}{ 44 "command": "/bin/date", 45 }, 46 Env: map[string]string{ 47 "FOO": "bar", 48 }, 49 Services: []*Service{ 50 { 51 Name: "${TASK}-frontend", 52 PortLabel: "http", 53 Tags: []string{"pci:${meta.pci-dss}", "datacenter:${node.datacenter}"}, 54 Checks: []ServiceCheck{ 55 { 56 Name: "check-table", 57 Type: "script", 58 Command: "/usr/local/check-table-${meta.database}", 59 Args: []string{"${meta.version}"}, 60 Interval: 30 * time.Second, 61 Timeout: 5 * time.Second, 62 }, 63 }, 64 }, 65 { 66 Name: "${TASK}-admin", 67 PortLabel: "admin", 68 }, 69 }, 70 LogConfig: DefaultLogConfig(), 71 Resources: &Resources{ 72 CPU: helper.IntToPtr(500), 73 MemoryMB: helper.IntToPtr(256), 74 Networks: []*NetworkResource{ 75 { 76 MBits: helper.IntToPtr(50), 77 DynamicPorts: []Port{{Label: "http"}, {Label: "admin"}}, 78 }, 79 }, 80 }, 81 Meta: map[string]string{ 82 "foo": "bar", 83 }, 84 }, 85 }, 86 Meta: map[string]string{ 87 "elb_check_type": "http", 88 "elb_check_interval": "30s", 89 "elb_check_min": "3", 90 }, 91 }, 92 }, 93 Meta: map[string]string{ 94 "owner": "armon", 95 }, 96 } 97 job.Canonicalize() 98 return job 99 } 100 101 func MockPeriodicJob() *Job { 102 j := MockJob() 103 j.Type = helper.StringToPtr("batch") 104 j.Periodic = &PeriodicConfig{ 105 Enabled: helper.BoolToPtr(true), 106 SpecType: helper.StringToPtr("cron"), 107 Spec: helper.StringToPtr("*/30 * * * *"), 108 } 109 return j 110 }