mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-13 11:25:19 +00:00
Move functions from e2e/framework/util.go Part-2
This PR moves functions from test/e2e/framework.util.go for making e2e core framework small and simple: - RestartKubeProxy: Moved to e2e network package - CheckConnectivityToHost: Moved to e2e network package - RemoveAvoidPodsOffNode: Move to e2e scheduling package - AddOrUpdateAvoidPodOnNode: Move to e2e scheduling package - UpdateDaemonSetWithRetries: Move to e2e apps package - CheckForControllerManagerHealthy: Moved to e2e storage package - ParseKVLines: Removed because ofe9345ae5f0- AddOrUpdateLabelOnNodeAndReturnOldValue: Removed because offf7b07c43c
This commit is contained in:
@@ -18,6 +18,7 @@ package storage
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/onsi/ginkgo"
|
||||
@@ -32,6 +33,7 @@ import (
|
||||
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||
e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
|
||||
e2essh "k8s.io/kubernetes/test/e2e/framework/ssh"
|
||||
"k8s.io/kubernetes/test/e2e/framework/volume"
|
||||
"k8s.io/kubernetes/test/e2e/storage/utils"
|
||||
)
|
||||
@@ -42,6 +44,33 @@ type disruptiveTest struct {
|
||||
runTest testBody
|
||||
}
|
||||
|
||||
// checkForControllerManagerHealthy checks that the controller manager does not crash within "duration"
|
||||
func checkForControllerManagerHealthy(duration time.Duration) error {
|
||||
var PID string
|
||||
cmd := "pidof kube-controller-manager"
|
||||
for start := time.Now(); time.Since(start) < duration; time.Sleep(5 * time.Second) {
|
||||
result, err := e2essh.SSH(cmd, net.JoinHostPort(framework.GetMasterHost(), sshPort), framework.TestContext.Provider)
|
||||
if err != nil {
|
||||
// We don't necessarily know that it crashed, pipe could just be broken
|
||||
e2essh.LogResult(result)
|
||||
return fmt.Errorf("master unreachable after %v", time.Since(start))
|
||||
} else if result.Code != 0 {
|
||||
e2essh.LogResult(result)
|
||||
return fmt.Errorf("SSH result code not 0. actually: %v after %v", result.Code, time.Since(start))
|
||||
} else if result.Stdout != PID {
|
||||
if PID == "" {
|
||||
PID = result.Stdout
|
||||
} else {
|
||||
//its dead
|
||||
return fmt.Errorf("controller manager crashed, old PID: %s, new PID: %s", PID, result.Stdout)
|
||||
}
|
||||
} else {
|
||||
framework.Logf("kube-controller-manager still healthy after %v", time.Since(start))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var _ = utils.SIGDescribe("NFSPersistentVolumes[Disruptive][Flaky]", func() {
|
||||
|
||||
f := framework.NewDefaultFramework("disruptive-pv")
|
||||
@@ -191,7 +220,7 @@ var _ = utils.SIGDescribe("NFSPersistentVolumes[Disruptive][Flaky]", func() {
|
||||
|
||||
ginkgo.By("Observing the kube-controller-manager healthy for at least 2 minutes")
|
||||
// Continue checking for 2 minutes to make sure kube-controller-manager is healthy
|
||||
err = framework.CheckForControllerManagerHealthy(2 * time.Minute)
|
||||
err = checkForControllerManagerHealthy(2 * time.Minute)
|
||||
framework.ExpectNoError(err)
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user