Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
185 changes: 104 additions & 81 deletions cmd/openshift-tests/provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,118 +143,140 @@ var ovnKubernetesConfig = &operatorv1.NetworkSpec{
}

var e2eTests = map[string]string{
"everyone": "[Skipped:Wednesday]",
"not-gce": "[Skipped:gce]",
"not-aws": "[Skipped:aws]",
"not-sdn": "[Skipped:Network/OpenShiftSDN]",
"not-multitenant": "[Skipped:Network/OpenShiftSDN/Multitenant]",
"online": "[Skipped:Disconnected]",
"ipv4": "[Feature:Networking-IPv4]",
"ipv6": "[Feature:Networking-IPv6]",
"dual-stack": "[Feature:IPv6DualStackAlpha]",
"sctp": "[Feature:SCTPConnectivity]",
"everyone": "[Skipped:Wednesday]",
"not-gce": "[Skipped:gce]",
"not-aws": "[Skipped:aws]",
"not-sdn": "[Skipped:Network/OpenShiftSDN]",
"not-multitenant": "[Skipped:Network/OpenShiftSDN/Multitenant]",
"online": "[Skipped:Disconnected]",
"ipv4": "[Feature:Networking-IPv4]",
"ipv6": "[Feature:Networking-IPv6]",
"dual-stack": "[Feature:IPv6DualStackAlpha]",
"sctp": "[Feature:SCTPConnectivity]",
"requires-optional-cap": "[Skipped:NoOptionalCapabilities]",
}

func TestDecodeProvider(t *testing.T) {
var testCases = []struct {
name string
provider string

discoveredPlatform *configv1.PlatformStatus
discoveredMasters *corev1.NodeList
discoveredNetwork *operatorv1.NetworkSpec
discoveredPlatform *configv1.PlatformStatus
discoveredMasters *corev1.NodeList
discoveredNetwork *operatorv1.NetworkSpec
optionalCapabilities []configv1.ClusterVersionCapability

expectedConfig string
runTests sets.String
}{
{
name: "simple GCE",
provider: "",
discoveredPlatform: gcePlatform,
discoveredMasters: gceMasters,
discoveredNetwork: sdnConfig,
expectedConfig: `{"type":"gce","ProjectID":"openshift-gce-devel-ci","Region":"us-east1","Zone":"us-east1-a","NumNodes":3,"MultiMaster":true,"MultiZone":true,"Zones":["us-east1-a","us-east1-b","us-east1-c"],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false}`,
runTests: sets.NewString("everyone", "not-aws", "not-multitenant", "online", "ipv4"),
name: "simple GCE",
provider: "",
discoveredPlatform: gcePlatform,
discoveredMasters: gceMasters,
discoveredNetwork: sdnConfig,
optionalCapabilities: configv1.KnownClusterVersionCapabilities,
expectedConfig: `{"type":"gce","ProjectID":"openshift-gce-devel-ci","Region":"us-east1","Zone":"us-east1-a","NumNodes":3,"MultiMaster":true,"MultiZone":true,"Zones":["us-east1-a","us-east1-b","us-east1-c"],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":false}`,
runTests: sets.NewString("everyone", "not-aws", "not-multitenant", "online", "ipv4", "requires-optional-cap"),
},
{
name: "GCE multitenant",
provider: "",
discoveredPlatform: gcePlatform,
discoveredMasters: gceMasters,
discoveredNetwork: multitenantConfig,
expectedConfig: `{"type":"gce","ProjectID":"openshift-gce-devel-ci","Region":"us-east1","Zone":"us-east1-a","NumNodes":3,"MultiMaster":true,"MultiZone":true,"Zones":["us-east1-a","us-east1-b","us-east1-c"],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","NetworkPluginMode":"Multitenant","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false}`,
runTests: sets.NewString("everyone", "not-aws", "online", "ipv4"),
name: "GCE multitenant",
provider: "",
discoveredPlatform: gcePlatform,
discoveredMasters: gceMasters,
discoveredNetwork: multitenantConfig,
optionalCapabilities: configv1.KnownClusterVersionCapabilities,
expectedConfig: `{"type":"gce","ProjectID":"openshift-gce-devel-ci","Region":"us-east1","Zone":"us-east1-a","NumNodes":3,"MultiMaster":true,"MultiZone":true,"Zones":["us-east1-a","us-east1-b","us-east1-c"],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","NetworkPluginMode":"Multitenant","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":false}`,
runTests: sets.NewString("everyone", "not-aws", "online", "ipv4", "requires-optional-cap"),
},
{
name: "simple non-cloud",
provider: "",
discoveredPlatform: noPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: sdnConfig,
expectedConfig: `{"type":"skeleton","ProjectID":"","Region":"","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-aws", "not-multitenant", "online", "ipv4"),
name: "simple non-cloud",
provider: "",
discoveredPlatform: noPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: sdnConfig,
optionalCapabilities: configv1.KnownClusterVersionCapabilities,
expectedConfig: `{"type":"skeleton","ProjectID":"","Region":"","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-aws", "not-multitenant", "online", "ipv4", "requires-optional-cap"),
},
{
name: "simple override",
provider: "vsphere",
discoveredPlatform: vspherePlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: sdnConfig,
name: "simple override",
provider: "vsphere",
discoveredPlatform: vspherePlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: sdnConfig,
optionalCapabilities: configv1.KnownClusterVersionCapabilities,
// NB: It does not actually use the passed-in Provider value
expectedConfig: `{"type":"skeleton","ProjectID":"","Region":"","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-aws", "not-multitenant", "online", "ipv4"),
expectedConfig: `{"type":"skeleton","ProjectID":"","Region":"","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-aws", "not-multitenant", "online", "ipv4", "requires-optional-cap"),
},
{
name: "simple AlibabaCloud",
provider: "alibabacloud",
discoveredPlatform: alibabaPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: sdnConfig,
expectedConfig: `{"type":"skeleton","ProjectID":"","Region":"","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-aws", "not-multitenant", "online", "ipv4"),
name: "simple AlibabaCloud",
provider: "alibabacloud",
discoveredPlatform: alibabaPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: sdnConfig,
optionalCapabilities: configv1.KnownClusterVersionCapabilities,
expectedConfig: `{"type":"skeleton","ProjectID":"","Region":"","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-aws", "not-multitenant", "online", "ipv4", "requires-optional-cap"),
},
{
name: "json simple override",
provider: `{"type": "openstack"}`,
discoveredPlatform: noPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: sdnConfig,
expectedConfig: `{"type":"openstack","ProjectID":"","Region":"","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-aws", "not-multitenant", "online", "ipv4"),
name: "json simple override",
provider: `{"type": "openstack"}`,
discoveredPlatform: noPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: sdnConfig,
optionalCapabilities: configv1.KnownClusterVersionCapabilities,
expectedConfig: `{"type":"openstack","ProjectID":"","Region":"","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-aws", "not-multitenant", "online", "ipv4", "requires-optional-cap"),
},
{
name: "complex override dual-stack",
provider: `{"type":"aws","region":"us-east-2","zone":"us-east-2a","multimaster":false,"multizone":true}`,
discoveredPlatform: awsPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: ovnKubernetesConfig,
expectedConfig: `{"type":"aws","ProjectID":"","Region":"us-east-2","Zone":"us-east-2a","NumNodes":3,"MultiMaster":false,"MultiZone":true,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OVNKubernetes","HasIPv4":true,"HasIPv6":true,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-sdn", "not-multitenant", "online", "ipv4", "ipv6", "dual-stack"),
name: "complex override dual-stack",
provider: `{"type":"aws","region":"us-east-2","zone":"us-east-2a","multimaster":false,"multizone":true}`,
discoveredPlatform: awsPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: ovnKubernetesConfig,
optionalCapabilities: configv1.KnownClusterVersionCapabilities,
expectedConfig: `{"type":"aws","ProjectID":"","Region":"us-east-2","Zone":"us-east-2a","NumNodes":3,"MultiMaster":false,"MultiZone":true,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OVNKubernetes","HasIPv4":true,"HasIPv6":true,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-sdn", "not-multitenant", "online", "ipv4", "ipv6", "dual-stack", "requires-optional-cap"),
},
{
name: "complex override without discovery",
provider: `{"type":"aws","region":"us-east-2","zone":"us-east-2a","multimaster":false,"multizone":true}`,
discoveredPlatform: nil,
expectedConfig: `{"type":"aws","ProjectID":"","Region":"us-east-2","Zone":"us-east-2a","NumNodes":0,"MultiMaster":false,"MultiZone":true,"Zones":null,"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"","HasIPv4":false,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-sdn", "not-multitenant", "online"),
name: "complex override without discovery",
provider: `{"type":"aws","region":"us-east-2","zone":"us-east-2a","multimaster":false,"multizone":true}`,
discoveredPlatform: nil,
optionalCapabilities: configv1.KnownClusterVersionCapabilities,
expectedConfig: `{"type":"aws","ProjectID":"","Region":"us-east-2","Zone":"us-east-2a","NumNodes":0,"MultiMaster":false,"MultiZone":true,"Zones":null,"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"","HasIPv4":false,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-sdn", "not-multitenant", "online", "requires-optional-cap"),
},
{
name: "disconnected",
provider: `{"type":"none","disconnected":true}`,
discoveredPlatform: noPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: ovnKubernetesConfig,
expectedConfig: `{"type":"none","ProjectID":"","Region":"","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":true,"SingleReplicaTopology":false,"NetworkPlugin":"OVNKubernetes","HasIPv4":true,"HasIPv6":true,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-aws", "not-sdn", "not-multitenant", "ipv4", "ipv6", "dual-stack"),
name: "disconnected",
provider: `{"type":"none","disconnected":true}`,
discoveredPlatform: noPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: ovnKubernetesConfig,
optionalCapabilities: configv1.KnownClusterVersionCapabilities,
expectedConfig: `{"type":"none","ProjectID":"","Region":"","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":true,"SingleReplicaTopology":false,"NetworkPlugin":"OVNKubernetes","HasIPv4":true,"HasIPv6":true,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-aws", "not-sdn", "not-multitenant", "ipv4", "ipv6", "dual-stack", "requires-optional-cap"),
},
{
name: "override network plugin",
provider: `{"type":"aws","networkPlugin":"Calico","hasIPv4":false,"hasIPv6":true,"hasSCTP":true}`,
discoveredPlatform: awsPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: ovnKubernetesConfig,
expectedConfig: `{"type":"aws","ProjectID":"","Region":"us-east-2","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"Calico","HasIPv4":false,"HasIPv6":true,"HasSCTP":true,"IsProxied":false,"IsIBMROKS":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-sdn", "not-multitenant", "online", "ipv6", "sctp"),
name: "override network plugin",
provider: `{"type":"aws","networkPlugin":"Calico","hasIPv4":false,"hasIPv6":true,"hasSCTP":true}`,
discoveredPlatform: awsPlatform,
discoveredMasters: simpleMasters,
discoveredNetwork: ovnKubernetesConfig,
optionalCapabilities: configv1.KnownClusterVersionCapabilities,
expectedConfig: `{"type":"aws","ProjectID":"","Region":"us-east-2","Zone":"","NumNodes":3,"MultiMaster":true,"MultiZone":false,"Zones":[],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"Calico","HasIPv4":false,"HasIPv6":true,"HasSCTP":true,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":false}`,
runTests: sets.NewString("everyone", "not-gce", "not-sdn", "not-multitenant", "online", "ipv6", "sctp", "requires-optional-cap"),
},
{
name: "no optional capabilities",
provider: "",
discoveredPlatform: gcePlatform,
discoveredMasters: gceMasters,
discoveredNetwork: sdnConfig,
optionalCapabilities: []configv1.ClusterVersionCapability{},
expectedConfig: `{"type":"gce","ProjectID":"openshift-gce-devel-ci","Region":"us-east1","Zone":"us-east1-a","NumNodes":3,"MultiMaster":true,"MultiZone":true,"Zones":["us-east1-a","us-east1-b","us-east1-c"],"ConfigFile":"","Disconnected":false,"SingleReplicaTopology":false,"NetworkPlugin":"OpenShiftSDN","HasIPv4":true,"HasIPv6":false,"HasSCTP":false,"IsProxied":false,"IsIBMROKS":false,"HasNoOptionalCapabilities":true}`,
runTests: sets.NewString("everyone", "not-aws", "not-multitenant", "online", "ipv4"),
},
}

Expand All @@ -276,6 +298,7 @@ func TestDecodeProvider(t *testing.T) {
NetworkSpec: tc.discoveredNetwork,
ControlPlaneTopology: &topology,
APIURL: testURL,
OptionalCapabilities: tc.optionalCapabilities,
}
}
config, err := decodeProvider(tc.provider, false, discover, testState)
Expand Down
Loading