Skip to content

Commit

Permalink
Merge pull request #3005 from stephenfin/more-skips
Browse files Browse the repository at this point in the history
tests: Add skips for feature- or configuration-dependent tests
  • Loading branch information
EmilienM committed May 8, 2024
2 parents ef98774 + 79b1324 commit 59af460
Show file tree
Hide file tree
Showing 20 changed files with 105 additions and 97 deletions.
2 changes: 1 addition & 1 deletion internal/acceptance/clients/clients.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ func NewBlockStorageV2NoAuthClient() (*gophercloud.ServiceClient, error) {
}

// NewBlockStorageV3NoAuthClient returns a noauth *ServiceClient for
// making calls to the OpenStack Block Storage v2 API. An error will be
// making calls to the OpenStack Block Storage v3 API. An error will be
// returned if client creation was not possible.
func NewBlockStorageV3NoAuthClient() (*gophercloud.ServiceClient, error) {
client, err := blockstorageNoAuth.NewClient(gophercloud.AuthOptions{
Expand Down
20 changes: 18 additions & 2 deletions internal/acceptance/clients/conditions.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,24 @@ func RequireNovaNetwork(t *testing.T) {
}
}

// RequireIronicHTTPBasic will restric a test to be only run in
// environments that have Ironic using http_basic.
// RequireCinderNoAuth will restrict a test to be only run in environments that
// have Cinder using noauth.
func RequireCinderNoAuth(t *testing.T) {
if os.Getenv("CINDER_ENDPOINT") == "" || os.Getenv("OS_USERNAME") == "" {
t.Skip("this test requires Cinder using noauth, set OS_USERNAME and CINDER_ENDPOINT")
}
}

// RequireIronicNoAuth will restrict a test to be only run in environments that
// have Ironic using noauth.
func RequireIronicNoAuth(t *testing.T) {
if os.Getenv("IRONIC_ENDPOINT") == "" || os.Getenv("OS_USERNAME") == "" {
t.Skip("this test requires IRONIC using noauth, set OS_USERNAME and IRONIC_ENDPOINT")
}
}

// RequireIronicHTTPBasic will restrict a test to be only run in environments
// that have Ironic using http_basic.
func RequireIronicHTTPBasic(t *testing.T) {
if os.Getenv("IRONIC_ENDPOINT") == "" || os.Getenv("OS_USERNAME") == "" || os.Getenv("OS_PASSWORD") == "" {
t.Skip("this test requires Ironic using http_basic, set OS_USERNAME, OS_PASSWORD and IRONIC_ENDPOINT")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (

func TestAllocationsCreateDestroy(t *testing.T) {
clients.RequireLong(t)
clients.RequireIronicNoAuth(t)

client, err := clients.NewBareMetalV1NoAuthClient()
th.AssertNoErr(t, err)
Expand Down
3 changes: 3 additions & 0 deletions internal/acceptance/openstack/baremetal/noauth/nodes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (

func TestNodesCreateDestroy(t *testing.T) {
clients.RequireLong(t)
clients.RequireIronicNoAuth(t)

client, err := clients.NewBareMetalV1NoAuthClient()
th.AssertNoErr(t, err)
Expand Down Expand Up @@ -48,6 +49,7 @@ func TestNodesCreateDestroy(t *testing.T) {

func TestNodesUpdate(t *testing.T) {
clients.RequireLong(t)
clients.RequireIronicNoAuth(t)

client, err := clients.NewBareMetalV1NoAuthClient()
th.AssertNoErr(t, err)
Expand All @@ -72,6 +74,7 @@ func TestNodesUpdate(t *testing.T) {
func TestNodesRAIDConfig(t *testing.T) {
clients.SkipReleasesBelow(t, "stable/ussuri")
clients.RequireLong(t)
clients.RequireIronicNoAuth(t)

client, err := clients.NewBareMetalV1NoAuthClient()
th.AssertNoErr(t, err)
Expand Down
2 changes: 2 additions & 0 deletions internal/acceptance/openstack/baremetal/noauth/ports_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (

func TestPortsCreateDestroy(t *testing.T) {
clients.RequireLong(t)
clients.RequireIronicNoAuth(t)

client, err := clients.NewBareMetalV1NoAuthClient()
th.AssertNoErr(t, err)
Expand Down Expand Up @@ -50,6 +51,7 @@ func TestPortsCreateDestroy(t *testing.T) {

func TestPortsUpdate(t *testing.T) {
clients.RequireLong(t)
clients.RequireIronicNoAuth(t)

client, err := clients.NewBareMetalV1NoAuthClient()
th.AssertNoErr(t, err)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import (
)

func TestSnapshotsList(t *testing.T) {
clients.RequireCinderNoAuth(t)

client, err := clients.NewBlockStorageV3NoAuthClient()
if err != nil {
t.Fatalf("Unable to create a blockstorage client: %v", err)
Expand All @@ -33,6 +35,8 @@ func TestSnapshotsList(t *testing.T) {
}

func TestSnapshotsCreateDelete(t *testing.T) {
clients.RequireCinderNoAuth(t)

client, err := clients.NewBlockStorageV3NoAuthClient()
if err != nil {
t.Fatalf("Unable to create a blockstorage client: %v", err)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import (
)

func TestVolumesList(t *testing.T) {
clients.RequireCinderNoAuth(t)

client, err := clients.NewBlockStorageV3NoAuthClient()
if err != nil {
t.Fatalf("Unable to create a blockstorage client: %v", err)
Expand All @@ -33,6 +35,8 @@ func TestVolumesList(t *testing.T) {
}

func TestVolumesCreateDestroy(t *testing.T) {
clients.RequireCinderNoAuth(t)

client, err := clients.NewBlockStorageV3NoAuthClient()
if err != nil {
t.Fatalf("Unable to create blockstorage client: %v", err)
Expand Down
18 changes: 18 additions & 0 deletions internal/acceptance/openstack/networking/v2/conditions.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package v2

import (
"context"
"testing"

"github.com/gophercloud/gophercloud/v2"
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
)

// RequireNeutronExtension will restrict a test to be only run in environments
// with the requested Neutron extension present.
func RequireNeutronExtension(t *testing.T, client *gophercloud.ServiceClient, extension string) {
_, err := extensions.Get(context.TODO(), client, extension).Extract()
if err != nil {
t.Skipf("this test requires %s Neutron extension", extension)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
"github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2/extensions/layer3"
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/dns"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/layer3/floatingips"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/networks"
Expand All @@ -26,11 +25,8 @@ func TestDNSPortCRUDL(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract()
if err != nil {
t.Skip("This test requires dns-integration Neutron extension")
}
tools.PrintResource(t, extension)
// Skip these tests if we don't have the required extension
networking.RequireNeutronExtension(t, client, "dns-integration")

// Create Network
networkDNSDomain := "local."
Expand Down Expand Up @@ -153,11 +149,8 @@ func TestDNSFloatingIPCRDL(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract()
if err != nil {
t.Skip("This test requires dns-integration Neutron extension")
}
tools.PrintResource(t, extension)
// Skip these tests if we don't have the required extension
networking.RequireNeutronExtension(t, client, "dns-integration")

choices, err := clients.AcceptanceTestChoicesFromEnv()
th.AssertNoErr(t, err)
Expand Down Expand Up @@ -215,11 +208,8 @@ func TestDNSNetwork(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract()
if err != nil {
t.Skip("This test requires dns-integration Neutron extension")
}
tools.PrintResource(t, extension)
// Skip these tests if we don't have the required extension
networking.RequireNeutronExtension(t, client, "dns-integration")

// Create Network
networkDNSDomain := "local."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"testing"

"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/fwaas_v2/groups"
th "github.com/gophercloud/gophercloud/v2/testhelper"
Expand All @@ -20,6 +21,9 @@ func TestGroupCRUD(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

// Skip these tests if we don't have the required extension
networking.RequireNeutronExtension(t, client, "fwaas_v2")

createdGroup, err := CreateGroup(t, client)
th.AssertNoErr(t, err)
defer DeleteGroup(t, client, createdGroup.ID)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"testing"

"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/fwaas_v2/policies"
th "github.com/gophercloud/gophercloud/v2/testhelper"
Expand All @@ -20,6 +21,9 @@ func TestPolicyCRUD(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

// Skip these tests if we don't have the required extension
networking.RequireNeutronExtension(t, client, "fwaas_v2")

// Create First Rule. This will be used as part of the Policy creation
rule, err := CreateRule(t, client)
th.AssertNoErr(t, err)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"testing"

"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/fwaas_v2/rules"
th "github.com/gophercloud/gophercloud/v2/testhelper"
Expand All @@ -22,6 +23,9 @@ func TestRuleCRUD(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

// Skip these tests if we don't have the required extension
networking.RequireNeutronExtension(t, client, "fwaas_v2")

rule, err := CreateRule(t, client)
th.AssertNoErr(t, err)
defer DeleteRule(t, client, rule.ID)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ import (
"testing"

"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/agents"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/layer3/routers"
th "github.com/gophercloud/gophercloud/v2/testhelper"
Expand All @@ -19,18 +18,16 @@ func TestLayer3RouterScheduling(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

_, err = extensions.Get(context.TODO(), client, "l3_agent_scheduler").Extract()
if err != nil {
t.Skip("Extension l3_agent_scheduler not present")
}
// Skip these tests if we don't have the required extension
v2.RequireNeutronExtension(t, client, "l3_agent_scheduler")

network, err := networking.CreateNetwork(t, client)
network, err := v2.CreateNetwork(t, client)
th.AssertNoErr(t, err)
defer networking.DeleteNetwork(t, client, network.ID)
defer v2.DeleteNetwork(t, client, network.ID)

subnet, err := networking.CreateSubnet(t, client, network.ID)
subnet, err := v2.CreateSubnet(t, client, network.ID)
th.AssertNoErr(t, err)
defer networking.DeleteSubnet(t, client, subnet.ID)
defer v2.DeleteSubnet(t, client, subnet.ID)

router, err := CreateRouter(t, client, network.ID)
th.AssertNoErr(t, err)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,8 @@ func TestMTUNetworkCRUDL(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

extension, err := extensions.Get(context.TODO(), client, "net-mtu").Extract()
if err != nil {
t.Skip("This test requires net-mtu Neutron extension")
}
tools.PrintResource(t, extension)
// Skip these tests if we don't have the required extension
networking.RequireNeutronExtension(t, client, "net-mtu")

mtuWritable, _ := extensions.Get(context.TODO(), client, "net-mtu-writable").Extract()
tools.PrintResource(t, mtuWritable)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"testing"

"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/policies"
th "github.com/gophercloud/gophercloud/v2/testhelper"
)
Expand All @@ -17,11 +17,8 @@ func TestPoliciesCRUD(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

extension, err := extensions.Get(context.TODO(), client, "qos").Extract()
if err != nil {
t.Skip("This test requires qos Neutron extension")
}
tools.PrintResource(t, extension)
// Skip these tests if we don't have the required extension
v2.RequireNeutronExtension(t, client, "qos")

// Create a QoS policy.
policy, err := CreateQoSPolicy(t, client)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import (
"testing"

"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
accpolicies "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2/extensions/qos/policies"
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/policies"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/rules"
th "github.com/gophercloud/gophercloud/v2/testhelper"
Expand All @@ -19,11 +19,8 @@ func TestBandwidthLimitRulesCRUD(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

extension, err := extensions.Get(context.TODO(), client, "qos").Extract()
if err != nil {
t.Skip("This test requires qos Neutron extension")
}
tools.PrintResource(t, extension)
// Skip these tests if we don't have the required extension
v2.RequireNeutronExtension(t, client, "qos")

// Create a QoS policy
policy, err := accpolicies.CreateQoSPolicy(t, client)
Expand Down Expand Up @@ -68,11 +65,8 @@ func TestDSCPMarkingRulesCRUD(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

extension, err := extensions.Get(context.TODO(), client, "qos").Extract()
if err != nil {
t.Skip("This test requires qos Neutron extension")
}
tools.PrintResource(t, extension)
// Skip these tests if we don't have the required extension
v2.RequireNeutronExtension(t, client, "qos")

// Create a QoS policy
policy, err := accpolicies.CreateQoSPolicy(t, client)
Expand Down Expand Up @@ -117,11 +111,8 @@ func TestMinimumBandwidthRulesCRUD(t *testing.T) {
client, err := clients.NewNetworkV2Client()
th.AssertNoErr(t, err)

extension, err := extensions.Get(context.TODO(), client, "qos").Extract()
if err != nil {
t.Skip("This test requires qos Neutron extension")
}
tools.PrintResource(t, extension)
// Skip these tests if we don't have the required extension
v2.RequireNeutronExtension(t, client, "qos")

// Create a QoS policy
policy, err := accpolicies.CreateQoSPolicy(t, client)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"testing"

"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/ruletypes"
)

Expand All @@ -19,11 +19,8 @@ func TestRuleTypes(t *testing.T) {
return
}

extension, err := extensions.Get(context.TODO(), client, "qos").Extract()
if err != nil {
t.Skip("This test requires qos Neutron extension")
}
tools.PrintResource(t, extension)
// Skip these tests if we don't have the required extension
networking.RequireNeutronExtension(t, client, "qos")

page, err := ruletypes.ListRuleTypes(client).AllPages(context.TODO())
if err != nil {
Expand Down

0 comments on commit 59af460

Please sign in to comment.