From 29d6c73e878acd00633614dd597b8a3eaec693b0 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Mon, 1 Jun 2020 14:55:18 -0400 Subject: [PATCH] test: fix network-plugin-related skips The old code allowed doing both "[Skipped:Network/OpenShiftSDN]" ("Skip on OpenShiftSDN") and "[Skipped:Network/OpenShiftSDN/Multitenant]" ("Skip on OpenShiftSDN in Multitenant mode"), and the test annotations made use of this. But the current code lost that distinction and ended up skipping the "only skip in Multitenant mode" tests even in NetworkPolicy mode (meaning we were always skipping the NetworkPolicy tests on openshift-sdn). --- cmd/openshift-tests/provider.go | 18 +++++++++++++----- test/extended/util/cloud/cloud.go | 28 ++++++++++++++++++---------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/cmd/openshift-tests/provider.go b/cmd/openshift-tests/provider.go index bf2f4489e057..84269c2684ca 100644 --- a/cmd/openshift-tests/provider.go +++ b/cmd/openshift-tests/provider.go @@ -54,12 +54,20 @@ func initializeTestFramework(context *e2e.TestContextType, config *exutilcloud.C // given the configuration we have loaded, skip tests that our provider should exclude // or our network plugin should exclude - skipProvider := fmt.Sprintf("[Skipped:%s", config.ProviderName) - skipNetworkPlugin := fmt.Sprintf("[Skipped:Network/%s", config.NetworkPlugin) - skipFn := func(name string) bool { - return !strings.Contains(name, skipProvider) && !strings.Contains(name, skipNetworkPlugin) + var skips []string + skips = append(skips, fmt.Sprintf("[Skipped:%s]", config.ProviderName)) + for _, id := range config.NetworkPluginIDs { + skips = append(skips, fmt.Sprintf("[Skipped:Network/%s]", id)) } - return skipFn, nil + matchFn := func(name string) bool { + for _, skip := range skips { + if strings.Contains(name, skip) { + return false + } + } + return true + } + return matchFn, nil } func decodeProvider(provider string, dryRun, discover bool) (*exutilcloud.ClusterConfiguration, error) { diff --git a/test/extended/util/cloud/cloud.go b/test/extended/util/cloud/cloud.go index 603705fa458d..f03a7b55415f 100644 --- a/test/extended/util/cloud/cloud.go +++ b/test/extended/util/cloud/cloud.go @@ -12,6 +12,7 @@ import ( configv1 "github.com/openshift/api/config/v1" configclient "github.com/openshift/client-go/config/clientset/versioned" + operatorclient "github.com/openshift/client-go/operator/clientset/versioned" "github.com/openshift/origin/test/extended/util/azure" ) @@ -27,7 +28,7 @@ type ClusterConfiguration struct { MultiZone bool ConfigFile string - NetworkPlugin string + NetworkPluginIDs []string } func (c *ClusterConfiguration) ToJSONString() string { @@ -46,17 +47,24 @@ func LoadConfig(clientConfig *rest.Config) (*ClusterConfiguration, error) { if err != nil { return nil, err } - client, err := configclient.NewForConfig(clientConfig) + configClient, err := configclient.NewForConfig(clientConfig) + if err != nil { + return nil, err + } + operatorClient, err := operatorclient.NewForConfig(clientConfig) if err != nil { return nil, err } - var networkPlugin string - if networkConfig, err := client.ConfigV1().Networks().Get("cluster", metav1.GetOptions{}); err == nil { - networkPlugin = networkConfig.Spec.NetworkType + var networkPluginIDs []string + if networkConfig, err := operatorClient.OperatorV1().Networks().Get("cluster", metav1.GetOptions{}); err == nil { + networkPluginIDs = append(networkPluginIDs, string(networkConfig.Spec.DefaultNetwork.Type)) + if networkConfig.Spec.DefaultNetwork.OpenShiftSDNConfig != nil && networkConfig.Spec.DefaultNetwork.OpenShiftSDNConfig.Mode != "" { + networkPluginIDs = append(networkPluginIDs, string(networkConfig.Spec.DefaultNetwork.Type)+"/"+string(networkConfig.Spec.DefaultNetwork.OpenShiftSDNConfig.Mode)) + } } - infra, err := client.ConfigV1().Infrastructures().Get("cluster", metav1.GetOptions{}) + infra, err := configClient.ConfigV1().Infrastructures().Get("cluster", metav1.GetOptions{}) if err != nil { return nil, err } @@ -66,7 +74,7 @@ func LoadConfig(clientConfig *rest.Config) (*ClusterConfiguration, error) { } if p.Type == configv1.NonePlatformType { return &ClusterConfiguration{ - NetworkPlugin: networkPlugin, + NetworkPluginIDs: networkPluginIDs, }, nil } @@ -90,9 +98,9 @@ func LoadConfig(clientConfig *rest.Config) (*ClusterConfiguration, error) { } config := &ClusterConfiguration{ - MultiMaster: len(masters.Items) > 1, - MultiZone: zones.Len() > 1, - NetworkPlugin: networkPlugin, + MultiMaster: len(masters.Items) > 1, + MultiZone: zones.Len() > 1, + NetworkPluginIDs: networkPluginIDs, } if zones.Len() > 0 { config.Zone = zones.List()[0]