@@ -53,6 +53,7 @@ import (
53
53
"k8s.io/kubernetes/pkg/controller"
54
54
"k8s.io/kubernetes/pkg/controller/history"
55
55
"k8s.io/kubernetes/pkg/features"
56
+ "k8s.io/utils/ptr"
56
57
)
57
58
58
59
type invariantFunc func (set * apps.StatefulSet , om * fakeObjectManager ) error
@@ -2031,6 +2032,13 @@ func TestStatefulSetControlLimitsHistory(t *testing.T) {
2031
2032
if err != nil {
2032
2033
t .Fatalf ("%s: %s" , test .name , err )
2033
2034
}
2035
+
2036
+ if * set .Spec .RevisionHistoryLimit < 0 {
2037
+ // If the revisionHistoryLimit is negative value, we don't truncate
2038
+ // the revision history and it is incremental.
2039
+ continue
2040
+ }
2041
+
2034
2042
if len (revisions ) > int (* set .Spec .RevisionHistoryLimit )+ 2 {
2035
2043
t .Fatalf ("%s: %d greater than limit %d" , test .name , len (revisions ), * set .Spec .RevisionHistoryLimit )
2036
2044
}
@@ -2052,6 +2060,33 @@ func TestStatefulSetControlLimitsHistory(t *testing.T) {
2052
2060
return burst (newStatefulSet (3 ))
2053
2061
},
2054
2062
},
2063
+ {
2064
+ name : "zero revisionHistoryLimit" ,
2065
+ invariants : assertMonotonicInvariants ,
2066
+ initial : func () * apps.StatefulSet {
2067
+ sts := newStatefulSet (3 )
2068
+ sts .Spec .RevisionHistoryLimit = ptr .To (int32 (0 ))
2069
+ return sts
2070
+ },
2071
+ },
2072
+ {
2073
+ name : "negative revisionHistoryLimit" ,
2074
+ invariants : assertMonotonicInvariants ,
2075
+ initial : func () * apps.StatefulSet {
2076
+ sts := newStatefulSet (3 )
2077
+ sts .Spec .RevisionHistoryLimit = ptr .To (int32 (- 2 ))
2078
+ return sts
2079
+ },
2080
+ },
2081
+ {
2082
+ name : "positive revisionHistoryLimit" ,
2083
+ invariants : assertMonotonicInvariants ,
2084
+ initial : func () * apps.StatefulSet {
2085
+ sts := newStatefulSet (3 )
2086
+ sts .Spec .RevisionHistoryLimit = ptr .To (int32 (5 ))
2087
+ return sts
2088
+ },
2089
+ },
2055
2090
}
2056
2091
for i := range tests {
2057
2092
testFn (t , & tests [i ])
0 commit comments