From 35c596b7c08a80cb877dc9e506ed196a72b642ed Mon Sep 17 00:00:00 2001 From: Salvatore Dario Minonne Date: Fri, 18 Mar 2016 16:35:38 +0100 Subject: [PATCH] Add unit test for JobUpdateStatus and fix erroneous test for DaemonSetStatusUpdate --- .../extensions/validation/validation_test.go | 91 ++++++++++++++++++- 1 file changed, 87 insertions(+), 4 deletions(-) diff --git a/pkg/apis/extensions/validation/validation_test.go b/pkg/apis/extensions/validation/validation_test.go index e485a99614a..d7e8ebc0bda 100644 --- a/pkg/apis/extensions/validation/validation_test.go +++ b/pkg/apis/extensions/validation/validation_test.go @@ -354,11 +354,14 @@ func TestValidateDaemonSetStatusUpdate(t *testing.T) { t.Errorf("expected success: %v", errs) } } - errorCases := map[string]dsUpdateTest{ "negative values": { old: extensions.DaemonSet{ - ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, + ObjectMeta: api.ObjectMeta{ + Name: "abc", + Namespace: api.NamespaceDefault, + ResourceVersion: "10", + }, Status: extensions.DaemonSetStatus{ CurrentNumberScheduled: 1, NumberMisscheduled: 2, @@ -366,7 +369,11 @@ func TestValidateDaemonSetStatusUpdate(t *testing.T) { }, }, update: extensions.DaemonSet{ - ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, + ObjectMeta: api.ObjectMeta{ + Name: "abc", + Namespace: api.NamespaceDefault, + ResourceVersion: "10", + }, Status: extensions.DaemonSetStatus{ CurrentNumberScheduled: -1, NumberMisscheduled: -1, @@ -377,7 +384,7 @@ func TestValidateDaemonSetStatusUpdate(t *testing.T) { } for testName, errorCase := range errorCases { - if errs := ValidateDaemonSetStatusUpdate(&errorCase.old, &errorCase.update); len(errs) == 0 { + if errs := ValidateDaemonSetStatusUpdate(&errorCase.update, &errorCase.old); len(errs) == 0 { t.Errorf("expected failure: %s", testName) } } @@ -1163,6 +1170,82 @@ func TestValidateJob(t *testing.T) { } } +func TestValidateJobUpdateStatus(t *testing.T) { + type testcase struct { + old extensions.Job + update extensions.Job + } + + successCases := []testcase{ + { + old: extensions.Job{ + ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, + Status: extensions.JobStatus{ + Active: 1, + Succeeded: 2, + Failed: 3, + }, + }, + update: extensions.Job{ + ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, + Status: extensions.JobStatus{ + Active: 1, + Succeeded: 1, + Failed: 3, + }, + }, + }, + } + + for _, successCase := range successCases { + successCase.old.ObjectMeta.ResourceVersion = "1" + successCase.update.ObjectMeta.ResourceVersion = "1" + if errs := ValidateJobUpdateStatus(&successCase.update, &successCase.old); len(errs) != 0 { + t.Errorf("expected success: %v", errs) + } + } + + errorCases := map[string]testcase{ + "[status.active: Invalid value: -1: must be greater than or equal to 0, status.succeeded: Invalid value: -2: must be greater than or equal to 0]": { + old: extensions.Job{ + ObjectMeta: api.ObjectMeta{ + Name: "abc", + Namespace: api.NamespaceDefault, + ResourceVersion: "10", + }, + Status: extensions.JobStatus{ + Active: 1, + Succeeded: 2, + Failed: 3, + }, + }, + update: extensions.Job{ + ObjectMeta: api.ObjectMeta{ + Name: "abc", + Namespace: api.NamespaceDefault, + ResourceVersion: "10", + }, + Status: extensions.JobStatus{ + Active: -1, + Succeeded: -2, + Failed: 3, + }, + }, + }, + } + + for testName, errorCase := range errorCases { + errs := ValidateJobUpdateStatus(&errorCase.update, &errorCase.old) + if len(errs) == 0 { + t.Errorf("expected failure: %s", testName) + continue + } + if errs.ToAggregate().Error() != testName { + t.Errorf("expected '%s' got '%s'", errs.ToAggregate().Error(), testName) + } + } +} + type ingressRules map[string]string func TestValidateIngress(t *testing.T) {