Skip to content

Commit 84a1013

Browse files
committed
Invert and test CheckRestart merge logic
1 parent c341626 commit 84a1013

File tree

2 files changed

+55
-8
lines changed

2 files changed

+55
-8
lines changed

api/tasks.go

+6-8
Original file line numberDiff line numberDiff line change
@@ -128,15 +128,15 @@ func (c *CheckRestart) Merge(o *CheckRestart) *CheckRestart {
128128
return nc
129129
}
130130

131-
if nc.Limit == 0 {
131+
if o.Limit > 0 {
132132
nc.Limit = o.Limit
133133
}
134134

135-
if nc.Grace == nil {
135+
if o.Grace != nil {
136136
nc.Grace = o.Grace
137137
}
138138

139-
if !nc.IgnoreWarnings {
139+
if o.IgnoreWarnings {
140140
nc.IgnoreWarnings = o.IgnoreWarnings
141141
}
142142

@@ -185,13 +185,11 @@ func (s *Service) Canonicalize(t *Task, tg *TaskGroup, job *Job) {
185185
s.AddressMode = "auto"
186186
}
187187

188-
s.CheckRestart.Canonicalize()
189-
190188
// Canonicallize CheckRestart on Checks and merge Service.CheckRestart
191189
// into each check.
192-
for i, c := range s.Checks {
193-
s.Checks[i].CheckRestart = c.CheckRestart.Merge(s.CheckRestart)
194-
c.CheckRestart.Canonicalize()
190+
for i, check := range s.Checks {
191+
s.Checks[i].CheckRestart = s.CheckRestart.Merge(check.CheckRestart)
192+
s.Checks[i].CheckRestart.Canonicalize()
195193
}
196194
}
197195

api/tasks_test.go

+49
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package api
33
import (
44
"reflect"
55
"testing"
6+
"time"
67

78
"github.com/hashicorp/nomad/helper"
89
"github.com/stretchr/testify/assert"
@@ -266,3 +267,51 @@ func TestTaskGroup_Canonicalize_Update(t *testing.T) {
266267
tg.Canonicalize(job)
267268
assert.Nil(t, tg.Update)
268269
}
270+
271+
// TestService_CheckRestart asserts Service.CheckRestart settings are properly
272+
// inherited by Checks.
273+
func TestService_CheckRestart(t *testing.T) {
274+
job := &Job{Name: helper.StringToPtr("job")}
275+
tg := &TaskGroup{Name: helper.StringToPtr("group")}
276+
task := &Task{Name: "task"}
277+
service := &Service{
278+
CheckRestart: &CheckRestart{
279+
Limit: 11,
280+
Grace: helper.TimeToPtr(11 * time.Second),
281+
IgnoreWarnings: true,
282+
},
283+
Checks: []ServiceCheck{
284+
{
285+
Name: "all-set",
286+
CheckRestart: &CheckRestart{
287+
Limit: 22,
288+
Grace: helper.TimeToPtr(22 * time.Second),
289+
IgnoreWarnings: true,
290+
},
291+
},
292+
{
293+
Name: "some-set",
294+
CheckRestart: &CheckRestart{
295+
Limit: 33,
296+
Grace: helper.TimeToPtr(33 * time.Second),
297+
},
298+
},
299+
{
300+
Name: "unset",
301+
},
302+
},
303+
}
304+
305+
service.Canonicalize(task, tg, job)
306+
assert.Equal(t, service.Checks[0].CheckRestart.Limit, 22)
307+
assert.Equal(t, *service.Checks[0].CheckRestart.Grace, 22*time.Second)
308+
assert.True(t, service.Checks[0].CheckRestart.IgnoreWarnings)
309+
310+
assert.Equal(t, service.Checks[1].CheckRestart.Limit, 33)
311+
assert.Equal(t, *service.Checks[1].CheckRestart.Grace, 33*time.Second)
312+
assert.True(t, service.Checks[1].CheckRestart.IgnoreWarnings)
313+
314+
assert.Equal(t, service.Checks[2].CheckRestart.Limit, 11)
315+
assert.Equal(t, *service.Checks[2].CheckRestart.Grace, 11*time.Second)
316+
assert.True(t, service.Checks[2].CheckRestart.IgnoreWarnings)
317+
}

0 commit comments

Comments
 (0)