@@ -157,9 +157,10 @@ func TestJobs_Canonicalize(t *testing.T) {
157
157
Migrate : DefaultMigrateStrategy (),
158
158
Tasks : []* Task {
159
159
{
160
- KillTimeout : timeToPtr (5 * time .Second ),
161
- LogConfig : DefaultLogConfig (),
162
- Resources : DefaultResources (),
160
+ KillTimeout : timeToPtr (5 * time .Second ),
161
+ LogConfig : DefaultLogConfig (),
162
+ Resources : DefaultResources (),
163
+ RestartPolicy : defaultServiceJobRestartPolicy (),
163
164
},
164
165
},
165
166
},
@@ -222,9 +223,10 @@ func TestJobs_Canonicalize(t *testing.T) {
222
223
},
223
224
Tasks : []* Task {
224
225
{
225
- KillTimeout : timeToPtr (5 * time .Second ),
226
- LogConfig : DefaultLogConfig (),
227
- Resources : DefaultResources (),
226
+ KillTimeout : timeToPtr (5 * time .Second ),
227
+ LogConfig : DefaultLogConfig (),
228
+ Resources : DefaultResources (),
229
+ RestartPolicy : defaultBatchJobRestartPolicy (),
228
230
},
229
231
},
230
232
},
@@ -316,10 +318,11 @@ func TestJobs_Canonicalize(t *testing.T) {
316
318
Migrate : DefaultMigrateStrategy (),
317
319
Tasks : []* Task {
318
320
{
319
- Name : "task1" ,
320
- LogConfig : DefaultLogConfig (),
321
- Resources : DefaultResources (),
322
- KillTimeout : timeToPtr (5 * time .Second ),
321
+ Name : "task1" ,
322
+ LogConfig : DefaultLogConfig (),
323
+ Resources : DefaultResources (),
324
+ KillTimeout : timeToPtr (5 * time .Second ),
325
+ RestartPolicy : defaultServiceJobRestartPolicy (),
323
326
},
324
327
},
325
328
},
@@ -363,6 +366,10 @@ func TestJobs_Canonicalize(t *testing.T) {
363
366
"db" : 6379 ,
364
367
}},
365
368
},
369
+ RestartPolicy : & RestartPolicy {
370
+ // inherit other values from TG
371
+ Attempts : intToPtr (20 ),
372
+ },
366
373
Resources : & Resources {
367
374
CPU : intToPtr (500 ),
368
375
MemoryMB : intToPtr (256 ),
@@ -486,6 +493,12 @@ func TestJobs_Canonicalize(t *testing.T) {
486
493
"db" : 6379 ,
487
494
}},
488
495
},
496
+ RestartPolicy : & RestartPolicy {
497
+ Interval : timeToPtr (5 * time .Minute ),
498
+ Attempts : intToPtr (20 ),
499
+ Delay : timeToPtr (25 * time .Second ),
500
+ Mode : stringToPtr ("delay" ),
501
+ },
489
502
Resources : & Resources {
490
503
CPU : intToPtr (500 ),
491
504
MemoryMB : intToPtr (256 ),
@@ -712,10 +725,11 @@ func TestJobs_Canonicalize(t *testing.T) {
712
725
Migrate : DefaultMigrateStrategy (),
713
726
Tasks : []* Task {
714
727
{
715
- Name : "task1" ,
716
- LogConfig : DefaultLogConfig (),
717
- Resources : DefaultResources (),
718
- KillTimeout : timeToPtr (5 * time .Second ),
728
+ Name : "task1" ,
729
+ LogConfig : DefaultLogConfig (),
730
+ Resources : DefaultResources (),
731
+ KillTimeout : timeToPtr (5 * time .Second ),
732
+ RestartPolicy : defaultServiceJobRestartPolicy (),
719
733
},
720
734
},
721
735
},
@@ -753,12 +767,187 @@ func TestJobs_Canonicalize(t *testing.T) {
753
767
AutoPromote : boolToPtr (false ),
754
768
},
755
769
Migrate : DefaultMigrateStrategy (),
770
+ Tasks : []* Task {
771
+ {
772
+ Name : "task1" ,
773
+ LogConfig : DefaultLogConfig (),
774
+ Resources : DefaultResources (),
775
+ KillTimeout : timeToPtr (5 * time .Second ),
776
+ RestartPolicy : defaultServiceJobRestartPolicy (),
777
+ },
778
+ },
779
+ },
780
+ },
781
+ },
782
+ },
783
+
784
+ {
785
+ name : "restart_merge" ,
786
+ input : & Job {
787
+ Name : stringToPtr ("foo" ),
788
+ ID : stringToPtr ("bar" ),
789
+ ParentID : stringToPtr ("lol" ),
790
+ TaskGroups : []* TaskGroup {
791
+ {
792
+ Name : stringToPtr ("bar" ),
793
+ RestartPolicy : & RestartPolicy {
794
+ Delay : timeToPtr (15 * time .Second ),
795
+ Attempts : intToPtr (2 ),
796
+ Interval : timeToPtr (30 * time .Minute ),
797
+ Mode : stringToPtr ("fail" ),
798
+ },
799
+ Tasks : []* Task {
800
+ {
801
+ Name : "task1" ,
802
+ RestartPolicy : & RestartPolicy {
803
+ Attempts : intToPtr (5 ),
804
+ Delay : timeToPtr (1 * time .Second ),
805
+ },
806
+ },
807
+ },
808
+ },
809
+ {
810
+ Name : stringToPtr ("baz" ),
811
+ RestartPolicy : & RestartPolicy {
812
+ Delay : timeToPtr (20 * time .Second ),
813
+ Attempts : intToPtr (2 ),
814
+ Interval : timeToPtr (30 * time .Minute ),
815
+ Mode : stringToPtr ("fail" ),
816
+ },
817
+ Tasks : []* Task {
818
+ {
819
+ Name : "task1" ,
820
+ },
821
+ },
822
+ },
823
+ },
824
+ },
825
+ expected : & Job {
826
+ Namespace : stringToPtr (DefaultNamespace ),
827
+ ID : stringToPtr ("bar" ),
828
+ Name : stringToPtr ("foo" ),
829
+ Region : stringToPtr ("global" ),
830
+ Type : stringToPtr ("service" ),
831
+ ParentID : stringToPtr ("lol" ),
832
+ Priority : intToPtr (50 ),
833
+ AllAtOnce : boolToPtr (false ),
834
+ ConsulToken : stringToPtr ("" ),
835
+ VaultToken : stringToPtr ("" ),
836
+ Stop : boolToPtr (false ),
837
+ Stable : boolToPtr (false ),
838
+ Version : uint64ToPtr (0 ),
839
+ Status : stringToPtr ("" ),
840
+ StatusDescription : stringToPtr ("" ),
841
+ CreateIndex : uint64ToPtr (0 ),
842
+ ModifyIndex : uint64ToPtr (0 ),
843
+ JobModifyIndex : uint64ToPtr (0 ),
844
+ Update : & UpdateStrategy {
845
+ Stagger : timeToPtr (30 * time .Second ),
846
+ MaxParallel : intToPtr (1 ),
847
+ HealthCheck : stringToPtr ("checks" ),
848
+ MinHealthyTime : timeToPtr (10 * time .Second ),
849
+ HealthyDeadline : timeToPtr (5 * time .Minute ),
850
+ ProgressDeadline : timeToPtr (10 * time .Minute ),
851
+ AutoRevert : boolToPtr (false ),
852
+ Canary : intToPtr (0 ),
853
+ AutoPromote : boolToPtr (false ),
854
+ },
855
+ TaskGroups : []* TaskGroup {
856
+ {
857
+ Name : stringToPtr ("bar" ),
858
+ Count : intToPtr (1 ),
859
+ EphemeralDisk : & EphemeralDisk {
860
+ Sticky : boolToPtr (false ),
861
+ Migrate : boolToPtr (false ),
862
+ SizeMB : intToPtr (300 ),
863
+ },
864
+ RestartPolicy : & RestartPolicy {
865
+ Delay : timeToPtr (15 * time .Second ),
866
+ Attempts : intToPtr (2 ),
867
+ Interval : timeToPtr (30 * time .Minute ),
868
+ Mode : stringToPtr ("fail" ),
869
+ },
870
+ ReschedulePolicy : & ReschedulePolicy {
871
+ Attempts : intToPtr (0 ),
872
+ Interval : timeToPtr (0 ),
873
+ DelayFunction : stringToPtr ("exponential" ),
874
+ Delay : timeToPtr (30 * time .Second ),
875
+ MaxDelay : timeToPtr (1 * time .Hour ),
876
+ Unlimited : boolToPtr (true ),
877
+ },
878
+ Update : & UpdateStrategy {
879
+ Stagger : timeToPtr (30 * time .Second ),
880
+ MaxParallel : intToPtr (1 ),
881
+ HealthCheck : stringToPtr ("checks" ),
882
+ MinHealthyTime : timeToPtr (10 * time .Second ),
883
+ HealthyDeadline : timeToPtr (5 * time .Minute ),
884
+ ProgressDeadline : timeToPtr (10 * time .Minute ),
885
+ AutoRevert : boolToPtr (false ),
886
+ Canary : intToPtr (0 ),
887
+ AutoPromote : boolToPtr (false ),
888
+ },
889
+ Migrate : DefaultMigrateStrategy (),
756
890
Tasks : []* Task {
757
891
{
758
892
Name : "task1" ,
759
893
LogConfig : DefaultLogConfig (),
760
894
Resources : DefaultResources (),
761
895
KillTimeout : timeToPtr (5 * time .Second ),
896
+ RestartPolicy : & RestartPolicy {
897
+ Attempts : intToPtr (5 ),
898
+ Delay : timeToPtr (1 * time .Second ),
899
+ Interval : timeToPtr (30 * time .Minute ),
900
+ Mode : stringToPtr ("fail" ),
901
+ },
902
+ },
903
+ },
904
+ },
905
+ {
906
+ Name : stringToPtr ("baz" ),
907
+ Count : intToPtr (1 ),
908
+ EphemeralDisk : & EphemeralDisk {
909
+ Sticky : boolToPtr (false ),
910
+ Migrate : boolToPtr (false ),
911
+ SizeMB : intToPtr (300 ),
912
+ },
913
+ RestartPolicy : & RestartPolicy {
914
+ Delay : timeToPtr (20 * time .Second ),
915
+ Attempts : intToPtr (2 ),
916
+ Interval : timeToPtr (30 * time .Minute ),
917
+ Mode : stringToPtr ("fail" ),
918
+ },
919
+ ReschedulePolicy : & ReschedulePolicy {
920
+ Attempts : intToPtr (0 ),
921
+ Interval : timeToPtr (0 ),
922
+ DelayFunction : stringToPtr ("exponential" ),
923
+ Delay : timeToPtr (30 * time .Second ),
924
+ MaxDelay : timeToPtr (1 * time .Hour ),
925
+ Unlimited : boolToPtr (true ),
926
+ },
927
+ Update : & UpdateStrategy {
928
+ Stagger : timeToPtr (30 * time .Second ),
929
+ MaxParallel : intToPtr (1 ),
930
+ HealthCheck : stringToPtr ("checks" ),
931
+ MinHealthyTime : timeToPtr (10 * time .Second ),
932
+ HealthyDeadline : timeToPtr (5 * time .Minute ),
933
+ ProgressDeadline : timeToPtr (10 * time .Minute ),
934
+ AutoRevert : boolToPtr (false ),
935
+ Canary : intToPtr (0 ),
936
+ AutoPromote : boolToPtr (false ),
937
+ },
938
+ Migrate : DefaultMigrateStrategy (),
939
+ Tasks : []* Task {
940
+ {
941
+ Name : "task1" ,
942
+ LogConfig : DefaultLogConfig (),
943
+ Resources : DefaultResources (),
944
+ KillTimeout : timeToPtr (5 * time .Second ),
945
+ RestartPolicy : & RestartPolicy {
946
+ Delay : timeToPtr (20 * time .Second ),
947
+ Attempts : intToPtr (2 ),
948
+ Interval : timeToPtr (30 * time .Minute ),
949
+ Mode : stringToPtr ("fail" ),
950
+ },
762
951
},
763
952
},
764
953
},
0 commit comments