Skip to content

Commit fb3009c

Browse files
authored
Merge pull request kubernetes#86034 from tahsinrahman/kubeletconfig-tests
Add tests for KubeletConfig
2 parents 77a86a5 + ea15f60 commit fb3009c

File tree

19 files changed

+369
-5
lines changed

19 files changed

+369
-5
lines changed

pkg/kubelet/apis/config/BUILD

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,16 @@ filegroup(
4545

4646
go_test(
4747
name = "go_default_test",
48-
srcs = ["helpers_test.go"],
48+
srcs = [
49+
"helpers_test.go",
50+
"register_test.go",
51+
],
4952
embed = [":go_default_library"],
5053
deps = [
54+
"//staging/src/k8s.io/api/core/v1:go_default_library",
55+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
5156
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
5257
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
58+
"//staging/src/k8s.io/component-base/config/testing:go_default_library",
5359
],
5460
)
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
Copyright 2020 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package config
18+
19+
import (
20+
"reflect"
21+
"testing"
22+
23+
v1 "k8s.io/api/core/v1"
24+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25+
componentconfigtesting "k8s.io/component-base/config/testing"
26+
)
27+
28+
func TestComponentConfigSetup(t *testing.T) {
29+
pkginfo := &componentconfigtesting.ComponentConfigPackage{
30+
ComponentName: "kubelet",
31+
GroupName: GroupName,
32+
SchemeGroupVersion: SchemeGroupVersion,
33+
AddToScheme: AddToScheme,
34+
AllowedTags: map[reflect.Type]bool{
35+
reflect.TypeOf(metav1.TypeMeta{}): true,
36+
reflect.TypeOf(metav1.Duration{}): true,
37+
reflect.TypeOf(v1.NodeConfigSource{}): true,
38+
},
39+
}
40+
41+
if err := componentconfigtesting.VerifyInternalTypePackage(pkginfo); err != nil {
42+
t.Fatal(err)
43+
}
44+
}

pkg/kubelet/apis/config/scheme/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ filegroup(
3030
go_test(
3131
name = "go_default_test",
3232
srcs = ["scheme_test.go"],
33+
data = glob(["testdata/**"]),
3334
embed = [":go_default_library"],
3435
deps = [
3536
"//pkg/kubelet/apis/config/fuzzer:go_default_library",
3637
"//staging/src/k8s.io/apimachinery/pkg/api/apitesting/roundtrip:go_default_library",
38+
"//staging/src/k8s.io/component-base/config/testing:go_default_library",
3739
],
3840
)

pkg/kubelet/apis/config/scheme/scheme_test.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,30 @@ import (
2020
"testing"
2121

2222
"k8s.io/apimachinery/pkg/api/apitesting/roundtrip"
23+
componentconfigtesting "k8s.io/component-base/config/testing"
2324
"k8s.io/kubernetes/pkg/kubelet/apis/config/fuzzer"
2425
)
2526

26-
func TestRoundTripTypes(t *testing.T) {
27+
func TestRoundTripFuzzing(t *testing.T) {
2728
scheme, _, err := NewSchemeAndCodecs()
2829
if err != nil {
2930
t.Fatalf("unexpected error: %v", err)
3031
}
3132
roundtrip.RoundTripTestForScheme(t, scheme, fuzzer.Funcs)
3233
}
34+
35+
func TestRoundTripYAML(t *testing.T) {
36+
scheme, codec, err := NewSchemeAndCodecs()
37+
if err != nil {
38+
t.Fatalf("unexpected error: %v", err)
39+
}
40+
componentconfigtesting.RoundTripTest(t, scheme, *codec)
41+
}
42+
43+
func TestDefaultsYAML(t *testing.T) {
44+
scheme, codec, err := NewSchemeAndCodecs()
45+
if err != nil {
46+
t.Fatalf("unexpected error: %v", err)
47+
}
48+
componentconfigtesting.DefaultingTest(t, scheme, *codec)
49+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
address: 0.0.0.0
2+
apiVersion: kubelet.config.k8s.io/v1beta1
3+
authentication:
4+
anonymous:
5+
enabled: false
6+
webhook:
7+
cacheTTL: 2m0s
8+
enabled: true
9+
x509: {}
10+
authorization:
11+
mode: Webhook
12+
webhook:
13+
cacheAuthorizedTTL: 5m0s
14+
cacheUnauthorizedTTL: 30s
15+
cgroupDriver: cgroupfs
16+
cgroupsPerQOS: true
17+
configMapAndSecretChangeDetectionStrategy: Watch
18+
containerLogMaxFiles: 5
19+
containerLogMaxSize: 10Mi
20+
contentType: application/vnd.kubernetes.protobuf
21+
cpuCFSQuota: true
22+
cpuCFSQuotaPeriod: 100ms
23+
cpuManagerPolicy: none
24+
cpuManagerReconcilePeriod: 10s
25+
enableControllerAttachDetach: true
26+
enableDebuggingHandlers: true
27+
enforceNodeAllocatable:
28+
- pods
29+
eventBurst: 10
30+
eventRecordQPS: 5
31+
evictionHard:
32+
imagefs.available: 15%
33+
memory.available: 100Mi
34+
nodefs.available: 10%
35+
nodefs.inodesFree: 5%
36+
evictionPressureTransitionPeriod: 5m0s
37+
failSwapOn: true
38+
fileCheckFrequency: 20s
39+
hairpinMode: promiscuous-bridge
40+
healthzBindAddress: 127.0.0.1
41+
healthzPort: 10248
42+
httpCheckFrequency: 20s
43+
imageGCHighThresholdPercent: 85
44+
imageGCLowThresholdPercent: 80
45+
imageMinimumGCAge: 2m0s
46+
iptablesDropBit: 15
47+
iptablesMasqueradeBit: 14
48+
kind: KubeletConfiguration
49+
kubeAPIBurst: 10
50+
kubeAPIQPS: 5
51+
makeIPTablesUtilChains: true
52+
maxOpenFiles: 1000000
53+
maxPods: 110
54+
nodeLeaseDurationSeconds: 40
55+
nodeStatusReportFrequency: 5m0s
56+
nodeStatusUpdateFrequency: 10s
57+
oomScoreAdj: -999
58+
podPidsLimit: -1
59+
port: 10250
60+
registryBurst: 10
61+
registryPullQPS: 5
62+
resolvConf: /etc/resolv.conf
63+
runtimeRequestTimeout: 2m0s
64+
serializeImagePulls: true
65+
streamingConnectionIdleTimeout: 4h0m0s
66+
syncFrequency: 1m0s
67+
topologyManagerPolicy: none
68+
volumePluginDir: /usr/libexec/kubernetes/kubelet-plugins/volume/exec/
69+
volumeStatsAggPeriod: 1m0s
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
apiVersion: kubelet.config.k8s.io/v1beta1
2+
kind: KubeletConfiguration
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
address: 0.0.0.0
2+
apiVersion: kubelet.config.k8s.io/v1beta1
3+
authentication:
4+
anonymous:
5+
enabled: false
6+
webhook:
7+
cacheTTL: 2m0s
8+
enabled: true
9+
x509: {}
10+
authorization:
11+
mode: Webhook
12+
webhook:
13+
cacheAuthorizedTTL: 5m0s
14+
cacheUnauthorizedTTL: 30s
15+
cgroupDriver: cgroupfs
16+
cgroupsPerQOS: true
17+
configMapAndSecretChangeDetectionStrategy: Watch
18+
containerLogMaxFiles: 5
19+
containerLogMaxSize: 10Mi
20+
contentType: application/vnd.kubernetes.protobuf
21+
cpuCFSQuota: true
22+
cpuCFSQuotaPeriod: 100ms
23+
cpuManagerPolicy: none
24+
cpuManagerReconcilePeriod: 10s
25+
enableControllerAttachDetach: true
26+
enableDebuggingHandlers: true
27+
enforceNodeAllocatable:
28+
- pods
29+
eventBurst: 10
30+
eventRecordQPS: 5
31+
evictionHard:
32+
imagefs.available: 15%
33+
memory.available: 100Mi
34+
nodefs.available: 10%
35+
nodefs.inodesFree: 5%
36+
evictionPressureTransitionPeriod: 5m0s
37+
failSwapOn: true
38+
fileCheckFrequency: 20s
39+
hairpinMode: promiscuous-bridge
40+
healthzBindAddress: 127.0.0.1
41+
healthzPort: 10248
42+
httpCheckFrequency: 20s
43+
imageGCHighThresholdPercent: 85
44+
imageGCLowThresholdPercent: 80
45+
imageMinimumGCAge: 2m0s
46+
iptablesDropBit: 15
47+
iptablesMasqueradeBit: 14
48+
kind: KubeletConfiguration
49+
kubeAPIBurst: 10
50+
kubeAPIQPS: 5
51+
makeIPTablesUtilChains: true
52+
maxOpenFiles: 1000000
53+
maxPods: 110
54+
nodeLeaseDurationSeconds: 40
55+
nodeStatusReportFrequency: 5m0s
56+
nodeStatusUpdateFrequency: 10s
57+
oomScoreAdj: -999
58+
podPidsLimit: -1
59+
port: 10250
60+
registryBurst: 10
61+
registryPullQPS: 5
62+
resolvConf: /etc/resolv.conf
63+
runtimeRequestTimeout: 2m0s
64+
serializeImagePulls: true
65+
streamingConnectionIdleTimeout: 4h0m0s
66+
syncFrequency: 1m0s
67+
topologyManagerPolicy: none
68+
volumePluginDir: /usr/libexec/kubernetes/kubelet-plugins/volume/exec/
69+
volumeStatsAggPeriod: 1m0s
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
apiVersion: kubelet.config.k8s.io/v1beta1
2+
kind: SerializedNodeConfigSource
3+
source: {}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
apiVersion: kubelet.config.k8s.io/v1beta1
2+
kind: SerializedNodeConfigSource
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
apiVersion: kubelet.config.k8s.io/v1beta1
2+
kind: SerializedNodeConfigSource
3+
source: {}

0 commit comments

Comments
 (0)