Skip to content

Commit

Permalink
Merge pull request #249 from Juniper/fix-test-fabric-settings-errors
Browse files Browse the repository at this point in the history
Fix test fabric settings errors
  • Loading branch information
bwJuniper committed Mar 29, 2024
2 parents 22f3db7 + 44a1b35 commit 18fb90b
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 39 deletions.
4 changes: 2 additions & 2 deletions apstra/api_blueprints_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ func TestCreateDeleteBlueprint(t *testing.T) {
fabricSettings = &FabricSettings{}

if !fabricL3MtuForbidden.Check(client.client.apiVersion) {
fabricL3Mtu := uint16(rand.Intn(550)*2 + 8000) // even number 8000 - 9100
fabricL3Mtu := uint16(rand.Intn(50)*2 + 9100) // even number 9100 - 9200
fabricSettings.FabricL3Mtu = &fabricL3Mtu
fabricSettings.SpineLeafLinks = toPtr(AddressingSchemeIp46)
fabricSettings.SpineSuperspineLinks = toPtr(AddressingSchemeIp46)
Expand Down Expand Up @@ -106,7 +106,7 @@ func TestCreateDeleteBlueprint(t *testing.T) {
}

if req.FabricSettings != nil && req.FabricSettings.FabricL3Mtu != nil {
fap, err := bpClient.GetFabricAddressingPolicy(ctx)
fap, err := bpClient.GetFabricSettings(ctx)
if err != nil {
t.Fatal(err)
}
Expand Down
116 changes: 81 additions & 35 deletions apstra/api_design_templates_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"context"
"encoding/json"
"fmt"
"github.com/hashicorp/go-version"
"log"
"math/rand"
"strings"
Expand Down Expand Up @@ -1085,9 +1086,11 @@ func TestRackBasedTemplateMethods(t *testing.T) {
return fmt.Errorf("dhcp service intend mismatch expected %t got %t", req.DhcpServiceIntent.Active, rbt.DhcpServiceIntent.Active)
}

err = compareAntiAffinityPolicy(*req.AntiAffinityPolicy, *rbt.AntiAffinityPolicy)
if err != nil {
return err
if req.AntiAffinityPolicy != nil {
err = compareAntiAffinityPolicy(*req.AntiAffinityPolicy, *rbt.AntiAffinityPolicy)
if err != nil {
return err
}
}

if req.AsnAllocationPolicy.SpineAsnScheme != rbt.AsnAllocationPolicy.SpineAsnScheme {
Expand All @@ -1109,7 +1112,8 @@ func TestRackBasedTemplateMethods(t *testing.T) {
}

type testCase struct {
request CreateRackBasedTemplateRequest
request CreateRackBasedTemplateRequest
versionConstraints version.Constraints
}

spines := []TemplateElementSpineRequest{
Expand Down Expand Up @@ -1145,6 +1149,7 @@ func TestRackBasedTemplateMethods(t *testing.T) {
FabricAddressingPolicy: &TemplateFabricAddressingPolicy410Only{},
VirtualNetworkPolicy: &VirtualNetworkPolicy{},
},
versionConstraints: leApstra420,
},
{
request: CreateRackBasedTemplateRequest{
Expand All @@ -1160,44 +1165,55 @@ func TestRackBasedTemplateMethods(t *testing.T) {
},
VirtualNetworkPolicy: &VirtualNetworkPolicy{},
},
versionConstraints: leApstra420,
},
{
request: CreateRackBasedTemplateRequest{
DisplayName: randString(5, "hex"),
Spine: &spines[0],
RackInfos: rackInfos[0],
DhcpServiceIntent: &DhcpServiceIntent{Active: true},
AsnAllocationPolicy: &AsnAllocationPolicy{SpineAsnScheme: AsnAllocationSchemeSingle},
FabricAddressingPolicy: &TemplateFabricAddressingPolicy410Only{},
VirtualNetworkPolicy: &VirtualNetworkPolicy{},
},
versionConstraints: geApstra421,
},
{
request: CreateRackBasedTemplateRequest{
DisplayName: randString(5, "hex"),
Spine: &spines[1],
RackInfos: rackInfos[1],
DhcpServiceIntent: &DhcpServiceIntent{Active: false},
AsnAllocationPolicy: &AsnAllocationPolicy{SpineAsnScheme: AsnAllocationSchemeSingle},
FabricAddressingPolicy: &TemplateFabricAddressingPolicy410Only{
SpineSuperspineLinks: AddressingSchemeIp46,
SpineLeafLinks: AddressingSchemeIp46,
},
VirtualNetworkPolicy: &VirtualNetworkPolicy{},
},
versionConstraints: geApstra421,
},
}

for clientName, client := range clients {
apiVersionString = client.client.apiVersion.String()
for i, tc := range testCases {
log.Printf("testing CreateRackBasedTemplate(testCase[%d]) against %s %s (%s)", i, client.clientType, clientName, client.client.ApiVersion())
id, err := client.client.CreateRackBasedTemplate(ctx, &tc.request)
if err != nil {
t.Fatal(err)
}

log.Printf("testing GetRackBasedTemplate() against %s %s (%s)", client.clientType, clientName, client.client.ApiVersion())
rbt, err := client.client.GetRackBasedTemplate(ctx, id)
if err != nil {
t.Fatal(err)
}

if id != rbt.Id {
t.Fatalf("test case %d template id mismatch expected %q got %q", i, id, rbt.Id)
}
t.Run(fmt.Sprintf("Test-%d", i), func(t *testing.T) {

err = compareRequestToTemplate(tc.request, *rbt.Data)
if err != nil {
t.Fatalf("test case %d template differed from request: %s", i, err.Error())
}
if !tc.versionConstraints.Check(client.client.apiVersion) {
t.Skipf("skipping testcase %d because of versionConstraint %s, version %s", i, tc.versionConstraints, client.client.apiVersion)
}

for j := i; j < i+len(testCases); j++ { // j counts up from i
k := j % len(testCases) // k counts up from i, but loops back to zero
req := testCases[k].request
log.Printf("testing UpdateRackBasedTemplate(testCase[%d]) against %s %s (%s)", k, client.clientType, clientName, client.client.ApiVersion())
err = client.client.UpdateRackBasedTemplate(ctx, id, &req)
log.Printf("testing CreateRackBasedTemplate(testCase[%d]) against %s %s (%s)", i, client.clientType, clientName, client.client.ApiVersion())
id, err := client.client.CreateRackBasedTemplate(ctx, &tc.request)
if err != nil {
t.Fatal(err)
}

log.Printf("testing GetRackBasedTemplate() against %s %s (%s)", client.clientType, clientName, client.client.ApiVersion())
rbt, err = client.client.GetRackBasedTemplate(ctx, id)
rbt, err := client.client.GetRackBasedTemplate(ctx, id)
if err != nil {
t.Fatal(err)
}
Expand All @@ -1206,17 +1222,47 @@ func TestRackBasedTemplateMethods(t *testing.T) {
t.Fatalf("test case %d template id mismatch expected %q got %q", i, id, rbt.Id)
}

err = compareRequestToTemplate(req, *rbt.Data)
err = compareRequestToTemplate(tc.request, *rbt.Data)
if err != nil {
t.Fatalf("test case %d template differed from request: %s", i, err.Error())
}
}

log.Printf("testing DeleteTemplate() against %s %s (%s)", client.clientType, clientName, client.client.ApiVersion())
err = client.client.DeleteTemplate(ctx, id)
if err != nil {
t.Fatal(err)
}
for j := i; j < i+len(testCases); j++ { // j counts up from i
k := j % len(testCases) // k counts up from i, but loops back to zero

if !testCases[k].versionConstraints.Check(client.client.apiVersion) {
continue
}

req := testCases[k].request
log.Printf("testing UpdateRackBasedTemplate(testCase[%d]) against %s %s (%s)", k, client.clientType, clientName, client.client.ApiVersion())
err = client.client.UpdateRackBasedTemplate(ctx, id, &req)
if err != nil {
t.Fatal(err)
}

log.Printf("testing GetRackBasedTemplate() against %s %s (%s)", client.clientType, clientName, client.client.ApiVersion())
rbt, err = client.client.GetRackBasedTemplate(ctx, id)
if err != nil {
t.Fatal(err)
}

if id != rbt.Id {
t.Fatalf("test case %d template id mismatch expected %q got %q", i, id, rbt.Id)
}

err = compareRequestToTemplate(req, *rbt.Data)
if err != nil {
t.Fatalf("test case %d template differed from request: %s", i, err.Error())
}
}

log.Printf("testing DeleteTemplate() against %s %s (%s)", client.clientType, clientName, client.client.ApiVersion())
err = client.client.DeleteTemplate(ctx, id)
if err != nil {
t.Fatal(err)
}
})
}
}
}
3 changes: 2 additions & 1 deletion apstra/compatibility.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const (
apstra420 = "4.2.0"
apstra421 = "4.2.1"

apstraSupportedApiVersions = "4.1.0, 4.1.1, 4.1.2, 4.2.0"
apstraSupportedApiVersions = "4.1.0, 4.1.1, 4.1.2, 4.2.0, 4.2.1"
apstraSupportedVersionSep = ","

podBasedTemplateFabricAddressingPolicyForbiddenVersions = "4.1.1, 4.1.2, 4.2.0, 4.2.1"
Expand Down Expand Up @@ -52,6 +52,7 @@ func SupportedApiVersions() []string {
apstra411,
apstra412,
apstra420,
apstra421,
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ func TestCtLayout(t *testing.T) {
bpClient := testBlueprintA(ctx, t, client.client)

ipv6Enabled := true
err = bpClient.SetFabricAddressingPolicy(ctx, &TwoStageL3ClosFabricAddressingPolicy{Ipv6Enabled: &ipv6Enabled})
err = bpClient.SetFabricSettings(ctx, &FabricSettings{Ipv6Enabled: &ipv6Enabled})
if err != nil {
t.Fatal(err)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ func TestGetSetGetFAP(t *testing.T) {
}

for clientName, client := range clients {
if geApstra421.Check(client.client.apiVersion) {
continue
}

bpClient := testBlueprintA(ctx, t, client.client)

log.Printf("testing GetFabricAddressingPolicy() against %s %s (%s)", client.clientType, clientName, client.client.ApiVersion())
Expand Down

0 comments on commit 18fb90b

Please sign in to comment.