@@ -121,8 +121,9 @@ func TestCronJobStore(t *testing.T) {
121
121
},
122
122
},
123
123
Status : batchv1.CronJobStatus {
124
- Active : []v1.ObjectReference {{Name : "FakeJob1" }, {Name : "FakeJob2" }},
125
- LastScheduleTime : & metav1.Time {Time : ActiveRunningCronJob1LastScheduleTime },
124
+ Active : []v1.ObjectReference {{Name : "FakeJob1" }, {Name : "FakeJob2" }},
125
+ LastScheduleTime : & metav1.Time {Time : ActiveRunningCronJob1LastScheduleTime },
126
+ LastSuccessfulTime : nil ,
126
127
},
127
128
Spec : batchv1.CronJobSpec {
128
129
StartingDeadlineSeconds : & StartingDeadlineSeconds300 ,
@@ -197,8 +198,9 @@ func TestCronJobStore(t *testing.T) {
197
198
},
198
199
},
199
200
Status : batchv1.CronJobStatus {
200
- Active : []v1.ObjectReference {},
201
- LastScheduleTime : & metav1.Time {Time : SuspendedCronJob1LastScheduleTime },
201
+ Active : []v1.ObjectReference {},
202
+ LastScheduleTime : & metav1.Time {Time : SuspendedCronJob1LastScheduleTime },
203
+ LastSuccessfulTime : nil ,
202
204
},
203
205
Spec : batchv1.CronJobSpec {
204
206
StartingDeadlineSeconds : & StartingDeadlineSeconds300 ,
@@ -220,6 +222,7 @@ func TestCronJobStore(t *testing.T) {
220
222
# HELP kube_cronjob_status_active Active holds pointers to currently running jobs.
221
223
# HELP kube_cronjob_metadata_resource_version Resource version representing a specific version of the cronjob.
222
224
# HELP kube_cronjob_status_last_schedule_time LastScheduleTime keeps information of when was the last time the job was successfully scheduled.
225
+ # HELP kube_cronjob_status_last_successful_time LastSuccessfulTime keeps information of when was the last time the job was completed successfully.
223
226
# TYPE kube_cronjob_created gauge
224
227
# TYPE kube_cronjob_info gauge
225
228
# TYPE kube_cronjob_labels gauge
@@ -230,6 +233,7 @@ func TestCronJobStore(t *testing.T) {
230
233
# TYPE kube_cronjob_status_active gauge
231
234
# TYPE kube_cronjob_metadata_resource_version gauge
232
235
# TYPE kube_cronjob_status_last_schedule_time gauge
236
+ # TYPE kube_cronjob_status_last_successful_time gauge
233
237
kube_cronjob_info{concurrency_policy="Forbid",cronjob="SuspendedCronJob1",namespace="ns1",schedule="0 */3 * * *"} 1
234
238
kube_cronjob_labels{cronjob="SuspendedCronJob1",namespace="ns1"} 1
235
239
kube_cronjob_spec_failed_job_history_limit{cronjob="SuspendedCronJob1",namespace="ns1"} 1
@@ -240,7 +244,68 @@ func TestCronJobStore(t *testing.T) {
240
244
kube_cronjob_metadata_resource_version{cronjob="SuspendedCronJob1",namespace="ns1"} 22222
241
245
kube_cronjob_status_last_schedule_time{cronjob="SuspendedCronJob1",namespace="ns1"} 1.520762696e+09
242
246
` ,
243
- MetricNames : []string {"kube_cronjob_spec_starting_deadline_seconds" , "kube_cronjob_status_active" , "kube_cronjob_metadata_resource_version" , "kube_cronjob_spec_suspend" , "kube_cronjob_info" , "kube_cronjob_created" , "kube_cronjob_labels" , "kube_cronjob_status_last_schedule_time" , "kube_cronjob_spec_successful_job_history_limit" , "kube_cronjob_spec_failed_job_history_limit" },
247
+ MetricNames : []string {"kube_cronjob_status_last_successful_time" , "kube_cronjob_spec_starting_deadline_seconds" , "kube_cronjob_status_active" , "kube_cronjob_metadata_resource_version" , "kube_cronjob_spec_suspend" , "kube_cronjob_info" , "kube_cronjob_created" , "kube_cronjob_labels" , "kube_cronjob_status_last_schedule_time" , "kube_cronjob_spec_successful_job_history_limit" , "kube_cronjob_spec_failed_job_history_limit" },
248
+ },
249
+ {
250
+ Obj : & batchv1.CronJob {
251
+ ObjectMeta : metav1.ObjectMeta {
252
+ Name : "SuspendedCronJob1" ,
253
+ Namespace : "ns1" ,
254
+ Generation : 1 ,
255
+ ResourceVersion : "22222" ,
256
+ Labels : map [string ]string {
257
+ "app" : "example-suspended-1" ,
258
+ },
259
+ },
260
+ Status : batchv1.CronJobStatus {
261
+ Active : []v1.ObjectReference {},
262
+ LastScheduleTime : & metav1.Time {Time : SuspendedCronJob1LastScheduleTime },
263
+ LastSuccessfulTime : & metav1.Time {Time : SuspendedCronJob1LastScheduleTime },
264
+ },
265
+ Spec : batchv1.CronJobSpec {
266
+ StartingDeadlineSeconds : & StartingDeadlineSeconds300 ,
267
+ ConcurrencyPolicy : "Forbid" ,
268
+ Suspend : & SuspendTrue ,
269
+ Schedule : "0 */3 * * *" ,
270
+ SuccessfulJobsHistoryLimit : & SuccessfulJobHistoryLimit3 ,
271
+ FailedJobsHistoryLimit : & FailedJobHistoryLimit1 ,
272
+ },
273
+ },
274
+ Want : `
275
+ # HELP kube_cronjob_created Unix creation timestamp
276
+ # HELP kube_cronjob_info Info about cronjob.
277
+ # HELP kube_cronjob_labels Kubernetes labels converted to Prometheus labels.
278
+ # HELP kube_cronjob_spec_failed_job_history_limit Failed job history limit tells the controller how many failed jobs should be preserved.
279
+ # HELP kube_cronjob_spec_starting_deadline_seconds Deadline in seconds for starting the job if it misses scheduled time for any reason.
280
+ # HELP kube_cronjob_spec_successful_job_history_limit Successful job history limit tells the controller how many completed jobs should be preserved.
281
+ # HELP kube_cronjob_spec_suspend Suspend flag tells the controller to suspend subsequent executions.
282
+ # HELP kube_cronjob_status_active Active holds pointers to currently running jobs.
283
+ # HELP kube_cronjob_metadata_resource_version Resource version representing a specific version of the cronjob.
284
+ # HELP kube_cronjob_status_last_schedule_time LastScheduleTime keeps information of when was the last time the job was successfully scheduled.
285
+ # HELP kube_cronjob_status_last_successful_time LastSuccessfulTime keeps information of when was the last time the job was completed successfully.
286
+ # TYPE kube_cronjob_created gauge
287
+ # TYPE kube_cronjob_info gauge
288
+ # TYPE kube_cronjob_labels gauge
289
+ # TYPE kube_cronjob_spec_failed_job_history_limit gauge
290
+ # TYPE kube_cronjob_spec_starting_deadline_seconds gauge
291
+ # TYPE kube_cronjob_spec_successful_job_history_limit gauge
292
+ # TYPE kube_cronjob_spec_suspend gauge
293
+ # TYPE kube_cronjob_status_active gauge
294
+ # TYPE kube_cronjob_metadata_resource_version gauge
295
+ # TYPE kube_cronjob_status_last_schedule_time gauge
296
+ # TYPE kube_cronjob_status_last_successful_time gauge
297
+ kube_cronjob_info{concurrency_policy="Forbid",cronjob="SuspendedCronJob1",namespace="ns1",schedule="0 */3 * * *"} 1
298
+ kube_cronjob_labels{cronjob="SuspendedCronJob1",namespace="ns1"} 1
299
+ kube_cronjob_spec_failed_job_history_limit{cronjob="SuspendedCronJob1",namespace="ns1"} 1
300
+ kube_cronjob_spec_starting_deadline_seconds{cronjob="SuspendedCronJob1",namespace="ns1"} 300
301
+ kube_cronjob_spec_successful_job_history_limit{cronjob="SuspendedCronJob1",namespace="ns1"} 3
302
+ kube_cronjob_spec_suspend{cronjob="SuspendedCronJob1",namespace="ns1"} 1
303
+ kube_cronjob_status_active{cronjob="SuspendedCronJob1",namespace="ns1"} 0
304
+ kube_cronjob_metadata_resource_version{cronjob="SuspendedCronJob1",namespace="ns1"} 22222
305
+ kube_cronjob_status_last_schedule_time{cronjob="SuspendedCronJob1",namespace="ns1"} 1.520762696e+09
306
+ kube_cronjob_status_last_successful_time{cronjob="SuspendedCronJob1",namespace="ns1"} 1.520762696e+09
307
+ ` ,
308
+ MetricNames : []string {"kube_cronjob_status_last_successful_time" , "kube_cronjob_spec_starting_deadline_seconds" , "kube_cronjob_status_active" , "kube_cronjob_metadata_resource_version" , "kube_cronjob_spec_suspend" , "kube_cronjob_info" , "kube_cronjob_created" , "kube_cronjob_labels" , "kube_cronjob_status_last_schedule_time" , "kube_cronjob_spec_successful_job_history_limit" , "kube_cronjob_spec_failed_job_history_limit" },
244
309
},
245
310
{
246
311
Obj : & batchv1.CronJob {
@@ -255,8 +320,9 @@ func TestCronJobStore(t *testing.T) {
255
320
},
256
321
},
257
322
Status : batchv1.CronJobStatus {
258
- Active : []v1.ObjectReference {},
259
- LastScheduleTime : nil ,
323
+ Active : []v1.ObjectReference {},
324
+ LastScheduleTime : nil ,
325
+ LastSuccessfulTime : nil ,
260
326
},
261
327
Spec : batchv1.CronJobSpec {
262
328
StartingDeadlineSeconds : & StartingDeadlineSeconds300 ,
@@ -277,6 +343,7 @@ func TestCronJobStore(t *testing.T) {
277
343
# HELP kube_cronjob_spec_successful_job_history_limit Successful job history limit tells the controller how many completed jobs should be preserved.
278
344
# HELP kube_cronjob_spec_suspend Suspend flag tells the controller to suspend subsequent executions.
279
345
# HELP kube_cronjob_status_active Active holds pointers to currently running jobs.
346
+ # HELP kube_cronjob_status_last_successful_time LastSuccessfulTime keeps information of when was the last time the job was completed successfully.
280
347
# HELP kube_cronjob_metadata_resource_version Resource version representing a specific version of the cronjob.
281
348
# TYPE kube_cronjob_created gauge
282
349
# TYPE kube_cronjob_info gauge
@@ -288,6 +355,7 @@ func TestCronJobStore(t *testing.T) {
288
355
# TYPE kube_cronjob_spec_suspend gauge
289
356
# TYPE kube_cronjob_status_active gauge
290
357
# TYPE kube_cronjob_metadata_resource_version gauge
358
+ # TYPE kube_cronjob_status_last_successful_time gauge
291
359
kube_cronjob_spec_starting_deadline_seconds{cronjob="ActiveCronJob1NoLastScheduled",namespace="ns1"} 300
292
360
kube_cronjob_status_active{cronjob="ActiveCronJob1NoLastScheduled",namespace="ns1"} 0
293
361
kube_cronjob_metadata_resource_version{cronjob="ActiveCronJob1NoLastScheduled",namespace="ns1"} 33333
@@ -300,7 +368,7 @@ func TestCronJobStore(t *testing.T) {
300
368
` +
301
369
fmt .Sprintf ("kube_cronjob_next_schedule_time{cronjob=\" ActiveCronJob1NoLastScheduled\" ,namespace=\" ns1\" } %ve+09\n " ,
302
370
float64 (ActiveCronJob1NoLastScheduledNextScheduleTime .Unix ())/ math .Pow10 (9 )),
303
- MetricNames : []string {"kube_cronjob_next_schedule_time" , "kube_cronjob_spec_starting_deadline_seconds" , "kube_cronjob_status_active" , "kube_cronjob_metadata_resource_version" , "kube_cronjob_spec_suspend" , "kube_cronjob_info" , "kube_cronjob_created" , "kube_cronjob_labels" , "kube_cronjob_spec_successful_job_history_limit" , "kube_cronjob_spec_failed_job_history_limit" },
371
+ MetricNames : []string {"kube_cronjob_status_last_successful_time" , " kube_cronjob_next_schedule_time" , "kube_cronjob_spec_starting_deadline_seconds" , "kube_cronjob_status_active" , "kube_cronjob_metadata_resource_version" , "kube_cronjob_spec_suspend" , "kube_cronjob_info" , "kube_cronjob_created" , "kube_cronjob_labels" , "kube_cronjob_spec_successful_job_history_limit" , "kube_cronjob_spec_failed_job_history_limit" },
304
372
},
305
373
}
306
374
for i , c := range cases {
0 commit comments