Skip to content

Commit

Permalink
add test for multiple vpcs
Browse files Browse the repository at this point in the history
  • Loading branch information
rahulait committed Nov 13, 2024
1 parent c2e541b commit 4527c56
Showing 1 changed file with 69 additions and 6 deletions.
75 changes: 69 additions & 6 deletions cloud/linode/route_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ import (
)

func TestListRoutes(t *testing.T) {
Options.VPCNames = "test"
Options.VPCNames = "test,abc"
vpcIDs["test"] = 1
vpcIDs["abc"] = 2
Options.EnableRouteController = true

nodeID := 123
Expand All @@ -36,7 +37,7 @@ func TestListRoutes(t *testing.T) {
assert.NoError(t, err)

client.EXPECT().ListInstances(gomock.Any(), gomock.Any()).Times(1).Return([]linodego.Instance{}, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(1).Return([]linodego.VPCIP{}, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(2).Return([]linodego.VPCIP{}, nil)
routes, err := routeController.ListRoutes(ctx, "test")
assert.NoError(t, err)
assert.Empty(t, routes)
Expand All @@ -59,7 +60,7 @@ func TestListRoutes(t *testing.T) {
assert.NoError(t, err)

client.EXPECT().ListInstances(gomock.Any(), nil).Times(1).Return([]linodego.Instance{validInstance}, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(1).Return([]linodego.VPCIP{}, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(2).Return([]linodego.VPCIP{}, nil)
routes, err := routeController.ListRoutes(ctx, "test")
assert.NoError(t, err)
assert.Empty(t, routes)
Expand All @@ -85,7 +86,7 @@ func TestListRoutes(t *testing.T) {
assert.NoError(t, err)

client.EXPECT().ListInstances(gomock.Any(), nil).Times(1).Return([]linodego.Instance{validInstance}, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(2).Return(noRoutesInVPC, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(4).Return(noRoutesInVPC, nil)
routes, err := routeController.ListRoutes(ctx, "test")
assert.NoError(t, err)
assert.Empty(t, routes)
Expand Down Expand Up @@ -126,7 +127,7 @@ func TestListRoutes(t *testing.T) {
assert.NoError(t, err)

client.EXPECT().ListInstances(gomock.Any(), nil).Times(1).Return([]linodego.Instance{validInstance}, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(2).Return(routesInVPC, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(4).Return(routesInVPC, nil)
routes, err := routeController.ListRoutes(ctx, "test")
assert.NoError(t, err)
assert.NotEmpty(t, routes)
Expand Down Expand Up @@ -167,11 +168,73 @@ func TestListRoutes(t *testing.T) {
assert.NoError(t, err)

client.EXPECT().ListInstances(gomock.Any(), nil).Times(1).Return([]linodego.Instance{validInstance}, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(2).Return(routesInDifferentVPC, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(4).Return(routesInDifferentVPC, nil)
routes, err := routeController.ListRoutes(ctx, "test")
assert.NoError(t, err)
assert.Empty(t, routes)
})

t.Run("should return routes if multiple instances exists, connected to VPCs and ip_ranges configured", func(t *testing.T) {
ctx := context.Background()
ctrl := gomock.NewController(t)
defer ctrl.Finish()
client := mocks.NewMockClient(ctrl)
routeController, err := newRoutes(client)
assert.NoError(t, err)

vpcIP2 := "10.0.0.3"
addressRange3 := "10.192.40.0/24"
addressRange4 := "10.192.50.0/24"

validInstance2 := linodego.Instance{
ID: 124,
Label: "mock-instance2",
Type: linodeType,
Region: region,
IPv4: []*net.IP{&publicIPv4, &privateIPv4},
}

routesInVPC2 := []linodego.VPCIP{
{
Address: &vpcIP2,
AddressRange: nil,
VPCID: vpcIDs["abc"],
NAT1To1: nil,
LinodeID: 124,
},
{
Address: nil,
AddressRange: &addressRange3,
VPCID: vpcIDs["abc"],
NAT1To1: nil,
LinodeID: 124,
},
{
Address: nil,
AddressRange: &addressRange4,
VPCID: vpcIDs["abc"],
NAT1To1: nil,
LinodeID: 124,
},
}

client.EXPECT().ListInstances(gomock.Any(), nil).Times(1).Return([]linodego.Instance{validInstance, validInstance2}, nil)
c1 := client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).Times(1).Return(routesInVPC, nil)
c2 := client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).After(c1).Times(1).Return(routesInVPC2, nil)
c3 := client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).After(c2).Times(1).Return(routesInVPC, nil)
client.EXPECT().ListVPCIPAddresses(gomock.Any(), gomock.Any(), gomock.Any()).After(c3).Times(1).Return(routesInVPC2, nil)
routes, err := routeController.ListRoutes(ctx, "test")
assert.NoError(t, err)
assert.NotEmpty(t, routes)
cidrs := make([]string, len(routes))
for i, value := range routes {
cidrs[i] = value.DestinationCIDR
}
assert.Contains(t, cidrs, addressRange1)
assert.Contains(t, cidrs, addressRange2)
assert.Contains(t, cidrs, addressRange3)
assert.Contains(t, cidrs, addressRange4)
})
}

func TestCreateRoute(t *testing.T) {
Expand Down

0 comments on commit 4527c56

Please sign in to comment.