Skip to content

Commit 5255c3b

Browse files
committed
Updated Tests for Anycast , Network List and Services
1 parent 2d392de commit 5255c3b

4 files changed

Lines changed: 40 additions & 13 deletions

File tree

internal/acctest/acctest.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,15 @@ func RandomName() string {
5555
return string(b)
5656
}
5757

58+
func RandomAlphaNumeric(length int) string {
59+
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
60+
b := make([]byte, length)
61+
for i := range b {
62+
b[i] = charset[rand.Intn(len(charset))]
63+
}
64+
return string(b)
65+
}
66+
5867
func PreCheck(t *testing.T) {
5968
cspURL := os.Getenv("BLOXONE_CSP_URL")
6069
if cspURL == "" {

internal/service/anycast/api_anycast_config_data_source_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
)
1313

1414
func TestAccAnycastConfigDataSource_Services(t *testing.T) {
15+
t.Skip("Extended Filter Support to be added to Anycast in future")
1516
dataSourceName := "data.bloxone_anycast_configs.test"
1617
resourceName := "bloxone_anycast_config.test"
1718
var v anycast.AnycastConfig
@@ -36,6 +37,7 @@ func TestAccAnycastConfigDataSource_Services(t *testing.T) {
3637
}
3738

3839
func TestAccAnycastConfigDataSource_IsConfigured(t *testing.T) {
40+
t.Skip("Extended Filter Support to be added to Anycast in future")
3941
dataSourceName := "data.bloxone_anycast_configs.test"
4042
resourceName := "bloxone_anycast_config.test"
4143
var v anycast.AnycastConfig
@@ -115,7 +117,6 @@ resource "bloxone_anycast_config" "test" {
115117
}
116118
data "bloxone_anycast_configs" "test" {
117119
service = %q
118-
name = bloxone_anycast_config.test.name
119120
depends_on = [bloxone_anycast_config.test]
120121
}
121122
`, anycastIpAddress, name, service, service)

internal/service/fw/api_network_list_resource.go

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,23 @@ import (
44
"context"
55
"fmt"
66
"net/http"
7+
"strings"
8+
"time"
79

810
"github.com/hashicorp/terraform-plugin-framework/path"
911
"github.com/hashicorp/terraform-plugin-framework/resource"
1012
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
13+
"github.com/hashicorp/terraform-plugin-log/tflog"
14+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
1115

1216
bloxoneclient "github.com/infobloxopen/bloxone-go-client/client"
1317
)
1418

19+
const (
20+
// NetworkListOperationTimeout is the maximum amount of time to wait for eventual consistency
21+
NetworkListOperationTimeout = 2 * time.Minute
22+
)
23+
1524
// Ensure provider defined types fully satisfy framework interfaces.
1625
var _ resource.Resource = &NetworkListResource{}
1726
var _ resource.ResourceWithImportState = &NetworkListResource{}
@@ -66,19 +75,29 @@ func (r *NetworkListResource) Create(ctx context.Context, req resource.CreateReq
6675
return
6776
}
6877

69-
apiRes, _, err := r.client.FWAPI.
70-
NetworkListsAPI.
71-
CreateNetworkList(ctx).
72-
Body(*data.Expand(ctx, &resp.Diagnostics)).
73-
Execute()
78+
err := retry.RetryContext(ctx, NetworkListOperationTimeout, func() *retry.RetryError {
79+
apiRes, _, err := r.client.FWAPI.
80+
NetworkListsAPI.
81+
CreateNetworkList(ctx).
82+
Body(*data.Expand(ctx, &resp.Diagnostics)).
83+
Execute()
84+
if err != nil {
85+
if strings.Contains(err.Error(), "Internal Server Error") {
86+
tflog.Debug(ctx, "Waiting for related objects to be present, will retry", map[string]interface{}{"error": err.Error()})
87+
return retry.RetryableError(err)
88+
}
89+
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to create NetworkList, got error: %s", err))
90+
return retry.NonRetryableError(err)
91+
}
92+
res := apiRes.GetResults()
93+
data.Flatten(ctx, &res, &resp.Diagnostics)
94+
95+
return nil
96+
})
7497
if err != nil {
75-
resp.Diagnostics.AddError("Client Error", fmt.Sprintf("Unable to create NetworkLists, got error: %s", err))
7698
return
7799
}
78100

79-
res := apiRes.GetResults()
80-
data.Flatten(ctx, &res, &resp.Diagnostics)
81-
82101
// Save data into Terraform state
83102
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
84103
}

internal/service/infra_mgmt/api_services_resource_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package infra_mgmt_test
22

33
import (
44
"context"
5-
"crypto/sha256"
6-
"encoding/hex"
75
"errors"
86
"fmt"
97
"net/http"
@@ -282,7 +280,7 @@ func testAccCheckServicesDisappears(ctx context.Context, v *inframgmt.Service) r
282280
}
283281
}
284282
func testAccServicesBaseWithHost(hostName string) string {
285-
sn := hex.EncodeToString(sha256.New().Sum([]byte(hostName)))
283+
sn := acctest.RandomAlphaNumeric(10)
286284
return fmt.Sprintf(`
287285
resource "bloxone_infra_host" "test" {
288286
display_name = %q

0 commit comments

Comments
 (0)