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  }