Merge pull request #81087 from johnSchnake/addSkipsIfSSHNotPresent
Ensure tests which rely on SSH behavior are skipped if unavailable
This commit is contained in:
		@@ -44,6 +44,7 @@ var _ = SIGDescribe("Etcd failure [Disruptive]", func() {
 | 
			
		||||
		// ... so the provider check should be identical to the intersection of
 | 
			
		||||
		// providers that provide those capabilities.
 | 
			
		||||
		framework.SkipUnlessProviderIs("gce")
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		err := framework.RunRC(testutils.RCConfig{
 | 
			
		||||
			Client:    f.ClientSet,
 | 
			
		||||
 
 | 
			
		||||
@@ -130,6 +130,7 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() {
 | 
			
		||||
		ginkgo.Context("should return to running and ready state after network partition is healed", func() {
 | 
			
		||||
			ginkgo.BeforeEach(func() {
 | 
			
		||||
				framework.SkipUnlessNodeCountIsAtLeast(2)
 | 
			
		||||
				framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
			// What happens in this test:
 | 
			
		||||
@@ -238,6 +239,7 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() {
 | 
			
		||||
	framework.KubeDescribe("[ReplicationController]", func() {
 | 
			
		||||
		ginkgo.It("should recreate pods scheduled on the unreachable node "+
 | 
			
		||||
			"AND allow scheduling of pods on a node after it rejoins the cluster", func() {
 | 
			
		||||
			framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
			// 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
 | 
			
		||||
@@ -304,6 +306,8 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() {
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		ginkgo.It("should eagerly create replacement pod during network partition when termination grace is non-zero", func() {
 | 
			
		||||
			framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
			// 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
 | 
			
		||||
			name := "my-hostname-net"
 | 
			
		||||
@@ -394,6 +398,8 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() {
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		ginkgo.It("should not reschedule stateful pods if there is a network partition [Slow] [Disruptive]", func() {
 | 
			
		||||
			framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
			ps := e2esset.NewStatefulSet(psName, ns, headlessSvcName, 3, []v1.VolumeMount{}, []v1.VolumeMount{}, labels)
 | 
			
		||||
			_, err := c.AppsV1().StatefulSets(ns).Create(ps)
 | 
			
		||||
			framework.ExpectNoError(err)
 | 
			
		||||
@@ -425,6 +431,8 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() {
 | 
			
		||||
 | 
			
		||||
	framework.KubeDescribe("[Job]", func() {
 | 
			
		||||
		ginkgo.It("should create new pods when node is partitioned", func() {
 | 
			
		||||
			framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
			parallelism := int32(2)
 | 
			
		||||
			completions := int32(4)
 | 
			
		||||
			backoffLimit := int32(6) // default value
 | 
			
		||||
@@ -482,6 +490,7 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() {
 | 
			
		||||
			// 3. After enough time passess all Pods are evicted from the given Node
 | 
			
		||||
			ginkgo.It("[Feature:TaintEviction] All pods on the unreachable node should be marked as NotReady upon the node turn NotReady "+
 | 
			
		||||
				"AND all pods should be evicted after eviction timeout passes", func() {
 | 
			
		||||
				framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
				ginkgo.By("choose a node - we will block all network traffic on this node")
 | 
			
		||||
				var podOpts metav1.ListOptions
 | 
			
		||||
				nodes := framework.GetReadySchedulableNodesOrDie(c)
 | 
			
		||||
 
 | 
			
		||||
@@ -685,6 +685,7 @@ var _ = SIGDescribe("Cluster size autoscaling [Slow]", func() {
 | 
			
		||||
 | 
			
		||||
	ginkgo.It("should correctly scale down after a node is not needed and one node is broken [Feature:ClusterSizeAutoscalingScaleDown]",
 | 
			
		||||
		func() {
 | 
			
		||||
			framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
			framework.TestUnderTemporaryNetworkFailure(c, "default", getAnyNode(c), func() { simpleScaleDownTest(1) })
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
@@ -876,6 +877,8 @@ var _ = SIGDescribe("Cluster size autoscaling [Slow]", func() {
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	ginkgo.It("Shouldn't perform scale up operation and should list unhealthy status if most of the cluster is broken[Feature:ClusterSizeAutoscalingScaleUp]", func() {
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		clusterSize := nodeCount
 | 
			
		||||
		for clusterSize < unhealthyClusterThreshold+1 {
 | 
			
		||||
			clusterSize = manuallyIncreaseClusterSize(f, originalSizes)
 | 
			
		||||
 
 | 
			
		||||
@@ -408,6 +408,7 @@ var _ = SIGDescribe("Services", func() {
 | 
			
		||||
	ginkgo.It("should work after restarting kube-proxy [Disruptive]", func() {
 | 
			
		||||
		// TODO: use the ServiceTestJig here
 | 
			
		||||
		framework.SkipUnlessProviderIs("gce", "gke")
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		ns := f.Namespace.Name
 | 
			
		||||
		numPods, servicePort := 3, defaultServeHostnameServicePort
 | 
			
		||||
@@ -464,6 +465,7 @@ var _ = SIGDescribe("Services", func() {
 | 
			
		||||
	ginkgo.It("should work after restarting apiserver [Disruptive]", func() {
 | 
			
		||||
		// TODO: use the ServiceTestJig here
 | 
			
		||||
		framework.SkipUnlessProviderIs("gce", "gke")
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		ns := f.Namespace.Name
 | 
			
		||||
		numPods, servicePort := 3, 80
 | 
			
		||||
@@ -1666,6 +1668,8 @@ var _ = SIGDescribe("Services", func() {
 | 
			
		||||
		// This test is for clusters on GCE.
 | 
			
		||||
		// (It restarts kube-controller-manager, which we don't support on GKE)
 | 
			
		||||
		framework.SkipUnlessProviderIs("gce")
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		clusterID, err := gce.GetClusterID(cs)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			e2elog.Failf("framework.GetClusterID(cs) = _, %v; want nil", err)
 | 
			
		||||
 
 | 
			
		||||
@@ -56,6 +56,8 @@ var _ = SIGDescribe("NodeProblemDetector [DisabledForLargeClusters]", func() {
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	ginkgo.It("should run without error", func() {
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		ginkgo.By("Getting all nodes and their SSH-able IP addresses")
 | 
			
		||||
		nodes := framework.GetReadySchedulableNodesOrDie(f.ClientSet)
 | 
			
		||||
		gomega.Expect(len(nodes.Items)).NotTo(gomega.BeZero())
 | 
			
		||||
 
 | 
			
		||||
@@ -503,6 +503,9 @@ var _ = SIGDescribe("Density", func() {
 | 
			
		||||
	f.NamespaceDeletionTimeout = time.Hour
 | 
			
		||||
 | 
			
		||||
	ginkgo.BeforeEach(func() {
 | 
			
		||||
		// Gathering the metrics currently uses a path which uses SSH.
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		var err error
 | 
			
		||||
		c = f.ClientSet
 | 
			
		||||
		ns = f.Namespace.Name
 | 
			
		||||
 
 | 
			
		||||
@@ -109,6 +109,10 @@ var _ = SIGDescribe("Load capacity", func() {
 | 
			
		||||
	var testPhaseDurations *timer.TestPhaseTimer
 | 
			
		||||
	var profileGathererStopCh chan struct{}
 | 
			
		||||
 | 
			
		||||
	ginkgo.BeforeEach(func() {
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	// Gathers metrics before teardown
 | 
			
		||||
	// TODO add flag that allows to skip cleanup on failure
 | 
			
		||||
	ginkgo.AfterEach(func() {
 | 
			
		||||
 
 | 
			
		||||
@@ -76,6 +76,8 @@ var _ = SIGDescribe("TaintBasedEvictions [Serial]", func() {
 | 
			
		||||
	// 5. node lifecycle manager generate a status change: [NodeReady=true, status=ConditionTrue]
 | 
			
		||||
	// 6. node.kubernetes.io/unreachable=:NoExecute taint is taken off the node
 | 
			
		||||
	ginkgo.It("Checks that the node becomes unreachable", func() {
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		// find an available node
 | 
			
		||||
		nodeName := GetNodeThatCanRunPod(f)
 | 
			
		||||
		ginkgo.By("Finding an available node " + nodeName)
 | 
			
		||||
 
 | 
			
		||||
@@ -64,6 +64,8 @@ var _ = utils.SIGDescribe("Detaching volumes", func() {
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	ginkgo.It("should not work when mount is in progress [Slow]", func() {
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		driver := "attachable-with-long-mount"
 | 
			
		||||
		driverInstallAs := driver + "-" + suffix
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -116,6 +116,8 @@ var _ = utils.SIGDescribe("Mounted flexvolume volume expand [Slow] [Feature:Expa
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	ginkgo.It("should be resizable when mounted", func() {
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		driver := "dummy-attachable"
 | 
			
		||||
 | 
			
		||||
		node := nodeList.Items[0]
 | 
			
		||||
 
 | 
			
		||||
@@ -175,6 +175,8 @@ var _ = utils.SIGDescribe("NFSPersistentVolumes[Disruptive][Flaky]", func() {
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		ginkgo.It("should delete a bound PVC from a clientPod, restart the kube-control-manager, and ensure the kube-controller-manager does not crash", func() {
 | 
			
		||||
			framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
			ginkgo.By("Deleting PVC for volume 2")
 | 
			
		||||
			err = framework.DeletePersistentVolumeClaim(c, pvc2.Name, ns)
 | 
			
		||||
			framework.ExpectNoError(err)
 | 
			
		||||
 
 | 
			
		||||
@@ -179,6 +179,7 @@ var _ = utils.SIGDescribe("PersistentVolumes:vsphere", func() {
 | 
			
		||||
		3. Verify that written file is accessible after kubelet restart
 | 
			
		||||
	*/
 | 
			
		||||
	ginkgo.It("should test that a file written to the vspehre volume mount before kubelet restart can be read after restart [Disruptive]", func() {
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
		utils.TestKubeletRestartsAndRestoresMount(c, f, clientPod)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
@@ -194,6 +195,7 @@ var _ = utils.SIGDescribe("PersistentVolumes:vsphere", func() {
 | 
			
		||||
		5. Verify that volume mount not to be found.
 | 
			
		||||
	*/
 | 
			
		||||
	ginkgo.It("should test that a vspehre volume mounted to a pod that is deleted while the kubelet is down unmounts when the kubelet returns [Disruptive]", func() {
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
		utils.TestVolumeUnmountsFromDeletedPod(c, f, clientPod)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -81,6 +81,8 @@ var _ = utils.SIGDescribe("Volume Attach Verify [Feature:vsphere][Serial][Disrup
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	ginkgo.It("verify volume remains attached after master kubelet restart", func() {
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		// Create pod on each node
 | 
			
		||||
		for i := 0; i < numNodes; i++ {
 | 
			
		||||
			ginkgo.By(fmt.Sprintf("%d: Creating a test vsphere volume", i))
 | 
			
		||||
 
 | 
			
		||||
@@ -99,6 +99,8 @@ var _ = utils.SIGDescribe("Verify Volume Attach Through vpxd Restart [Feature:vs
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	ginkgo.It("verify volume remains attached through vpxd restart", func() {
 | 
			
		||||
		framework.SkipUnlessSSHKeyPresent()
 | 
			
		||||
 | 
			
		||||
		for vcHost, nodes := range vcNodesMap {
 | 
			
		||||
			var (
 | 
			
		||||
				volumePaths  []string
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user