mirror of https://github.com/kubernetes/kops.git
				
				
				
			
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Go
		
	
	
	
/*
 | 
						|
Copyright 2021 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 tester
 | 
						|
 | 
						|
import (
 | 
						|
	"regexp"
 | 
						|
	"strings"
 | 
						|
 | 
						|
	"k8s.io/kops/upup/pkg/fi/utils"
 | 
						|
)
 | 
						|
 | 
						|
const (
 | 
						|
	skipRegexBase = "\\[Slow\\]|\\[Serial\\]|\\[Disruptive\\]|\\[Flaky\\]|\\[Feature:.+\\]|\\[Driver:.nfs\\]|Gluster"
 | 
						|
)
 | 
						|
 | 
						|
func (t *Tester) setSkipRegexFlag() error {
 | 
						|
	if t.SkipRegex != "" {
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
 | 
						|
	cluster, err := t.getKopsCluster()
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
 | 
						|
	skipRegex := skipRegexBase
 | 
						|
 | 
						|
	networking := cluster.Spec.Networking
 | 
						|
	switch {
 | 
						|
	case networking.Kubenet != nil, networking.Canal != nil, networking.Weave != nil, networking.Cilium != nil:
 | 
						|
		skipRegex += "|Services.*rejected.*endpoints"
 | 
						|
	}
 | 
						|
	if networking.Cilium != nil {
 | 
						|
		// https://github.com/cilium/cilium/issues/10002
 | 
						|
		skipRegex += "|TCP.CLOSE_WAIT"
 | 
						|
		// https://github.com/cilium/cilium/issues/15361
 | 
						|
		skipRegex += "|external.IP.is.not.assigned.to.a.node"
 | 
						|
		// https://github.com/cilium/cilium/issues/14287
 | 
						|
		skipRegex += "|same.port.number.but.different.protocols|same.hostPort.but.different.hostIP.and.protocol"
 | 
						|
		if strings.Contains(cluster.Spec.KubernetesVersion, "v1.23.0") || strings.Contains(cluster.Spec.KubernetesVersion, "v1.24.0") {
 | 
						|
			// Reassess after https://github.com/kubernetes/kubernetes/pull/102643 is merged
 | 
						|
			// ref:
 | 
						|
			// https://github.com/kubernetes/kubernetes/issues/96717
 | 
						|
			// https://github.com/cilium/cilium/issues/5719
 | 
						|
			skipRegex += "|should.create.a.Pod.with.SCTP.HostPort"
 | 
						|
		}
 | 
						|
	} else if networking.Kuberouter != nil {
 | 
						|
		skipRegex += "|load-balancer|hairpin|affinity\\stimeout|service\\.kubernetes\\.io|CLOSE_WAIT"
 | 
						|
	} else if networking.Kubenet != nil {
 | 
						|
		skipRegex += "|Services.*affinity"
 | 
						|
	}
 | 
						|
 | 
						|
	if cluster.Spec.CloudProvider == "gce" {
 | 
						|
		// Firewall tests expect a specific format for cluster and control plane host names
 | 
						|
		// which kOps does not match
 | 
						|
		// ref: https://github.com/kubernetes/kubernetes/blob/1bd00776b5d78828a065b5c21e7003accc308a06/test/e2e/framework/providers/gce/firewall.go#L92-L100
 | 
						|
		skipRegex += "|Firewall"
 | 
						|
		// kube-dns tests are not skipped automatically if a cluster uses CoreDNS instead
 | 
						|
		skipRegex += "|kube-dns"
 | 
						|
		// this tests assumes a custom config for containerd:
 | 
						|
		// https://github.com/kubernetes/test-infra/blob/578d86a7be187214be6ccd60e6ea7317b51aeb15/jobs/e2e_node/containerd/config.toml#L19-L21
 | 
						|
		// ref: https://github.com/kubernetes/kubernetes/pull/104803
 | 
						|
		skipRegex += "|RuntimeClass.should.run"
 | 
						|
		// this test assumes the cluster runs COS but kOps uses Ubuntu by default
 | 
						|
		// ref: https://github.com/kubernetes/test-infra/pull/22190
 | 
						|
		skipRegex += "|should.be.mountable.when.non-attachable"
 | 
						|
		// The in-tree driver and its E2E tests use `topology.kubernetes.io/zone` but the CSI driver uses `topology.gke.io/zone`
 | 
						|
		skipRegex += "|In-tree.Volumes.\\[Driver:.gcepd\\].*topology.should.provision.a.volume.and.schedule.a.pod.with.AllowedTopologies"
 | 
						|
	}
 | 
						|
 | 
						|
	if strings.Contains(cluster.Spec.KubernetesVersion, "v1.23.") && cluster.Spec.CloudProvider == "aws" && utils.IsIPv6CIDR(cluster.Spec.NonMasqueradeCIDR) {
 | 
						|
		// ref: https://github.com/kubernetes/kubernetes/pull/106992
 | 
						|
		skipRegex += "|should.not.disrupt.a.cloud.load-balancer.s.connectivity.during.rollout"
 | 
						|
	}
 | 
						|
 | 
						|
	// Ensure it is valid regex
 | 
						|
	if _, err := regexp.Compile(skipRegex); err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	t.SkipRegex = skipRegex
 | 
						|
	return nil
 | 
						|
}
 |