mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-31 05:40:42 +00:00 
			
		
		
		
	fixit: break sig-cluster-lifecycle tests into subpackage
This commit is contained in:
		| @@ -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 { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user