Skip to content

Commit

Permalink
Merge pull request #907 from jtopjian/acc-dns-updates
Browse files Browse the repository at this point in the history
Test Acc: Updating DNS Tests
  • Loading branch information
jtopjian committed Apr 8, 2018
2 parents 8873eb1 + 4e791fb commit a4e7a3c
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 83 deletions.
8 changes: 8 additions & 0 deletions acceptance/clients/conditions.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ func RequireAdmin(t *testing.T) {
}
}

// RequireDNS will restrict a test to only be run in environments
// that support DNSaaS.
func RequireDNS(t *testing.T) {
if os.Getenv("OS_DNS_ENVIRONMENT") == "" {
t.Skip("this test requires DNSaaS")
}
}

// RequireGuestAgent will restrict a test to only be run in
// environments that support the QEMU guest agent.
func RequireGuestAgent(t *testing.T) {
Expand Down
15 changes: 13 additions & 2 deletions acceptance/openstack/dns/v2/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/gophercloud/gophercloud/acceptance/tools"
"github.com/gophercloud/gophercloud/openstack/dns/v2/recordsets"
"github.com/gophercloud/gophercloud/openstack/dns/v2/zones"
th "github.com/gophercloud/gophercloud/testhelper"
)

// CreateRecordSet will create a RecordSet with a random name. An error will
Expand Down Expand Up @@ -38,6 +39,8 @@ func CreateRecordSet(t *testing.T, client *gophercloud.ServiceClient, zone *zone

t.Logf("Created record set: %s", newRS.Name)

th.AssertEquals(t, newRS.Name, zone.Name)

return rs, nil
}

Expand Down Expand Up @@ -70,6 +73,10 @@ func CreateZone(t *testing.T, client *gophercloud.ServiceClient) (*zones.Zone, e
}

t.Logf("Created Zone: %s", zoneName)

th.AssertEquals(t, newZone.Name, zoneName)
th.AssertEquals(t, newZone.TTL, 7200)

return newZone, nil
}

Expand Down Expand Up @@ -102,6 +109,10 @@ func CreateSecondaryZone(t *testing.T, client *gophercloud.ServiceClient) (*zone
}

t.Logf("Created Zone: %s", zoneName)

th.AssertEquals(t, newZone.Name, zoneName)
th.AssertEquals(t, newZone.Masters[0], "10.0.0.1")

return newZone, nil
}

Expand Down Expand Up @@ -132,7 +143,7 @@ func DeleteZone(t *testing.T, client *gophercloud.ServiceClient, zone *zones.Zon
// WaitForRecordSetStatus will poll a record set's status until it either matches
// the specified status or the status becomes ERROR.
func WaitForRecordSetStatus(client *gophercloud.ServiceClient, rs *recordsets.RecordSet, status string) error {
return gophercloud.WaitFor(60, func() (bool, error) {
return gophercloud.WaitFor(600, func() (bool, error) {
current, err := recordsets.Get(client, rs.ZoneID, rs.ID).Extract()
if err != nil {
return false, err
Expand All @@ -149,7 +160,7 @@ func WaitForRecordSetStatus(client *gophercloud.ServiceClient, rs *recordsets.Re
// WaitForZoneStatus will poll a zone's status until it either matches
// the specified status or the status becomes ERROR.
func WaitForZoneStatus(client *gophercloud.ServiceClient, zone *zones.Zone, status string) error {
return gophercloud.WaitFor(60, func() (bool, error) {
return gophercloud.WaitFor(600, func() (bool, error) {
current, err := zones.Get(client, zone.ID).Extract()
if err != nil {
return false, err
Expand Down
83 changes: 32 additions & 51 deletions acceptance/openstack/dns/v2/recordsets_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,85 +8,66 @@ import (
"github.com/gophercloud/gophercloud/acceptance/clients"
"github.com/gophercloud/gophercloud/acceptance/tools"
"github.com/gophercloud/gophercloud/openstack/dns/v2/recordsets"
"github.com/gophercloud/gophercloud/pagination"
th "github.com/gophercloud/gophercloud/testhelper"
)

func TestRecordSetsListByZone(t *testing.T) {
clients.RequireDNS(t)

client, err := clients.NewDNSV2Client()
if err != nil {
t.Fatalf("Unable to create a DNS client: %v", err)
}
th.AssertNoErr(t, err)

zone, err := CreateZone(t, client)
if err != nil {
t.Fatal(err)
}
th.AssertNoErr(t, err)
defer DeleteZone(t, client, zone)

var allRecordSets []recordsets.RecordSet
allPages, err := recordsets.ListByZone(client, zone.ID, nil).AllPages()
if err != nil {
t.Fatalf("Unable to retrieve recordsets: %v", err)
}
th.AssertNoErr(t, err)

allRecordSets, err = recordsets.ExtractRecordSets(allPages)
if err != nil {
t.Fatalf("Unable to extract recordsets: %v", err)
}
allRecordSets, err := recordsets.ExtractRecordSets(allPages)
th.AssertNoErr(t, err)

var found bool
for _, recordset := range allRecordSets {
tools.PrintResource(t, &recordset)
}
}

func TestRecordSetsListByZoneLimited(t *testing.T) {
client, err := clients.NewDNSV2Client()
if err != nil {
t.Fatalf("Unable to create a DNS client: %v", err)
if recordset.ZoneID == zone.ID {
found = true
}
}

zone, err := CreateZone(t, client)
if err != nil {
t.Fatal(err)
}
defer DeleteZone(t, client, zone)
th.AssertEquals(t, found, true)

var allRecordSets []recordsets.RecordSet
listOpts := recordsets.ListOpts{
Limit: 1,
}
allPages, err := recordsets.ListByZone(client, zone.ID, listOpts).AllPages()
if err != nil {
t.Fatalf("Unable to retrieve recordsets: %v", err)
}

allRecordSets, err = recordsets.ExtractRecordSets(allPages)
if err != nil {
t.Fatalf("Unable to extract recordsets: %v", err)
}

for _, recordset := range allRecordSets {
tools.PrintResource(t, &recordset)
}
err = recordsets.ListByZone(client, zone.ID, listOpts).EachPage(
func(page pagination.Page) (bool, error) {
rr, err := recordsets.ExtractRecordSets(page)
th.AssertNoErr(t, err)
th.AssertEquals(t, len(rr), 1)
return true, nil
},
)
th.AssertNoErr(t, err)
}

func TestRecordSetCRUD(t *testing.T) {
func TestRecordSetsCRUD(t *testing.T) {
clients.RequireDNS(t)

client, err := clients.NewDNSV2Client()
if err != nil {
t.Fatalf("Unable to create a DNS client: %v", err)
}
th.AssertNoErr(t, err)

zone, err := CreateZone(t, client)
if err != nil {
t.Fatal(err)
}
th.AssertNoErr(t, err)
defer DeleteZone(t, client, zone)

tools.PrintResource(t, &zone)

rs, err := CreateRecordSet(t, client, zone)
if err != nil {
t.Fatal(err)
}
th.AssertNoErr(t, err)
defer DeleteRecordSet(t, client, rs)

tools.PrintResource(t, &rs)
Expand All @@ -97,9 +78,9 @@ func TestRecordSetCRUD(t *testing.T) {
}

newRS, err := recordsets.Update(client, rs.ZoneID, rs.ID, updateOpts).Extract()
if err != nil {
t.Fatal(err)
}
th.AssertNoErr(t, err)

tools.PrintResource(t, &newRS)

th.AssertEquals(t, newRS.Description, "New description")
}
54 changes: 24 additions & 30 deletions acceptance/openstack/dns/v2/zones_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,53 +8,47 @@ import (
"github.com/gophercloud/gophercloud/acceptance/clients"
"github.com/gophercloud/gophercloud/acceptance/tools"
"github.com/gophercloud/gophercloud/openstack/dns/v2/zones"
th "github.com/gophercloud/gophercloud/testhelper"
)

func TestZonesList(t *testing.T) {
func TestZonesCRUD(t *testing.T) {
clients.RequireDNS(t)

client, err := clients.NewDNSV2Client()
if err != nil {
t.Fatalf("Unable to create a DNS client: %v", err)
}
th.AssertNoErr(t, err)

var allZones []zones.Zone
allPages, err := zones.List(client, nil).AllPages()
if err != nil {
t.Fatalf("Unable to retrieve zones: %v", err)
}
zone, err := CreateZone(t, client)
th.AssertNoErr(t, err)
defer DeleteZone(t, client, zone)

allZones, err = zones.ExtractZones(allPages)
if err != nil {
t.Fatalf("Unable to extract zones: %v", err)
}
tools.PrintResource(t, &zone)

for _, zone := range allZones {
tools.PrintResource(t, &zone)
}
}
allPages, err := zones.List(client, nil).AllPages()
th.AssertNoErr(t, err)

func TestZonesCRUD(t *testing.T) {
client, err := clients.NewDNSV2Client()
if err != nil {
t.Fatalf("Unable to create a DNS client: %v", err)
}
allZones, err := zones.ExtractZones(allPages)
th.AssertNoErr(t, err)

zone, err := CreateZone(t, client)
if err != nil {
t.Fatal(err)
var found bool
for _, z := range allZones {
tools.PrintResource(t, &z)

if zone.Name == z.Name {
found = true
}
}
defer DeleteZone(t, client, zone)

tools.PrintResource(t, &zone)
th.AssertEquals(t, found, true)

updateOpts := zones.UpdateOpts{
Description: "New description",
TTL: 0,
}

newZone, err := zones.Update(client, zone.ID, updateOpts).Extract()
if err != nil {
t.Fatal(err)
}
th.AssertNoErr(t, err)

tools.PrintResource(t, &newZone)

th.AssertEquals(t, newZone.Description, "New description")
}

0 comments on commit a4e7a3c

Please sign in to comment.