Skip to content

Commit 42bb845

Browse files
author
Kenichi Omichi
committed
Separate RestartControllerManager() as e2ekubesystem
RestartControllerManager() is kube-controller specific function and it is better to separate the function as subpackage of e2e test framework. In addition, the function made invalid dependency into e2essh. So this separates the function into e2ekubesystem subpackage.
1 parent 2f85ff5 commit 42bb845

File tree

8 files changed

+103
-44
lines changed

8 files changed

+103
-44
lines changed

test/e2e/framework/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ filegroup(
117117
"//test/e2e/framework/job:all-srcs",
118118
"//test/e2e/framework/kubectl:all-srcs",
119119
"//test/e2e/framework/kubelet:all-srcs",
120+
"//test/e2e/framework/kubesystem:all-srcs",
120121
"//test/e2e/framework/log:all-srcs",
121122
"//test/e2e/framework/metrics:all-srcs",
122123
"//test/e2e/framework/network:all-srcs",
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library")
2+
3+
go_library(
4+
name = "go_default_library",
5+
srcs = ["kubesystem.go"],
6+
importpath = "k8s.io/kubernetes/test/e2e/framework/kubesystem",
7+
visibility = ["//visibility:public"],
8+
deps = [
9+
"//test/e2e/framework:go_default_library",
10+
"//test/e2e/framework/ssh:go_default_library",
11+
],
12+
)
13+
14+
filegroup(
15+
name = "package-srcs",
16+
srcs = glob(["**"]),
17+
tags = ["automanaged"],
18+
visibility = ["//visibility:private"],
19+
)
20+
21+
filegroup(
22+
name = "all-srcs",
23+
srcs = [":package-srcs"],
24+
tags = ["automanaged"],
25+
visibility = ["//visibility:public"],
26+
)
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
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 kubesystem
18+
19+
import (
20+
"fmt"
21+
"net"
22+
"strconv"
23+
"time"
24+
25+
"k8s.io/kubernetes/test/e2e/framework"
26+
e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
27+
)
28+
29+
const (
30+
// ssh port
31+
sshPort = "22"
32+
)
33+
34+
// RestartControllerManager restarts the kube-controller-manager.
35+
func RestartControllerManager() error {
36+
// TODO: Make it work for all providers and distros.
37+
if !framework.ProviderIs("gce", "aws") {
38+
return fmt.Errorf("unsupported provider for RestartControllerManager: %s", framework.TestContext.Provider)
39+
}
40+
if framework.ProviderIs("gce") && !framework.MasterOSDistroIs("gci") {
41+
return fmt.Errorf("unsupported master OS distro: %s", framework.TestContext.MasterOSDistro)
42+
}
43+
cmd := "pidof kube-controller-manager | xargs sudo kill"
44+
framework.Logf("Restarting controller-manager via ssh, running: %v", cmd)
45+
result, err := e2essh.SSH(cmd, net.JoinHostPort(framework.GetMasterHost(), sshPort), framework.TestContext.Provider)
46+
if err != nil || result.Code != 0 {
47+
e2essh.LogResult(result)
48+
return fmt.Errorf("couldn't restart controller-manager: %v", err)
49+
}
50+
return nil
51+
}
52+
53+
// WaitForControllerManagerUp waits for the kube-controller-manager to be up.
54+
func WaitForControllerManagerUp() error {
55+
cmd := "curl http://localhost:" + strconv.Itoa(framework.InsecureKubeControllerManagerPort) + "/healthz"
56+
for start := time.Now(); time.Since(start) < time.Minute; time.Sleep(5 * time.Second) {
57+
result, err := e2essh.SSH(cmd, net.JoinHostPort(framework.GetMasterHost(), sshPort), framework.TestContext.Provider)
58+
if err != nil || result.Code != 0 {
59+
e2essh.LogResult(result)
60+
}
61+
if result.Stdout == "ok" {
62+
return nil
63+
}
64+
}
65+
return fmt.Errorf("waiting for controller-manager timed out")
66+
}

test/e2e/framework/util.go

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ import (
7272
e2emetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
7373
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
7474
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
75-
e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
7675
)
7776

7877
const (
@@ -143,9 +142,6 @@ const (
143142

144143
// TODO(justinsb): Avoid hardcoding this.
145144
awsMasterIP = "172.20.0.9"
146-
147-
// ssh port
148-
sshPort = "22"
149145
)
150146

151147
var (
@@ -1114,40 +1110,6 @@ func AllNodesReady(c clientset.Interface, timeout time.Duration) error {
11141110
return nil
11151111
}
11161112

1117-
// RestartControllerManager restarts the kube-controller-manager.
1118-
func RestartControllerManager() error {
1119-
// TODO: Make it work for all providers and distros.
1120-
if !ProviderIs("gce", "aws") {
1121-
return fmt.Errorf("unsupported provider for RestartControllerManager: %s", TestContext.Provider)
1122-
}
1123-
if ProviderIs("gce") && !MasterOSDistroIs("gci") {
1124-
return fmt.Errorf("unsupported master OS distro: %s", TestContext.MasterOSDistro)
1125-
}
1126-
cmd := "pidof kube-controller-manager | xargs sudo kill"
1127-
Logf("Restarting controller-manager via ssh, running: %v", cmd)
1128-
result, err := e2essh.SSH(cmd, net.JoinHostPort(GetMasterHost(), sshPort), TestContext.Provider)
1129-
if err != nil || result.Code != 0 {
1130-
e2essh.LogResult(result)
1131-
return fmt.Errorf("couldn't restart controller-manager: %v", err)
1132-
}
1133-
return nil
1134-
}
1135-
1136-
// WaitForControllerManagerUp waits for the kube-controller-manager to be up.
1137-
func WaitForControllerManagerUp() error {
1138-
cmd := "curl http://localhost:" + strconv.Itoa(InsecureKubeControllerManagerPort) + "/healthz"
1139-
for start := time.Now(); time.Since(start) < time.Minute; time.Sleep(5 * time.Second) {
1140-
result, err := e2essh.SSH(cmd, net.JoinHostPort(GetMasterHost(), sshPort), TestContext.Provider)
1141-
if err != nil || result.Code != 0 {
1142-
e2essh.LogResult(result)
1143-
}
1144-
if result.Stdout == "ok" {
1145-
return nil
1146-
}
1147-
}
1148-
return fmt.Errorf("waiting for controller-manager timed out")
1149-
}
1150-
11511113
// LookForStringInLog looks for the given string in the log of a specific pod container
11521114
func LookForStringInLog(ns, podName, container, expectedString string, timeout time.Duration) (result string, err error) {
11531115
return lookForString(expectedString, timeout, func() string {

test/e2e/network/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ go_library(
7070
"//test/e2e/framework/deployment:go_default_library",
7171
"//test/e2e/framework/endpoints:go_default_library",
7272
"//test/e2e/framework/ingress:go_default_library",
73+
"//test/e2e/framework/kubesystem:go_default_library",
7374
"//test/e2e/framework/network:go_default_library",
7475
"//test/e2e/framework/node:go_default_library",
7576
"//test/e2e/framework/pod:go_default_library",

test/e2e/network/service.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import (
4747
"k8s.io/kubernetes/test/e2e/framework"
4848
e2edeploy "k8s.io/kubernetes/test/e2e/framework/deployment"
4949
e2eendpoints "k8s.io/kubernetes/test/e2e/framework/endpoints"
50+
e2ekubesystem "k8s.io/kubernetes/test/e2e/framework/kubesystem"
5051
e2enetwork "k8s.io/kubernetes/test/e2e/framework/network"
5152
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
5253
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
@@ -2345,11 +2346,11 @@ var _ = SIGDescribe("Services", func() {
23452346
}
23462347

23472348
ginkgo.By("restart kube-controller-manager")
2348-
if err := framework.RestartControllerManager(); err != nil {
2349-
framework.Failf("framework.RestartControllerManager() = %v; want nil", err)
2349+
if err := e2ekubesystem.RestartControllerManager(); err != nil {
2350+
framework.Failf("e2ekubesystem.RestartControllerManager() = %v; want nil", err)
23502351
}
2351-
if err := framework.WaitForControllerManagerUp(); err != nil {
2352-
framework.Failf("framework.WaitForControllerManagerUp() = %v; want nil", err)
2352+
if err := e2ekubesystem.WaitForControllerManagerUp(); err != nil {
2353+
framework.Failf("e2ekubesystem.WaitForControllerManagerUp() = %v; want nil", err)
23532354
}
23542355

23552356
ginkgo.By("health check should be reconciled")

test/e2e/storage/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ go_library(
6767
"//test/e2e/framework/auth:go_default_library",
6868
"//test/e2e/framework/deployment:go_default_library",
6969
"//test/e2e/framework/kubectl:go_default_library",
70+
"//test/e2e/framework/kubesystem:go_default_library",
7071
"//test/e2e/framework/metrics:go_default_library",
7172
"//test/e2e/framework/node:go_default_library",
7273
"//test/e2e/framework/pod:go_default_library",

test/e2e/storage/nfs_persistent_volume-disruptive.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
utilerrors "k8s.io/apimachinery/pkg/util/errors"
3232
clientset "k8s.io/client-go/kubernetes"
3333
"k8s.io/kubernetes/test/e2e/framework"
34+
e2ekubesystem "k8s.io/kubernetes/test/e2e/framework/kubesystem"
3435
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
3536
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
3637
e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
@@ -214,9 +215,9 @@ var _ = utils.SIGDescribe("NFSPersistentVolumes[Disruptive][Flaky]", func() {
214215
pvc2 = nil
215216

216217
ginkgo.By("Restarting the kube-controller-manager")
217-
err = framework.RestartControllerManager()
218+
err = e2ekubesystem.RestartControllerManager()
218219
framework.ExpectNoError(err)
219-
err = framework.WaitForControllerManagerUp()
220+
err = e2ekubesystem.WaitForControllerManagerUp()
220221
framework.ExpectNoError(err)
221222
framework.Logf("kube-controller-manager restarted")
222223

0 commit comments

Comments
 (0)