mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
fixit: break sig-cluster-lifecycle tests into subpackage
This commit is contained in:
parent
772c352992
commit
3c39173ee4
@ -804,6 +804,7 @@ test/e2e/instrumentation
|
|||||||
test/e2e/instrumentation/logging
|
test/e2e/instrumentation/logging
|
||||||
test/e2e/instrumentation/monitoring
|
test/e2e/instrumentation/monitoring
|
||||||
test/e2e/kubectl
|
test/e2e/kubectl
|
||||||
|
test/e2e/lifecycle
|
||||||
test/e2e/metrics
|
test/e2e/metrics
|
||||||
test/e2e/scalability
|
test/e2e/scalability
|
||||||
test/e2e/scheduling
|
test/e2e/scheduling
|
||||||
|
@ -24,6 +24,7 @@ go_test(
|
|||||||
"//test/e2e/instrumentation/logging:go_default_library",
|
"//test/e2e/instrumentation/logging:go_default_library",
|
||||||
"//test/e2e/instrumentation/monitoring:go_default_library",
|
"//test/e2e/instrumentation/monitoring:go_default_library",
|
||||||
"//test/e2e/kubectl:go_default_library",
|
"//test/e2e/kubectl:go_default_library",
|
||||||
|
"//test/e2e/lifecycle:go_default_library",
|
||||||
"//test/e2e/metrics:go_default_library",
|
"//test/e2e/metrics:go_default_library",
|
||||||
"//test/e2e/scalability:go_default_library",
|
"//test/e2e/scalability:go_default_library",
|
||||||
"//test/e2e/scheduling:go_default_library",
|
"//test/e2e/scheduling:go_default_library",
|
||||||
@ -46,11 +47,9 @@ go_test(
|
|||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
"addon_update.go",
|
|
||||||
"apparmor.go",
|
"apparmor.go",
|
||||||
"audit.go",
|
"audit.go",
|
||||||
"certificates.go",
|
"certificates.go",
|
||||||
"cluster_upgrade.go",
|
|
||||||
"dashboard.go",
|
"dashboard.go",
|
||||||
"dns.go",
|
"dns.go",
|
||||||
"dns_common.go",
|
"dns_common.go",
|
||||||
@ -63,7 +62,6 @@ go_library(
|
|||||||
"generated_clientset.go",
|
"generated_clientset.go",
|
||||||
"gke_local_ssd.go",
|
"gke_local_ssd.go",
|
||||||
"gke_node_pools.go",
|
"gke_node_pools.go",
|
||||||
"ha_master.go",
|
|
||||||
"ingress.go",
|
"ingress.go",
|
||||||
"kube_proxy.go",
|
"kube_proxy.go",
|
||||||
"kubelet.go",
|
"kubelet.go",
|
||||||
@ -79,10 +77,7 @@ go_library(
|
|||||||
"podpreset.go",
|
"podpreset.go",
|
||||||
"pods.go",
|
"pods.go",
|
||||||
"pre_stop.go",
|
"pre_stop.go",
|
||||||
"reboot.go",
|
|
||||||
"resize_nodes.go",
|
|
||||||
"resource_quota.go",
|
"resource_quota.go",
|
||||||
"restart.go",
|
|
||||||
"security_context.go",
|
"security_context.go",
|
||||||
"service.go",
|
"service.go",
|
||||||
"service_accounts.go",
|
"service_accounts.go",
|
||||||
@ -107,32 +102,26 @@ go_library(
|
|||||||
"//pkg/controller/node:go_default_library",
|
"//pkg/controller/node:go_default_library",
|
||||||
"//pkg/kubelet/apis:go_default_library",
|
"//pkg/kubelet/apis:go_default_library",
|
||||||
"//pkg/kubelet/apis/stats/v1alpha1:go_default_library",
|
"//pkg/kubelet/apis/stats/v1alpha1:go_default_library",
|
||||||
"//pkg/kubelet/pod:go_default_library",
|
|
||||||
"//pkg/master/ports:go_default_library",
|
"//pkg/master/ports:go_default_library",
|
||||||
"//pkg/quota/evaluator/core:go_default_library",
|
"//pkg/quota/evaluator/core:go_default_library",
|
||||||
"//pkg/util/logs:go_default_library",
|
"//pkg/util/logs:go_default_library",
|
||||||
"//pkg/util/version:go_default_library",
|
"//pkg/util/version:go_default_library",
|
||||||
"//plugin/pkg/admission/serviceaccount:go_default_library",
|
"//plugin/pkg/admission/serviceaccount:go_default_library",
|
||||||
"//test/e2e/chaosmonkey:go_default_library",
|
|
||||||
"//test/e2e/common:go_default_library",
|
"//test/e2e/common:go_default_library",
|
||||||
"//test/e2e/framework:go_default_library",
|
"//test/e2e/framework:go_default_library",
|
||||||
"//test/e2e/framework/ginkgowrapper:go_default_library",
|
"//test/e2e/framework/ginkgowrapper:go_default_library",
|
||||||
"//test/e2e/generated:go_default_library",
|
"//test/e2e/generated:go_default_library",
|
||||||
"//test/e2e/manifest:go_default_library",
|
"//test/e2e/manifest:go_default_library",
|
||||||
"//test/e2e/metrics:go_default_library",
|
"//test/e2e/metrics:go_default_library",
|
||||||
"//test/e2e/upgrades:go_default_library",
|
|
||||||
"//test/e2e/upgrades/apps:go_default_library",
|
|
||||||
"//test/e2e_federation:go_default_library",
|
"//test/e2e_federation:go_default_library",
|
||||||
"//test/images/net/nat:go_default_library",
|
"//test/images/net/nat:go_default_library",
|
||||||
"//test/utils:go_default_library",
|
"//test/utils:go_default_library",
|
||||||
"//test/utils/junit:go_default_library",
|
|
||||||
"//vendor/github.com/golang/glog:go_default_library",
|
"//vendor/github.com/golang/glog:go_default_library",
|
||||||
"//vendor/github.com/google/cadvisor/info/v1:go_default_library",
|
"//vendor/github.com/google/cadvisor/info/v1:go_default_library",
|
||||||
"//vendor/github.com/onsi/ginkgo:go_default_library",
|
"//vendor/github.com/onsi/ginkgo:go_default_library",
|
||||||
"//vendor/github.com/onsi/ginkgo/config:go_default_library",
|
"//vendor/github.com/onsi/ginkgo/config:go_default_library",
|
||||||
"//vendor/github.com/onsi/ginkgo/reporters:go_default_library",
|
"//vendor/github.com/onsi/ginkgo/reporters:go_default_library",
|
||||||
"//vendor/github.com/onsi/gomega:go_default_library",
|
"//vendor/github.com/onsi/gomega:go_default_library",
|
||||||
"//vendor/golang.org/x/crypto/ssh:go_default_library",
|
|
||||||
"//vendor/k8s.io/api/batch/v1:go_default_library",
|
"//vendor/k8s.io/api/batch/v1:go_default_library",
|
||||||
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
|
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
|
||||||
"//vendor/k8s.io/api/certificates/v1beta1:go_default_library",
|
"//vendor/k8s.io/api/certificates/v1beta1:go_default_library",
|
||||||
@ -153,7 +142,6 @@ go_library(
|
|||||||
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library",
|
||||||
"//vendor/k8s.io/client-go/discovery:go_default_library",
|
|
||||||
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
|
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
"//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library",
|
"//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library",
|
||||||
"//vendor/k8s.io/client-go/rest:go_default_library",
|
"//vendor/k8s.io/client-go/rest:go_default_library",
|
||||||
@ -191,6 +179,7 @@ filegroup(
|
|||||||
"//test/e2e/generated:all-srcs",
|
"//test/e2e/generated:all-srcs",
|
||||||
"//test/e2e/instrumentation:all-srcs",
|
"//test/e2e/instrumentation:all-srcs",
|
||||||
"//test/e2e/kubectl:all-srcs",
|
"//test/e2e/kubectl:all-srcs",
|
||||||
|
"//test/e2e/lifecycle:all-srcs",
|
||||||
"//test/e2e/manifest:all-srcs",
|
"//test/e2e/manifest:all-srcs",
|
||||||
"//test/e2e/metrics:all-srcs",
|
"//test/e2e/metrics:all-srcs",
|
||||||
"//test/e2e/perftype:all-srcs",
|
"//test/e2e/perftype:all-srcs",
|
||||||
|
@ -17,7 +17,18 @@ limitations under the License.
|
|||||||
package common
|
package common
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/api/core/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
|
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Suite string
|
type Suite string
|
||||||
@ -49,3 +60,72 @@ var CommonImageWhiteList = sets.NewString(
|
|||||||
"gcr.io/google_containers/volume-nfs:0.8",
|
"gcr.io/google_containers/volume-nfs:0.8",
|
||||||
"gcr.io/google_containers/volume-gluster:0.2",
|
"gcr.io/google_containers/volume-gluster:0.2",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func svcByName(name string, port int) *v1.Service {
|
||||||
|
return &v1.Service{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: name,
|
||||||
|
},
|
||||||
|
Spec: v1.ServiceSpec{
|
||||||
|
Type: v1.ServiceTypeNodePort,
|
||||||
|
Selector: map[string]string{
|
||||||
|
"name": name,
|
||||||
|
},
|
||||||
|
Ports: []v1.ServicePort{{
|
||||||
|
Port: int32(port),
|
||||||
|
TargetPort: intstr.FromInt(port),
|
||||||
|
}},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSVCByName(c clientset.Interface, ns, name string) error {
|
||||||
|
const testPort = 9376
|
||||||
|
_, err := c.Core().Services(ns).Create(svcByName(name, testPort))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewRCByName creates a replication controller with a selector by name of name.
|
||||||
|
func NewRCByName(c clientset.Interface, ns, name string, replicas int32, gracePeriod *int64) (*v1.ReplicationController, error) {
|
||||||
|
By(fmt.Sprintf("creating replication controller %s", name))
|
||||||
|
return c.Core().ReplicationControllers(ns).Create(framework.RcByNamePort(
|
||||||
|
name, replicas, framework.ServeHostnameImage, 9376, v1.ProtocolTCP, map[string]string{}, gracePeriod))
|
||||||
|
}
|
||||||
|
|
||||||
|
func RestartNodes(c clientset.Interface, nodeNames []string) error {
|
||||||
|
// List old boot IDs.
|
||||||
|
oldBootIDs := make(map[string]string)
|
||||||
|
for _, name := range nodeNames {
|
||||||
|
node, err := c.Core().Nodes().Get(name, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("error getting node info before reboot: %s", err)
|
||||||
|
}
|
||||||
|
oldBootIDs[name] = node.Status.NodeInfo.BootID
|
||||||
|
}
|
||||||
|
// Reboot the nodes.
|
||||||
|
args := []string{
|
||||||
|
"compute",
|
||||||
|
fmt.Sprintf("--project=%s", framework.TestContext.CloudConfig.ProjectID),
|
||||||
|
"instances",
|
||||||
|
"reset",
|
||||||
|
}
|
||||||
|
args = append(args, nodeNames...)
|
||||||
|
args = append(args, fmt.Sprintf("--zone=%s", framework.TestContext.CloudConfig.Zone))
|
||||||
|
stdout, stderr, err := framework.RunCmd("gcloud", args...)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("error restarting nodes: %s\nstdout: %s\nstderr: %s", err, stdout, stderr)
|
||||||
|
}
|
||||||
|
// Wait for their boot IDs to change.
|
||||||
|
for _, name := range nodeNames {
|
||||||
|
if err := wait.Poll(30*time.Second, 5*time.Minute, func() (bool, error) {
|
||||||
|
node, err := c.Core().Nodes().Get(name, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return false, fmt.Errorf("error getting node info after reboot: %s", err)
|
||||||
|
}
|
||||||
|
return node.Status.NodeInfo.BootID != oldBootIDs[name], nil
|
||||||
|
}); err != nil {
|
||||||
|
return fmt.Errorf("error waiting for node %s boot ID to change: %s", name, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -47,12 +47,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// imagePrePullingTimeout is the time we wait for the e2e-image-puller
|
|
||||||
// static pods to pull the list of seeded images. If they don't pull
|
|
||||||
// images within this time we simply log their output and carry on
|
|
||||||
// with the tests.
|
|
||||||
imagePrePullingTimeout = 5 * time.Minute
|
|
||||||
|
|
||||||
// TODO: Delete this once all the tests that depend upon it are moved out of test/e2e and into subdirs
|
// TODO: Delete this once all the tests that depend upon it are moved out of test/e2e and into subdirs
|
||||||
podName = "pfpod"
|
podName = "pfpod"
|
||||||
)
|
)
|
||||||
@ -172,12 +166,12 @@ var _ = ginkgo.SynchronizedBeforeSuite(func() []byte {
|
|||||||
framework.Failf("Error waiting for all pods to be running and ready: %v", err)
|
framework.Failf("Error waiting for all pods to be running and ready: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := framework.WaitForPodsSuccess(c, metav1.NamespaceSystem, framework.ImagePullerLabels, imagePrePullingTimeout); err != nil {
|
if err := framework.WaitForPodsSuccess(c, metav1.NamespaceSystem, framework.ImagePullerLabels, framework.ImagePrePullingTimeout); err != nil {
|
||||||
// There is no guarantee that the image pulling will succeed in 3 minutes
|
// There is no guarantee that the image pulling will succeed in 3 minutes
|
||||||
// and we don't even run the image puller on all platforms (including GKE).
|
// and we don't even run the image puller on all platforms (including GKE).
|
||||||
// We wait for it so we get an indication of failures in the logs, and to
|
// We wait for it so we get an indication of failures in the logs, and to
|
||||||
// maximize benefit of image pre-pulling.
|
// maximize benefit of image pre-pulling.
|
||||||
framework.Logf("WARNING: Image pulling pods failed to enter success in %v: %v", imagePrePullingTimeout, err)
|
framework.Logf("WARNING: Image pulling pods failed to enter success in %v: %v", framework.ImagePrePullingTimeout, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dump the output of the nethealth containers only once per run
|
// Dump the output of the nethealth containers only once per run
|
||||||
|
@ -25,6 +25,7 @@ import (
|
|||||||
_ "k8s.io/kubernetes/test/e2e/instrumentation/logging"
|
_ "k8s.io/kubernetes/test/e2e/instrumentation/logging"
|
||||||
_ "k8s.io/kubernetes/test/e2e/instrumentation/monitoring"
|
_ "k8s.io/kubernetes/test/e2e/instrumentation/monitoring"
|
||||||
_ "k8s.io/kubernetes/test/e2e/kubectl"
|
_ "k8s.io/kubernetes/test/e2e/kubectl"
|
||||||
|
_ "k8s.io/kubernetes/test/e2e/lifecycle"
|
||||||
_ "k8s.io/kubernetes/test/e2e/scalability"
|
_ "k8s.io/kubernetes/test/e2e/scalability"
|
||||||
_ "k8s.io/kubernetes/test/e2e/scheduling"
|
_ "k8s.io/kubernetes/test/e2e/scheduling"
|
||||||
_ "k8s.io/kubernetes/test/e2e/storage"
|
_ "k8s.io/kubernetes/test/e2e/storage"
|
||||||
|
@ -183,6 +183,12 @@ const (
|
|||||||
ServeHostnameImage = "gcr.io/google_containers/serve_hostname:v1.4"
|
ServeHostnameImage = "gcr.io/google_containers/serve_hostname:v1.4"
|
||||||
// ssh port
|
// ssh port
|
||||||
sshPort = "22"
|
sshPort = "22"
|
||||||
|
|
||||||
|
// ImagePrePullingTimeout is the time we wait for the e2e-image-puller
|
||||||
|
// static pods to pull the list of seeded images. If they don't pull
|
||||||
|
// images within this time we simply log their output and carry on
|
||||||
|
// with the tests.
|
||||||
|
ImagePrePullingTimeout = 5 * time.Minute
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
59
test/e2e/lifecycle/BUILD
Normal file
59
test/e2e/lifecycle/BUILD
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
|
licenses(["notice"])
|
||||||
|
|
||||||
|
load(
|
||||||
|
"@io_bazel_rules_go//go:def.bzl",
|
||||||
|
"go_library",
|
||||||
|
)
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = [
|
||||||
|
"addon_update.go",
|
||||||
|
"cluster_upgrade.go",
|
||||||
|
"ha_master.go",
|
||||||
|
"reboot.go",
|
||||||
|
"resize_nodes.go",
|
||||||
|
"restart.go",
|
||||||
|
"sig.go",
|
||||||
|
],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
deps = [
|
||||||
|
"//pkg/api:go_default_library",
|
||||||
|
"//pkg/kubelet/pod:go_default_library",
|
||||||
|
"//pkg/util/version:go_default_library",
|
||||||
|
"//test/e2e/chaosmonkey:go_default_library",
|
||||||
|
"//test/e2e/common:go_default_library",
|
||||||
|
"//test/e2e/framework:go_default_library",
|
||||||
|
"//test/e2e/framework/ginkgowrapper:go_default_library",
|
||||||
|
"//test/e2e/upgrades:go_default_library",
|
||||||
|
"//test/e2e/upgrades/apps:go_default_library",
|
||||||
|
"//test/utils:go_default_library",
|
||||||
|
"//test/utils/junit:go_default_library",
|
||||||
|
"//vendor/github.com/onsi/ginkgo:go_default_library",
|
||||||
|
"//vendor/github.com/onsi/gomega:go_default_library",
|
||||||
|
"//vendor/golang.org/x/crypto/ssh:go_default_library",
|
||||||
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/discovery:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
)
|
4
test/e2e/lifecycle/OWNERS
Normal file
4
test/e2e/lifecycle/OWNERS
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
approvers:
|
||||||
|
- sig-cluster-lifecycle-maintainers
|
||||||
|
reviewers:
|
||||||
|
- sig-cluster-lifecycle
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package e2e
|
package lifecycle
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@ -205,7 +205,7 @@ type stringPair struct {
|
|||||||
data, fileName string
|
data, fileName string
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ = framework.KubeDescribe("Addon update", func() {
|
var _ = SIGDescribe("Addon update", func() {
|
||||||
|
|
||||||
var dir string
|
var dir string
|
||||||
var sshClient *ssh.Client
|
var sshClient *ssh.Client
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package e2e
|
package lifecycle
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
@ -58,13 +58,16 @@ var _ = framework.KubeDescribe("Upgrade [Feature:Upgrade]", func() {
|
|||||||
// Create the frameworks here because we can only create them
|
// Create the frameworks here because we can only create them
|
||||||
// in a "Describe".
|
// in a "Describe".
|
||||||
testFrameworks := createUpgradeFrameworks()
|
testFrameworks := createUpgradeFrameworks()
|
||||||
framework.KubeDescribe("master upgrade", func() {
|
SIGDescribe("master upgrade", func() {
|
||||||
It("should maintain a functioning cluster [Feature:MasterUpgrade]", func() {
|
It("should maintain a functioning cluster [Feature:MasterUpgrade]", func() {
|
||||||
upgCtx, err := getUpgradeContext(f.ClientSet.Discovery(), framework.TestContext.UpgradeTarget)
|
upgCtx, err := getUpgradeContext(f.ClientSet.Discovery(), framework.TestContext.UpgradeTarget)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
|
|
||||||
testSuite := &junit.TestSuite{Name: "Master upgrade"}
|
testSuite := &junit.TestSuite{Name: "Master upgrade"}
|
||||||
masterUpgradeTest := &junit.TestCase{Name: "master-upgrade", Classname: "upgrade_tests"}
|
masterUpgradeTest := &junit.TestCase{
|
||||||
|
Name: "[sig-cluster-lifecycle] master-upgrade",
|
||||||
|
Classname: "upgrade_tests",
|
||||||
|
}
|
||||||
testSuite.TestCases = append(testSuite.TestCases, masterUpgradeTest)
|
testSuite.TestCases = append(testSuite.TestCases, masterUpgradeTest)
|
||||||
|
|
||||||
upgradeFunc := func() {
|
upgradeFunc := func() {
|
||||||
@ -78,13 +81,16 @@ var _ = framework.KubeDescribe("Upgrade [Feature:Upgrade]", func() {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
framework.KubeDescribe("node upgrade", func() {
|
SIGDescribe("node upgrade", func() {
|
||||||
It("should maintain a functioning cluster [Feature:NodeUpgrade]", func() {
|
It("should maintain a functioning cluster [Feature:NodeUpgrade]", func() {
|
||||||
upgCtx, err := getUpgradeContext(f.ClientSet.Discovery(), framework.TestContext.UpgradeTarget)
|
upgCtx, err := getUpgradeContext(f.ClientSet.Discovery(), framework.TestContext.UpgradeTarget)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
|
|
||||||
testSuite := &junit.TestSuite{Name: "Node upgrade"}
|
testSuite := &junit.TestSuite{Name: "Node upgrade"}
|
||||||
nodeUpgradeTest := &junit.TestCase{Name: "node-upgrade", Classname: "upgrade_tests"}
|
nodeUpgradeTest := &junit.TestCase{
|
||||||
|
Name: "node-upgrade",
|
||||||
|
Classname: "upgrade_tests",
|
||||||
|
}
|
||||||
|
|
||||||
upgradeFunc := func() {
|
upgradeFunc := func() {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
@ -97,13 +103,13 @@ var _ = framework.KubeDescribe("Upgrade [Feature:Upgrade]", func() {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
framework.KubeDescribe("cluster upgrade", func() {
|
SIGDescribe("cluster upgrade", func() {
|
||||||
It("should maintain a functioning cluster [Feature:ClusterUpgrade]", func() {
|
It("should maintain a functioning cluster [Feature:ClusterUpgrade]", func() {
|
||||||
upgCtx, err := getUpgradeContext(f.ClientSet.Discovery(), framework.TestContext.UpgradeTarget)
|
upgCtx, err := getUpgradeContext(f.ClientSet.Discovery(), framework.TestContext.UpgradeTarget)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
|
|
||||||
testSuite := &junit.TestSuite{Name: "Cluster upgrade"}
|
testSuite := &junit.TestSuite{Name: "Cluster upgrade"}
|
||||||
clusterUpgradeTest := &junit.TestCase{Name: "cluster-upgrade", Classname: "upgrade_tests"}
|
clusterUpgradeTest := &junit.TestCase{Name: "[sig-cluster-lifecycle] cluster-upgrade", Classname: "upgrade_tests"}
|
||||||
testSuite.TestCases = append(testSuite.TestCases, clusterUpgradeTest)
|
testSuite.TestCases = append(testSuite.TestCases, clusterUpgradeTest)
|
||||||
upgradeFunc := func() {
|
upgradeFunc := func() {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
@ -119,20 +125,20 @@ var _ = framework.KubeDescribe("Upgrade [Feature:Upgrade]", func() {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
var _ = framework.KubeDescribe("Downgrade [Feature:Downgrade]", func() {
|
var _ = SIGDescribe("Downgrade [Feature:Downgrade]", func() {
|
||||||
f := framework.NewDefaultFramework("cluster-downgrade")
|
f := framework.NewDefaultFramework("cluster-downgrade")
|
||||||
|
|
||||||
// Create the frameworks here because we can only create them
|
// Create the frameworks here because we can only create them
|
||||||
// in a "Describe".
|
// in a "Describe".
|
||||||
testFrameworks := createUpgradeFrameworks()
|
testFrameworks := createUpgradeFrameworks()
|
||||||
|
|
||||||
framework.KubeDescribe("cluster downgrade", func() {
|
SIGDescribe("cluster downgrade", func() {
|
||||||
It("should maintain a functioning cluster [Feature:ClusterDowngrade]", func() {
|
It("should maintain a functioning cluster [Feature:ClusterDowngrade]", func() {
|
||||||
upgCtx, err := getUpgradeContext(f.ClientSet.Discovery(), framework.TestContext.UpgradeTarget)
|
upgCtx, err := getUpgradeContext(f.ClientSet.Discovery(), framework.TestContext.UpgradeTarget)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
|
|
||||||
testSuite := &junit.TestSuite{Name: "Cluster downgrade"}
|
testSuite := &junit.TestSuite{Name: "Cluster downgrade"}
|
||||||
clusterDowngradeTest := &junit.TestCase{Name: "cluster-downgrade", Classname: "upgrade_tests"}
|
clusterDowngradeTest := &junit.TestCase{Name: "[sig-cluster-lifecycle] cluster-downgrade", Classname: "upgrade_tests"}
|
||||||
testSuite.TestCases = append(testSuite.TestCases, clusterDowngradeTest)
|
testSuite.TestCases = append(testSuite.TestCases, clusterDowngradeTest)
|
||||||
|
|
||||||
upgradeFunc := func() {
|
upgradeFunc := func() {
|
||||||
@ -150,19 +156,19 @@ var _ = framework.KubeDescribe("Downgrade [Feature:Downgrade]", func() {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
var _ = framework.KubeDescribe("etcd Upgrade [Feature:EtcdUpgrade]", func() {
|
var _ = SIGDescribe("etcd Upgrade [Feature:EtcdUpgrade]", func() {
|
||||||
f := framework.NewDefaultFramework("etc-upgrade")
|
f := framework.NewDefaultFramework("etc-upgrade")
|
||||||
|
|
||||||
// Create the frameworks here because we can only create them
|
// Create the frameworks here because we can only create them
|
||||||
// in a "Describe".
|
// in a "Describe".
|
||||||
testFrameworks := createUpgradeFrameworks()
|
testFrameworks := createUpgradeFrameworks()
|
||||||
framework.KubeDescribe("etcd upgrade", func() {
|
SIGDescribe("etcd upgrade", func() {
|
||||||
It("should maintain a functioning cluster", func() {
|
It("should maintain a functioning cluster", func() {
|
||||||
upgCtx, err := getUpgradeContext(f.ClientSet.Discovery(), "")
|
upgCtx, err := getUpgradeContext(f.ClientSet.Discovery(), "")
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
|
|
||||||
testSuite := &junit.TestSuite{Name: "Etcd upgrade"}
|
testSuite := &junit.TestSuite{Name: "Etcd upgrade"}
|
||||||
etcdTest := &junit.TestCase{Name: "etcd-upgrade", Classname: "upgrade_tests"}
|
etcdTest := &junit.TestCase{Name: "[sig-cluster-lifecycle] etcd-upgrade", Classname: "upgrade_tests"}
|
||||||
testSuite.TestCases = append(testSuite.TestCases, etcdTest)
|
testSuite.TestCases = append(testSuite.TestCases, etcdTest)
|
||||||
|
|
||||||
upgradeFunc := func() {
|
upgradeFunc := func() {
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package e2e
|
package lifecycle
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -26,6 +26,7 @@ import (
|
|||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
|
"k8s.io/kubernetes/test/e2e/common"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -76,7 +77,7 @@ func verifyRCs(c clientset.Interface, ns string, names []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func createNewRC(c clientset.Interface, ns string, name string) {
|
func createNewRC(c clientset.Interface, ns string, name string) {
|
||||||
_, err := newRCByName(c, ns, name, 1, nil)
|
_, err := common.NewRCByName(c, ns, name, 1, nil)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +114,7 @@ func removeZoneFromZones(zones []string, zone string) []string {
|
|||||||
return zones
|
return zones
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ = framework.KubeDescribe("HA-master [Feature:HAMaster]", func() {
|
var _ = SIGDescribe("HA-master [Feature:HAMaster]", func() {
|
||||||
f := framework.NewDefaultFramework("ha-master")
|
f := framework.NewDefaultFramework("ha-master")
|
||||||
var c clientset.Interface
|
var c clientset.Interface
|
||||||
var ns string
|
var ns string
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package e2e
|
package lifecycle
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -50,7 +50,7 @@ const (
|
|||||||
rebootPodReadyAgainTimeout = 5 * time.Minute
|
rebootPodReadyAgainTimeout = 5 * time.Minute
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ = framework.KubeDescribe("Reboot [Disruptive] [Feature:Reboot]", func() {
|
var _ = SIGDescribe("Reboot [Disruptive] [Feature:Reboot]", func() {
|
||||||
var f *framework.Framework
|
var f *framework.Framework
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
@ -14,60 +14,23 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package e2e
|
package lifecycle
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
|
"k8s.io/kubernetes/test/e2e/common"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const resizeNodeReadyTimeout = 2 * time.Minute
|
||||||
resizeNodeReadyTimeout = 2 * time.Minute
|
|
||||||
nodeReadinessTimeout = 3 * time.Minute
|
|
||||||
podNotReadyTimeout = 1 * time.Minute
|
|
||||||
podReadyTimeout = 2 * time.Minute
|
|
||||||
testPort = 9376
|
|
||||||
)
|
|
||||||
|
|
||||||
func svcByName(name string, port int) *v1.Service {
|
|
||||||
return &v1.Service{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: name,
|
|
||||||
},
|
|
||||||
Spec: v1.ServiceSpec{
|
|
||||||
Type: v1.ServiceTypeNodePort,
|
|
||||||
Selector: map[string]string{
|
|
||||||
"name": name,
|
|
||||||
},
|
|
||||||
Ports: []v1.ServicePort{{
|
|
||||||
Port: int32(port),
|
|
||||||
TargetPort: intstr.FromInt(port),
|
|
||||||
}},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func newSVCByName(c clientset.Interface, ns, name string) error {
|
|
||||||
_, err := c.Core().Services(ns).Create(svcByName(name, testPort))
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// newRCByName creates a replication controller with a selector by name of name.
|
|
||||||
func newRCByName(c clientset.Interface, ns, name string, replicas int32, gracePeriod *int64) (*v1.ReplicationController, error) {
|
|
||||||
By(fmt.Sprintf("creating replication controller %s", name))
|
|
||||||
return c.Core().ReplicationControllers(ns).Create(framework.RcByNamePort(
|
|
||||||
name, replicas, framework.ServeHostnameImage, 9376, v1.ProtocolTCP, map[string]string{}, gracePeriod))
|
|
||||||
}
|
|
||||||
|
|
||||||
func resizeRC(c clientset.Interface, ns, name string, replicas int32) error {
|
func resizeRC(c clientset.Interface, ns, name string, replicas int32) error {
|
||||||
rc, err := c.Core().ReplicationControllers(ns).Get(name, metav1.GetOptions{})
|
rc, err := c.Core().ReplicationControllers(ns).Get(name, metav1.GetOptions{})
|
||||||
@ -79,7 +42,7 @@ func resizeRC(c clientset.Interface, ns, name string, replicas int32) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ = framework.KubeDescribe("Nodes [Disruptive]", func() {
|
var _ = SIGDescribe("Nodes [Disruptive]", func() {
|
||||||
f := framework.NewDefaultFramework("resize-nodes")
|
f := framework.NewDefaultFramework("resize-nodes")
|
||||||
var systemPodsNo int32
|
var systemPodsNo int32
|
||||||
var c clientset.Interface
|
var c clientset.Interface
|
||||||
@ -101,7 +64,7 @@ var _ = framework.KubeDescribe("Nodes [Disruptive]", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Slow issue #13323 (8 min)
|
// Slow issue #13323 (8 min)
|
||||||
framework.KubeDescribe("Resize [Slow]", func() {
|
SIGDescribe("Resize [Slow]", func() {
|
||||||
var skipped bool
|
var skipped bool
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
@ -144,7 +107,7 @@ var _ = framework.KubeDescribe("Nodes [Disruptive]", func() {
|
|||||||
err := framework.WaitForPodsRunningReady(c, metav1.NamespaceSystem, systemPodsNo, 0, framework.PodReadyBeforeTimeout, ignoreLabels)
|
err := framework.WaitForPodsRunningReady(c, metav1.NamespaceSystem, systemPodsNo, 0, framework.PodReadyBeforeTimeout, ignoreLabels)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
By("waiting for image prepulling pods to complete")
|
By("waiting for image prepulling pods to complete")
|
||||||
framework.WaitForPodsSuccess(c, metav1.NamespaceSystem, framework.ImagePullerLabels, imagePrePullingTimeout)
|
framework.WaitForPodsSuccess(c, metav1.NamespaceSystem, framework.ImagePullerLabels, framework.ImagePrePullingTimeout)
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should be able to delete nodes", func() {
|
It("should be able to delete nodes", func() {
|
||||||
@ -152,7 +115,7 @@ var _ = framework.KubeDescribe("Nodes [Disruptive]", func() {
|
|||||||
// The source for the Docker container kubernetes/serve_hostname is in contrib/for-demos/serve_hostname
|
// The source for the Docker container kubernetes/serve_hostname is in contrib/for-demos/serve_hostname
|
||||||
name := "my-hostname-delete-node"
|
name := "my-hostname-delete-node"
|
||||||
replicas := int32(framework.TestContext.CloudConfig.NumNodes)
|
replicas := int32(framework.TestContext.CloudConfig.NumNodes)
|
||||||
newRCByName(c, ns, name, replicas, nil)
|
common.NewRCByName(c, ns, name, replicas, nil)
|
||||||
err := framework.VerifyPods(c, ns, name, true, replicas)
|
err := framework.VerifyPods(c, ns, name, true, replicas)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
@ -178,9 +141,9 @@ var _ = framework.KubeDescribe("Nodes [Disruptive]", func() {
|
|||||||
// Create a replication controller for a service that serves its hostname.
|
// Create a replication controller for a service that serves its hostname.
|
||||||
// The source for the Docker container kubernetes/serve_hostname is in contrib/for-demos/serve_hostname
|
// The source for the Docker container kubernetes/serve_hostname is in contrib/for-demos/serve_hostname
|
||||||
name := "my-hostname-add-node"
|
name := "my-hostname-add-node"
|
||||||
newSVCByName(c, ns, name)
|
common.NewSVCByName(c, ns, name)
|
||||||
replicas := int32(framework.TestContext.CloudConfig.NumNodes)
|
replicas := int32(framework.TestContext.CloudConfig.NumNodes)
|
||||||
newRCByName(c, ns, name, replicas, nil)
|
common.NewRCByName(c, ns, name, replicas, nil)
|
||||||
err := framework.VerifyPods(c, ns, name, true, replicas)
|
err := framework.VerifyPods(c, ns, name, true, replicas)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package e2e
|
package lifecycle
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -55,7 +55,7 @@ func filterIrrelevantPods(pods []*v1.Pod) []*v1.Pod {
|
|||||||
return results
|
return results
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ = framework.KubeDescribe("Restart [Disruptive]", func() {
|
var _ = SIGDescribe("Restart [Disruptive]", func() {
|
||||||
f := framework.NewDefaultFramework("restart")
|
f := framework.NewDefaultFramework("restart")
|
||||||
var ps *testutils.PodStore
|
var ps *testutils.PodStore
|
||||||
var originalNodeNames []string
|
var originalNodeNames []string
|
23
test/e2e/lifecycle/sig.go
Normal file
23
test/e2e/lifecycle/sig.go
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2017 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package lifecycle
|
||||||
|
|
||||||
|
import "github.com/onsi/ginkgo"
|
||||||
|
|
||||||
|
func SIGDescribe(text string, body func()) bool {
|
||||||
|
return ginkgo.Describe("[sig-cluster-lifecycle] "+text, body)
|
||||||
|
}
|
@ -34,6 +34,7 @@ import (
|
|||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
nodepkg "k8s.io/kubernetes/pkg/controller/node"
|
nodepkg "k8s.io/kubernetes/pkg/controller/node"
|
||||||
|
"k8s.io/kubernetes/test/e2e/common"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
testutils "k8s.io/kubernetes/test/utils"
|
testutils "k8s.io/kubernetes/test/utils"
|
||||||
|
|
||||||
@ -42,7 +43,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
timeout = 60 * time.Second
|
timeout = 60 * time.Second
|
||||||
|
podReadyTimeout = 2 * time.Minute
|
||||||
|
podNotReadyTimeout = 1 * time.Minute
|
||||||
|
nodeReadinessTimeout = 3 * time.Minute
|
||||||
|
resizeNodeReadyTimeout = 2 * time.Minute
|
||||||
)
|
)
|
||||||
|
|
||||||
func expectNodeReadiness(isReady bool, newNode chan *v1.Node) {
|
func expectNodeReadiness(isReady bool, newNode chan *v1.Node) {
|
||||||
@ -231,9 +236,9 @@ var _ = framework.KubeDescribe("[sig-apps] Network Partition [Disruptive] [Slow]
|
|||||||
// Create a replication controller for a service that serves its hostname.
|
// Create a replication controller for a service that serves its hostname.
|
||||||
// The source for the Docker container kubernetes/serve_hostname is in contrib/for-demos/serve_hostname
|
// The source for the Docker container kubernetes/serve_hostname is in contrib/for-demos/serve_hostname
|
||||||
name := "my-hostname-net"
|
name := "my-hostname-net"
|
||||||
newSVCByName(c, ns, name)
|
common.NewSVCByName(c, ns, name)
|
||||||
replicas := int32(framework.TestContext.CloudConfig.NumNodes)
|
replicas := int32(framework.TestContext.CloudConfig.NumNodes)
|
||||||
newRCByName(c, ns, name, replicas, nil)
|
common.NewRCByName(c, ns, name, replicas, nil)
|
||||||
err := framework.VerifyPods(c, ns, name, true, replicas)
|
err := framework.VerifyPods(c, ns, name, true, replicas)
|
||||||
Expect(err).NotTo(HaveOccurred(), "Each pod should start running and responding")
|
Expect(err).NotTo(HaveOccurred(), "Each pod should start running and responding")
|
||||||
|
|
||||||
@ -296,9 +301,9 @@ var _ = framework.KubeDescribe("[sig-apps] Network Partition [Disruptive] [Slow]
|
|||||||
name := "my-hostname-net"
|
name := "my-hostname-net"
|
||||||
gracePeriod := int64(30)
|
gracePeriod := int64(30)
|
||||||
|
|
||||||
newSVCByName(c, ns, name)
|
common.NewSVCByName(c, ns, name)
|
||||||
replicas := int32(framework.TestContext.CloudConfig.NumNodes)
|
replicas := int32(framework.TestContext.CloudConfig.NumNodes)
|
||||||
newRCByName(c, ns, name, replicas, &gracePeriod)
|
common.NewRCByName(c, ns, name, replicas, &gracePeriod)
|
||||||
err := framework.VerifyPods(c, ns, name, true, replicas)
|
err := framework.VerifyPods(c, ns, name, true, replicas)
|
||||||
Expect(err).NotTo(HaveOccurred(), "Each pod should start running and responding")
|
Expect(err).NotTo(HaveOccurred(), "Each pod should start running and responding")
|
||||||
|
|
||||||
@ -372,7 +377,7 @@ var _ = framework.KubeDescribe("[sig-apps] Network Partition [Disruptive] [Slow]
|
|||||||
nn := framework.TestContext.CloudConfig.NumNodes
|
nn := framework.TestContext.CloudConfig.NumNodes
|
||||||
nodeNames, err := framework.CheckNodesReady(f.ClientSet, framework.NodeReadyInitialTimeout, nn)
|
nodeNames, err := framework.CheckNodesReady(f.ClientSet, framework.NodeReadyInitialTimeout, nn)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
restartNodes(f, nodeNames)
|
common.RestartNodes(f.ClientSet, nodeNames)
|
||||||
|
|
||||||
By("waiting for pods to be running again")
|
By("waiting for pods to be running again")
|
||||||
pst.WaitForRunningAndReady(*ps.Spec.Replicas, ps)
|
pst.WaitForRunningAndReady(*ps.Spec.Replicas, ps)
|
||||||
|
@ -40,7 +40,6 @@ import (
|
|||||||
|
|
||||||
const maxNumberOfPods int64 = 10
|
const maxNumberOfPods int64 = 10
|
||||||
const minPodCPURequest int64 = 500
|
const minPodCPURequest int64 = 500
|
||||||
const imagePrePullingTimeout = 5 * time.Minute
|
|
||||||
|
|
||||||
// variable set in BeforeEach, never modified afterwards
|
// variable set in BeforeEach, never modified afterwards
|
||||||
var masterNodes sets.String
|
var masterNodes sets.String
|
||||||
@ -101,7 +100,7 @@ var _ = SIGDescribe("SchedulerPredicates [Serial]", func() {
|
|||||||
err = framework.WaitForPodsRunningReady(cs, metav1.NamespaceSystem, int32(systemPodsNo), 0, framework.PodReadyBeforeTimeout, ignoreLabels)
|
err = framework.WaitForPodsRunningReady(cs, metav1.NamespaceSystem, int32(systemPodsNo), 0, framework.PodReadyBeforeTimeout, ignoreLabels)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
err = framework.WaitForPodsSuccess(cs, metav1.NamespaceSystem, framework.ImagePullerLabels, imagePrePullingTimeout)
|
err = framework.WaitForPodsSuccess(cs, metav1.NamespaceSystem, framework.ImagePullerLabels, framework.ImagePrePullingTimeout)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
for _, node := range nodeList.Items {
|
for _, node := range nodeList.Items {
|
||||||
|
Loading…
Reference in New Issue
Block a user