From a0eb194d8141e2f3c66026250847581d89b8e5b0 Mon Sep 17 00:00:00 2001 From: zhangxiaoyu-zidif Date: Sat, 29 Jul 2017 16:06:48 +0800 Subject: [PATCH 1/2] Add test items for job utils --- pkg/controller/job/utils_test.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pkg/controller/job/utils_test.go b/pkg/controller/job/utils_test.go index bfc84132153..0c2cdfeb566 100644 --- a/pkg/controller/job/utils_test.go +++ b/pkg/controller/job/utils_test.go @@ -46,4 +46,21 @@ func TestIsJobFinished(t *testing.T) { if IsJobFinished(job) { t.Error("Job was not expected to be finished") } + + job.Status.Conditions[0].Type = batch.JobFailed + + job.Status.Conditions[0].Status = v1.ConditionTrue + if !IsJobFinished(job) { + t.Error("Job was expected to be finished") + } + + job.Status.Conditions[0].Status = v1.ConditionFalse + if IsJobFinished(job) { + t.Error("Job was not expected to be finished") + } + + job.Status.Conditions[0].Status = v1.ConditionUnknown + if IsJobFinished(job) { + t.Error("Job was not expected to be finished") + } } From 056d5868401c7b9f3c48938a81bfdde3eee7f01c Mon Sep 17 00:00:00 2001 From: zhangxiaoyu-zidif Date: Thu, 31 Aug 2017 14:08:46 +0800 Subject: [PATCH 2/2] make these tests table-driven --- pkg/controller/job/utils_test.go | 84 +++++++++++++++++++------------- 1 file changed, 50 insertions(+), 34 deletions(-) diff --git a/pkg/controller/job/utils_test.go b/pkg/controller/job/utils_test.go index 0c2cdfeb566..7d8099027d4 100644 --- a/pkg/controller/job/utils_test.go +++ b/pkg/controller/job/utils_test.go @@ -24,43 +24,59 @@ import ( ) func TestIsJobFinished(t *testing.T) { - job := &batch.Job{ - Status: batch.JobStatus{ - Conditions: []batch.JobCondition{{ - Type: batch.JobComplete, - Status: v1.ConditionTrue, - }}, + testCases := map[string]struct { + conditionType batch.JobConditionType + conditionStatus v1.ConditionStatus + expectJobNotFinished bool + }{ + "Job is completed and condition is true": { + batch.JobComplete, + v1.ConditionTrue, + false, + }, + "Job is completed and condition is false": { + batch.JobComplete, + v1.ConditionFalse, + true, + }, + "Job is completed and condition is unknown": { + batch.JobComplete, + v1.ConditionUnknown, + true, + }, + "Job is failed and condition is true": { + batch.JobFailed, + v1.ConditionTrue, + false, + }, + "Job is failed and condition is false": { + batch.JobFailed, + v1.ConditionFalse, + true, + }, + "Job is failed and condition is unknown": { + batch.JobFailed, + v1.ConditionUnknown, + true, }, } - if !IsJobFinished(job) { - t.Error("Job was expected to be finished") - } + for name, tc := range testCases { + job := &batch.Job{ + Status: batch.JobStatus{ + Conditions: []batch.JobCondition{{ + Type: tc.conditionType, + Status: tc.conditionStatus, + }}, + }, + } - job.Status.Conditions[0].Status = v1.ConditionFalse - if IsJobFinished(job) { - t.Error("Job was not expected to be finished") - } - - job.Status.Conditions[0].Status = v1.ConditionUnknown - if IsJobFinished(job) { - t.Error("Job was not expected to be finished") - } - - job.Status.Conditions[0].Type = batch.JobFailed - - job.Status.Conditions[0].Status = v1.ConditionTrue - if !IsJobFinished(job) { - t.Error("Job was expected to be finished") - } - - job.Status.Conditions[0].Status = v1.ConditionFalse - if IsJobFinished(job) { - t.Error("Job was not expected to be finished") - } - - job.Status.Conditions[0].Status = v1.ConditionUnknown - if IsJobFinished(job) { - t.Error("Job was not expected to be finished") + if tc.expectJobNotFinished == IsJobFinished(job) { + if tc.expectJobNotFinished { + t.Errorf("test name: %s, job was not expected to be finished", name) + } else { + t.Errorf("test name: %s, job was expected to be finished", name) + } + } } }