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