Rename DelayCeiling to MaxDelay

This commit is contained in:
Preetha Appan
2018-03-13 10:06:26 -05:00
parent 73783e023f
commit d4056c4489
14 changed files with 96 additions and 95 deletions

View File

@@ -67,6 +67,7 @@ type Evaluation struct {
Status string
StatusDescription string
Wait time.Duration
WaitUntil time.Time
NextEval string
PreviousEval string
BlockedEval string

View File

@@ -140,7 +140,7 @@ func TestJobs_Canonicalize(t *testing.T) {
Interval: helper.TimeToPtr(0),
DelayFunction: helper.StringToPtr("exponential"),
Delay: helper.TimeToPtr(30 * time.Second),
DelayCeiling: helper.TimeToPtr(1 * time.Hour),
MaxDelay: helper.TimeToPtr(1 * time.Hour),
Unlimited: helper.BoolToPtr(true),
},
Tasks: []*Task{
@@ -210,7 +210,7 @@ func TestJobs_Canonicalize(t *testing.T) {
Interval: helper.TimeToPtr(0),
DelayFunction: helper.StringToPtr("exponential"),
Delay: helper.TimeToPtr(30 * time.Second),
DelayCeiling: helper.TimeToPtr(1 * time.Hour),
MaxDelay: helper.TimeToPtr(1 * time.Hour),
Unlimited: helper.BoolToPtr(true),
},
Tasks: []*Task{
@@ -347,7 +347,7 @@ func TestJobs_Canonicalize(t *testing.T) {
Interval: helper.TimeToPtr(0),
DelayFunction: helper.StringToPtr("exponential"),
Delay: helper.TimeToPtr(30 * time.Second),
DelayCeiling: helper.TimeToPtr(1 * time.Hour),
MaxDelay: helper.TimeToPtr(1 * time.Hour),
Unlimited: helper.BoolToPtr(true),
},
EphemeralDisk: &EphemeralDisk{
@@ -566,7 +566,7 @@ func TestJobs_Canonicalize(t *testing.T) {
Interval: helper.TimeToPtr(0),
DelayFunction: helper.StringToPtr("exponential"),
Delay: helper.TimeToPtr(30 * time.Second),
DelayCeiling: helper.TimeToPtr(1 * time.Hour),
MaxDelay: helper.TimeToPtr(1 * time.Hour),
Unlimited: helper.BoolToPtr(true),
},
Update: &UpdateStrategy{
@@ -606,7 +606,7 @@ func TestJobs_Canonicalize(t *testing.T) {
Interval: helper.TimeToPtr(0),
DelayFunction: helper.StringToPtr("exponential"),
Delay: helper.TimeToPtr(30 * time.Second),
DelayCeiling: helper.TimeToPtr(1 * time.Hour),
MaxDelay: helper.TimeToPtr(1 * time.Hour),
Unlimited: helper.BoolToPtr(true),
},
Update: &UpdateStrategy{

View File

@@ -95,8 +95,8 @@ type ReschedulePolicy struct {
// attempts. Valid values are "exponential", "linear", and "fibonacci".
DelayFunction *string `mapstructure:"delay_function"`
// DelayCeiling is an upper bound on the delay.
DelayCeiling *time.Duration `mapstructure:"delay_ceiling"`
// MaxDelay is an upper bound on the delay.
MaxDelay *time.Duration `mapstructure:"max_delay"`
// Unlimited allows rescheduling attempts until they succeed
Unlimited *bool `mapstructure:"unlimited"`
@@ -115,8 +115,8 @@ func (r *ReschedulePolicy) Merge(rp *ReschedulePolicy) {
if rp.DelayFunction != nil {
r.DelayFunction = rp.DelayFunction
}
if rp.DelayCeiling != nil {
r.DelayCeiling = rp.DelayCeiling
if rp.MaxDelay != nil {
r.MaxDelay = rp.MaxDelay
}
if rp.Unlimited != nil {
r.Unlimited = rp.Unlimited
@@ -346,7 +346,7 @@ func (g *TaskGroup) Canonicalize(job *Job) {
Interval: helper.TimeToPtr(structs.DefaultServiceJobReschedulePolicy.Interval),
Delay: helper.TimeToPtr(structs.DefaultServiceJobReschedulePolicy.Delay),
DelayFunction: helper.StringToPtr(structs.DefaultServiceJobReschedulePolicy.DelayFunction),
DelayCeiling: helper.TimeToPtr(structs.DefaultServiceJobReschedulePolicy.DelayCeiling),
MaxDelay: helper.TimeToPtr(structs.DefaultServiceJobReschedulePolicy.MaxDelay),
Unlimited: helper.BoolToPtr(structs.DefaultServiceJobReschedulePolicy.Unlimited),
}
case "batch":
@@ -355,7 +355,7 @@ func (g *TaskGroup) Canonicalize(job *Job) {
Interval: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.Interval),
Delay: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.Delay),
DelayFunction: helper.StringToPtr(structs.DefaultBatchJobReschedulePolicy.DelayFunction),
DelayCeiling: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.DelayCeiling),
MaxDelay: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.MaxDelay),
Unlimited: helper.BoolToPtr(structs.DefaultBatchJobReschedulePolicy.Unlimited),
}
default:

View File

@@ -288,7 +288,7 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
Interval: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.Interval),
Delay: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.Delay),
DelayFunction: helper.StringToPtr(structs.DefaultBatchJobReschedulePolicy.DelayFunction),
DelayCeiling: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.DelayCeiling),
MaxDelay: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.MaxDelay),
Unlimited: helper.BoolToPtr(structs.DefaultBatchJobReschedulePolicy.Unlimited),
},
},
@@ -298,7 +298,7 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
Attempts: helper.IntToPtr(0),
Interval: helper.TimeToPtr(0),
Delay: helper.TimeToPtr(0),
DelayCeiling: helper.TimeToPtr(0),
MaxDelay: helper.TimeToPtr(0),
DelayFunction: helper.StringToPtr(""),
Unlimited: helper.BoolToPtr(false),
},
@@ -307,7 +307,7 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
Attempts: helper.IntToPtr(0),
Interval: helper.TimeToPtr(0),
Delay: helper.TimeToPtr(0),
DelayCeiling: helper.TimeToPtr(0),
MaxDelay: helper.TimeToPtr(0),
DelayFunction: helper.StringToPtr(""),
Unlimited: helper.BoolToPtr(false),
},
@@ -318,7 +318,7 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
Attempts: helper.IntToPtr(1),
Interval: helper.TimeToPtr(20 * time.Second),
Delay: helper.TimeToPtr(20 * time.Second),
DelayCeiling: helper.TimeToPtr(10 * time.Minute),
MaxDelay: helper.TimeToPtr(10 * time.Minute),
DelayFunction: helper.StringToPtr("linear"),
Unlimited: helper.BoolToPtr(false),
},
@@ -327,7 +327,7 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
Attempts: helper.IntToPtr(1),
Interval: helper.TimeToPtr(20 * time.Second),
Delay: helper.TimeToPtr(20 * time.Second),
DelayCeiling: helper.TimeToPtr(10 * time.Minute),
MaxDelay: helper.TimeToPtr(10 * time.Minute),
DelayFunction: helper.StringToPtr("linear"),
Unlimited: helper.BoolToPtr(false),
},
@@ -339,7 +339,7 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
Attempts: helper.IntToPtr(5),
Interval: helper.TimeToPtr(2 * time.Minute),
Delay: helper.TimeToPtr(20 * time.Second),
DelayCeiling: helper.TimeToPtr(10 * time.Minute),
MaxDelay: helper.TimeToPtr(10 * time.Minute),
DelayFunction: helper.StringToPtr("linear"),
Unlimited: helper.BoolToPtr(false),
},
@@ -347,7 +347,7 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
Attempts: helper.IntToPtr(5),
Interval: helper.TimeToPtr(2 * time.Minute),
Delay: helper.TimeToPtr(20 * time.Second),
DelayCeiling: helper.TimeToPtr(10 * time.Minute),
MaxDelay: helper.TimeToPtr(10 * time.Minute),
DelayFunction: helper.StringToPtr("linear"),
Unlimited: helper.BoolToPtr(false),
},
@@ -355,9 +355,9 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
{
desc: "Merge from job",
jobReschedulePolicy: &ReschedulePolicy{
Attempts: helper.IntToPtr(1),
Delay: helper.TimeToPtr(20 * time.Second),
DelayCeiling: helper.TimeToPtr(10 * time.Minute),
Attempts: helper.IntToPtr(1),
Delay: helper.TimeToPtr(20 * time.Second),
MaxDelay: helper.TimeToPtr(10 * time.Minute),
},
taskReschedulePolicy: &ReschedulePolicy{
Interval: helper.TimeToPtr(5 * time.Minute),
@@ -368,7 +368,7 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
Attempts: helper.IntToPtr(1),
Interval: helper.TimeToPtr(5 * time.Minute),
Delay: helper.TimeToPtr(20 * time.Second),
DelayCeiling: helper.TimeToPtr(10 * time.Minute),
MaxDelay: helper.TimeToPtr(10 * time.Minute),
DelayFunction: helper.StringToPtr("linear"),
Unlimited: helper.BoolToPtr(false),
},
@@ -376,13 +376,13 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
{
desc: "Override from group",
jobReschedulePolicy: &ReschedulePolicy{
Attempts: helper.IntToPtr(1),
DelayCeiling: helper.TimeToPtr(10 * time.Second),
Attempts: helper.IntToPtr(1),
MaxDelay: helper.TimeToPtr(10 * time.Second),
},
taskReschedulePolicy: &ReschedulePolicy{
Attempts: helper.IntToPtr(5),
Delay: helper.TimeToPtr(20 * time.Second),
DelayCeiling: helper.TimeToPtr(20 * time.Minute),
MaxDelay: helper.TimeToPtr(20 * time.Minute),
DelayFunction: helper.StringToPtr("linear"),
Unlimited: helper.BoolToPtr(false),
},
@@ -390,7 +390,7 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
Attempts: helper.IntToPtr(5),
Interval: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.Interval),
Delay: helper.TimeToPtr(20 * time.Second),
DelayCeiling: helper.TimeToPtr(20 * time.Minute),
MaxDelay: helper.TimeToPtr(20 * time.Minute),
DelayFunction: helper.StringToPtr("linear"),
Unlimited: helper.BoolToPtr(false),
},
@@ -406,7 +406,7 @@ func TestTaskGroup_Canonicalize_ReschedulePolicy(t *testing.T) {
Interval: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.Interval),
Delay: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.Delay),
DelayFunction: helper.StringToPtr(structs.DefaultBatchJobReschedulePolicy.DelayFunction),
DelayCeiling: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.DelayCeiling),
MaxDelay: helper.TimeToPtr(structs.DefaultBatchJobReschedulePolicy.MaxDelay),
Unlimited: helper.BoolToPtr(structs.DefaultBatchJobReschedulePolicy.Unlimited),
},
},

View File

@@ -643,7 +643,7 @@ func ApiTgToStructsTG(taskGroup *api.TaskGroup, tg *structs.TaskGroup) {
Interval: *taskGroup.ReschedulePolicy.Interval,
Delay: *taskGroup.ReschedulePolicy.Delay,
DelayFunction: *taskGroup.ReschedulePolicy.DelayFunction,
DelayCeiling: *taskGroup.ReschedulePolicy.DelayCeiling,
MaxDelay: *taskGroup.ReschedulePolicy.MaxDelay,
Unlimited: *taskGroup.ReschedulePolicy.Unlimited,
}

View File

@@ -1177,7 +1177,7 @@ func TestJobs_ApiJobToStructsJob(t *testing.T) {
DelayFunction: helper.StringToPtr("linear"),
Delay: helper.TimeToPtr(30 * time.Second),
Unlimited: helper.BoolToPtr(true),
DelayCeiling: helper.TimeToPtr(20 * time.Minute),
MaxDelay: helper.TimeToPtr(20 * time.Minute),
},
EphemeralDisk: &api.EphemeralDisk{
SizeMB: helper.IntToPtr(100),
@@ -1393,7 +1393,7 @@ func TestJobs_ApiJobToStructsJob(t *testing.T) {
DelayFunction: "linear",
Delay: 30 * time.Second,
Unlimited: true,
DelayCeiling: 20 * time.Minute,
MaxDelay: 20 * time.Minute,
},
EphemeralDisk: &structs.EphemeralDisk{
SizeMB: 100,

View File

@@ -448,7 +448,7 @@ func parseReschedulePolicy(final **api.ReschedulePolicy, list *ast.ObjectList) e
"interval",
"unlimited",
"delay",
"delay_ceiling",
"max_delay",
"delay_function",
}
if err := helper.CheckHCLKeys(obj.Val, valid); err != nil {

View File

@@ -713,7 +713,7 @@ func TestParse(t *testing.T) {
Reschedule: &api.ReschedulePolicy{
DelayFunction: helper.StringToPtr("exponential"),
Delay: helper.TimeToPtr(10 * time.Second),
DelayCeiling: helper.TimeToPtr(120 * time.Second),
MaxDelay: helper.TimeToPtr(120 * time.Second),
Unlimited: helper.BoolToPtr(true),
},
TaskGroups: []*api.TaskGroup{

View File

@@ -4,7 +4,7 @@ job "foo" {
reschedule {
delay = "10s",
delay_function = "exponential"
delay_ceiling="120s"
max_delay="120s"
unlimited = true
}
group "bar" {

View File

@@ -1502,7 +1502,7 @@ func TestTaskGroupDiff(t *testing.T) {
Attempts: 1,
Interval: 15 * time.Second,
Delay: 5 * time.Second,
DelayCeiling: 20 * time.Second,
MaxDelay: 20 * time.Second,
DelayFunction: "exponential",
Unlimited: false,
},
@@ -1526,12 +1526,6 @@ func TestTaskGroupDiff(t *testing.T) {
Old: "",
New: "5000000000",
},
{
Type: DiffTypeAdded,
Name: "DelayCeiling",
Old: "",
New: "20000000000",
},
{
Type: DiffTypeAdded,
Name: "DelayFunction",
@@ -1544,6 +1538,12 @@ func TestTaskGroupDiff(t *testing.T) {
Old: "",
New: "15000000000",
},
{
Type: DiffTypeAdded,
Name: "MaxDelay",
Old: "",
New: "20000000000",
},
{
Type: DiffTypeAdded,
Name: "Unlimited",
@@ -1562,7 +1562,7 @@ func TestTaskGroupDiff(t *testing.T) {
Attempts: 1,
Interval: 15 * time.Second,
Delay: 5 * time.Second,
DelayCeiling: 20 * time.Second,
MaxDelay: 20 * time.Second,
DelayFunction: "exponential",
Unlimited: false,
},
@@ -1587,12 +1587,6 @@ func TestTaskGroupDiff(t *testing.T) {
Old: "5000000000",
New: "",
},
{
Type: DiffTypeDeleted,
Name: "DelayCeiling",
Old: "20000000000",
New: "",
},
{
Type: DiffTypeDeleted,
Name: "DelayFunction",
@@ -1605,6 +1599,12 @@ func TestTaskGroupDiff(t *testing.T) {
Old: "15000000000",
New: "",
},
{
Type: DiffTypeDeleted,
Name: "MaxDelay",
Old: "20000000000",
New: "",
},
{
Type: DiffTypeDeleted,
Name: "Unlimited",
@@ -1624,7 +1624,7 @@ func TestTaskGroupDiff(t *testing.T) {
Interval: 1 * time.Second,
DelayFunction: "exponential",
Delay: 20 * time.Second,
DelayCeiling: 1 * time.Minute,
MaxDelay: 1 * time.Minute,
Unlimited: false,
},
},
@@ -1634,7 +1634,7 @@ func TestTaskGroupDiff(t *testing.T) {
Interval: 2 * time.Second,
DelayFunction: "linear",
Delay: 30 * time.Second,
DelayCeiling: 1 * time.Minute,
MaxDelay: 1 * time.Minute,
Unlimited: true,
},
},
@@ -1713,12 +1713,6 @@ func TestTaskGroupDiff(t *testing.T) {
Old: "0",
New: "0",
},
{
Type: DiffTypeNone,
Name: "DelayCeiling",
Old: "0",
New: "0",
},
{
Type: DiffTypeNone,
Name: "DelayFunction",
@@ -1731,6 +1725,12 @@ func TestTaskGroupDiff(t *testing.T) {
Old: "1000000000",
New: "2000000000",
},
{
Type: DiffTypeNone,
Name: "MaxDelay",
Old: "0",
New: "0",
},
{
Type: DiffTypeNone,
Name: "Unlimited",

View File

@@ -2660,7 +2660,7 @@ var (
DefaultServiceJobReschedulePolicy = ReschedulePolicy{
Delay: 30 * time.Second,
DelayFunction: "exponential",
DelayCeiling: 1 * time.Hour,
MaxDelay: 1 * time.Hour,
Unlimited: true,
}
DefaultBatchJobReschedulePolicy = ReschedulePolicy{
@@ -2770,8 +2770,8 @@ type ReschedulePolicy struct {
// attempts. Valid values are "exponential", "linear", and "fibonacci".
DelayFunction string
// DelayCeiling is an upper bound on the delay.
DelayCeiling time.Duration
// MaxDelay is an upper bound on the delay.
MaxDelay time.Duration
// Unlimited allows infinite rescheduling attempts. Only allowed when delay is set
// between reschedule attempts.
@@ -2812,14 +2812,14 @@ func (r *ReschedulePolicy) Validate() error {
delayPreCheck = false
}
// Validate DelayCeiling if not using linear delay progression
// Validate MaxDelay if not using linear delay progression
if r.DelayFunction != "linear" {
if r.DelayCeiling.Nanoseconds() < ReschedulePolicyMinDelay.Nanoseconds() {
if r.MaxDelay.Nanoseconds() < ReschedulePolicyMinDelay.Nanoseconds() {
multierror.Append(&mErr, fmt.Errorf("Delay Ceiling cannot be less than %v (got %v)", ReschedulePolicyMinDelay, r.Delay))
delayPreCheck = false
}
if r.DelayCeiling < r.Delay {
multierror.Append(&mErr, fmt.Errorf("Delay Ceiling cannot be less than Delay %v (got %v)", r.Delay, r.DelayCeiling))
if r.MaxDelay < r.Delay {
multierror.Append(&mErr, fmt.Errorf("Delay Ceiling cannot be less than Delay %v (got %v)", r.Delay, r.MaxDelay))
delayPreCheck = false
}
@@ -2862,7 +2862,7 @@ func (r *ReschedulePolicy) validateDelayParams() error {
"delay function %q", possibleAttempts, r.Interval, r.Delay, r.DelayFunction))
} else {
multierror.Append(&mErr, fmt.Errorf("Nomad can only make %v attempts in %v with initial delay %v, "+
"delay function %q, and delay ceiling %v", possibleAttempts, r.Interval, r.Delay, r.DelayFunction, r.DelayCeiling))
"delay function %q, and delay ceiling %v", possibleAttempts, r.Interval, r.Delay, r.DelayFunction, r.MaxDelay))
}
multierror.Append(&mErr, fmt.Errorf("Set the interval to at least %v to accommodate %v attempts", recommendedInterval.Round(time.Minute), r.Attempts))
return mErr.ErrorOrNil()
@@ -2882,8 +2882,8 @@ func (r *ReschedulePolicy) viableAttempts() (bool, int, time.Duration) {
case "exponential":
for i := 0; i < r.Attempts; i++ {
nextDelay := time.Duration(math.Pow(2, float64(i))) * r.Delay
if nextDelay > r.DelayCeiling {
nextDelay = r.DelayCeiling
if nextDelay > r.MaxDelay {
nextDelay = r.MaxDelay
recommendedInterval += nextDelay
} else {
recommendedInterval = nextDelay
@@ -2904,11 +2904,11 @@ func (r *ReschedulePolicy) viableAttempts() (bool, int, time.Duration) {
var nextDelay time.Duration
if reachedCeiling {
//switch to linear
nextDelay = slots[i-1] + r.DelayCeiling
nextDelay = slots[i-1] + r.MaxDelay
} else {
nextDelay = slots[i-1] + slots[i-2]
if nextDelay > r.DelayCeiling {
nextDelay = r.DelayCeiling
if nextDelay > r.MaxDelay {
nextDelay = r.MaxDelay
reachedCeiling = true
}
}
@@ -5556,7 +5556,7 @@ func (a *Allocation) NextDelay() time.Duration {
fibN2Delay := events[len(events)-2].Delay
// Handle reset of delay ceiling which should cause
// a new series to start
if fibN2Delay == policy.DelayCeiling && fibN1Delay == policy.Delay {
if fibN2Delay == policy.MaxDelay && fibN1Delay == policy.Delay {
delayDur = fibN1Delay
} else {
delayDur = fibN1Delay + fibN2Delay
@@ -5565,8 +5565,8 @@ func (a *Allocation) NextDelay() time.Duration {
default:
return delayDur
}
if policy.DelayCeiling > 0 && delayDur > policy.DelayCeiling {
delayDur = policy.DelayCeiling
if policy.MaxDelay > 0 && delayDur > policy.MaxDelay {
delayDur = policy.MaxDelay
// check if delay needs to be reset
lastRescheduleEvent := a.RescheduleTracker.Events[len(a.RescheduleTracker.Events)-1]

View File

@@ -2464,7 +2464,7 @@ func TestReschedulePolicy_Validate(t *testing.T) {
Attempts: 5,
Interval: 1 * time.Hour,
Delay: 30 * time.Second,
DelayCeiling: 5 * time.Minute,
MaxDelay: 5 * time.Minute,
DelayFunction: "exponential"},
},
{
@@ -2473,7 +2473,7 @@ func TestReschedulePolicy_Validate(t *testing.T) {
Attempts: 5,
Interval: 15 * time.Minute,
Delay: 10 * time.Second,
DelayCeiling: 5 * time.Minute,
MaxDelay: 5 * time.Minute,
DelayFunction: "fibonacci"},
},
{
@@ -2495,7 +2495,7 @@ func TestReschedulePolicy_Validate(t *testing.T) {
Interval: 8 * time.Second,
DelayFunction: "exponential",
Delay: 15 * time.Second,
DelayCeiling: 5 * time.Second},
MaxDelay: 5 * time.Second},
errors: []error{
fmt.Errorf("Delay Ceiling cannot be less than Delay %v (got %v)",
15*time.Second, 5*time.Second),
@@ -2535,7 +2535,7 @@ func TestReschedulePolicy_Validate(t *testing.T) {
Attempts: 10,
Interval: 30 * time.Minute,
Delay: 5 * time.Minute,
DelayCeiling: 40 * time.Minute,
MaxDelay: 40 * time.Minute,
DelayFunction: "exponential",
},
errors: []error{
@@ -2554,7 +2554,7 @@ func TestReschedulePolicy_Validate(t *testing.T) {
Attempts: 10,
Interval: 1 * time.Hour,
Delay: 20 * time.Minute,
DelayCeiling: 80 * time.Minute,
MaxDelay: 80 * time.Minute,
DelayFunction: "fibonacci",
},
errors: []error{
@@ -2572,7 +2572,7 @@ func TestReschedulePolicy_Validate(t *testing.T) {
Unlimited: true,
DelayFunction: "exponential",
Delay: 5 * time.Minute,
DelayCeiling: 1 * time.Hour,
MaxDelay: 1 * time.Hour,
},
},
{
@@ -3115,7 +3115,7 @@ func TestAllocation_NextDelay(t *testing.T) {
reschedulePolicy: &ReschedulePolicy{
DelayFunction: "exponential",
Delay: 5 * time.Second,
DelayCeiling: 90 * time.Second,
MaxDelay: 90 * time.Second,
Unlimited: true,
},
alloc: &Allocation{
@@ -3132,7 +3132,7 @@ func TestAllocation_NextDelay(t *testing.T) {
reschedulePolicy: &ReschedulePolicy{
DelayFunction: "exponential",
Delay: 5 * time.Second,
DelayCeiling: 90 * time.Second,
MaxDelay: 90 * time.Second,
Unlimited: true,
},
alloc: &Allocation{
@@ -3164,7 +3164,7 @@ func TestAllocation_NextDelay(t *testing.T) {
reschedulePolicy: &ReschedulePolicy{
DelayFunction: "exponential",
Delay: 5 * time.Second,
DelayCeiling: 90 * time.Second,
MaxDelay: 90 * time.Second,
Unlimited: true,
},
alloc: &Allocation{
@@ -3205,7 +3205,7 @@ func TestAllocation_NextDelay(t *testing.T) {
reschedulePolicy: &ReschedulePolicy{
DelayFunction: "exponential",
Delay: 5 * time.Second,
DelayCeiling: 90 * time.Second,
MaxDelay: 90 * time.Second,
Unlimited: true,
},
alloc: &Allocation{
@@ -3253,7 +3253,7 @@ func TestAllocation_NextDelay(t *testing.T) {
reschedulePolicy: &ReschedulePolicy{
DelayFunction: "fibonacci",
Delay: 5 * time.Second,
DelayCeiling: 90 * time.Second,
MaxDelay: 90 * time.Second,
Unlimited: true,
},
alloc: &Allocation{
@@ -3269,7 +3269,7 @@ func TestAllocation_NextDelay(t *testing.T) {
reschedulePolicy: &ReschedulePolicy{
DelayFunction: "fibonacci",
Delay: 5 * time.Second,
DelayCeiling: 90 * time.Second,
MaxDelay: 90 * time.Second,
Unlimited: true,
},
alloc: &Allocation{
@@ -3297,7 +3297,7 @@ func TestAllocation_NextDelay(t *testing.T) {
reschedulePolicy: &ReschedulePolicy{
DelayFunction: "fibonacci",
Delay: 5 * time.Second,
DelayCeiling: 90 * time.Second,
MaxDelay: 90 * time.Second,
Unlimited: true,
},
alloc: &Allocation{
@@ -3337,7 +3337,7 @@ func TestAllocation_NextDelay(t *testing.T) {
reschedulePolicy: &ReschedulePolicy{
DelayFunction: "fibonacci",
Delay: 5 * time.Second,
DelayCeiling: 50 * time.Second,
MaxDelay: 50 * time.Second,
Unlimited: true,
},
alloc: &Allocation{
@@ -3381,7 +3381,7 @@ func TestAllocation_NextDelay(t *testing.T) {
reschedulePolicy: &ReschedulePolicy{
DelayFunction: "fibonacci",
Delay: 5 * time.Second,
DelayCeiling: 50 * time.Second,
MaxDelay: 50 * time.Second,
Unlimited: true,
},
alloc: &Allocation{
@@ -3425,7 +3425,7 @@ func TestAllocation_NextDelay(t *testing.T) {
reschedulePolicy: &ReschedulePolicy{
DelayFunction: "fibonacci",
Delay: 5 * time.Second,
DelayCeiling: 50 * time.Second,
MaxDelay: 50 * time.Second,
Unlimited: true,
},
alloc: &Allocation{

View File

@@ -2733,7 +2733,7 @@ func TestServiceSched_Reschedule_OnceNow(t *testing.T) {
Attempts: 1,
Interval: 15 * time.Minute,
Delay: 5 * time.Second,
DelayCeiling: 1 * time.Minute,
MaxDelay: 1 * time.Minute,
DelayFunction: "linear",
}
tgName := job.TaskGroups[0].Name
@@ -2846,7 +2846,7 @@ func TestServiceSched_Reschedule_Later(t *testing.T) {
Attempts: 1,
Interval: 15 * time.Minute,
Delay: delayDuration,
DelayCeiling: 1 * time.Minute,
MaxDelay: 1 * time.Minute,
DelayFunction: "linear",
}
tgName := job.TaskGroups[0].Name
@@ -3072,7 +3072,7 @@ func TestServiceSched_Reschedule_PruneEvents(t *testing.T) {
job.TaskGroups[0].Count = 2
job.TaskGroups[0].ReschedulePolicy = &structs.ReschedulePolicy{
DelayFunction: "exponential",
DelayCeiling: 1 * time.Hour,
MaxDelay: 1 * time.Hour,
Delay: 5 * time.Second,
Unlimited: true,
}
@@ -4270,7 +4270,7 @@ func Test_updateRescheduleTracker(t *testing.T) {
PrevAllocID: prevAlloc.ID,
PrevNodeID: prevAlloc.NodeID,
Delay: 5 * time.Second}},
reschedPolicy: &structs.ReschedulePolicy{Unlimited: false, Interval: 24 * time.Hour, Attempts: 2, Delay: 5 * time.Second, DelayFunction: "fibonacci", DelayCeiling: 60 * time.Second},
reschedPolicy: &structs.ReschedulePolicy{Unlimited: false, Interval: 24 * time.Hour, Attempts: 2, Delay: 5 * time.Second, DelayFunction: "fibonacci", MaxDelay: 60 * time.Second},
reschedTime: t1,
expectedRescheduleEvents: []*structs.RescheduleEvent{
{
@@ -4339,7 +4339,7 @@ func Test_updateRescheduleTracker(t *testing.T) {
Delay: 105 * time.Second,
},
},
reschedPolicy: &structs.ReschedulePolicy{Unlimited: true, Delay: 5 * time.Second, DelayFunction: "fibonacci", DelayCeiling: 240 * time.Second},
reschedPolicy: &structs.ReschedulePolicy{Unlimited: true, Delay: 5 * time.Second, DelayFunction: "fibonacci", MaxDelay: 240 * time.Second},
reschedTime: t1,
expectedRescheduleEvents: []*structs.RescheduleEvent{
{
@@ -4408,7 +4408,7 @@ func Test_updateRescheduleTracker(t *testing.T) {
Delay: 40 * time.Second,
},
},
reschedPolicy: &structs.ReschedulePolicy{Unlimited: false, Interval: 1 * time.Hour, Attempts: 5, Delay: 5 * time.Second, DelayFunction: "exponential", DelayCeiling: 240 * time.Second},
reschedPolicy: &structs.ReschedulePolicy{Unlimited: false, Interval: 1 * time.Hour, Attempts: 5, Delay: 5 * time.Second, DelayFunction: "exponential", MaxDelay: 240 * time.Second},
reschedTime: t1,
expectedRescheduleEvents: []*structs.RescheduleEvent{
{

View File

@@ -1456,7 +1456,7 @@ func TestReconciler_RescheduleLater_Service(t *testing.T) {
now := time.Now()
// Set up reschedule policy
delayDur := 15 * time.Second
job.TaskGroups[0].ReschedulePolicy = &structs.ReschedulePolicy{Attempts: 1, Interval: 24 * time.Hour, Delay: delayDur, DelayCeiling: 1 * time.Hour}
job.TaskGroups[0].ReschedulePolicy = &structs.ReschedulePolicy{Attempts: 1, Interval: 24 * time.Hour, Delay: delayDur, MaxDelay: 1 * time.Hour}
// Create 5 existing allocations
var allocs []*structs.Allocation
@@ -1526,7 +1526,7 @@ func TestReconciler_RescheduleNow_Service(t *testing.T) {
tgName := job.TaskGroups[0].Name
now := time.Now()
// Set up reschedule policy
job.TaskGroups[0].ReschedulePolicy = &structs.ReschedulePolicy{Attempts: 1, Interval: 24 * time.Hour, Delay: 5 * time.Second, DelayCeiling: 1 * time.Hour}
job.TaskGroups[0].ReschedulePolicy = &structs.ReschedulePolicy{Attempts: 1, Interval: 24 * time.Hour, Delay: 5 * time.Second, MaxDelay: 1 * time.Hour}
// Create 5 existing allocations
var allocs []*structs.Allocation