Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
test: Add test to check for route-setup for interfaces from same subnet
Browse files Browse the repository at this point in the history
This is not recommended, however we should not error out in
this scenario.

Signed-off-by: Archana Shinde <[email protected]>
  • Loading branch information
amshinde committed Aug 9, 2019
1 parent 2537235 commit b86f0de
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions network_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -349,3 +349,76 @@ func TestListRoutes(t *testing.T) {
assert.True(reflect.DeepEqual(results.Routes[1], inputRoutesSimple[1]),
"Route listed didn't match: got %+v, expecting %+v", results.Routes[1], inputRoutesSimple[1])
}

func TestListRoutesWithTwoInterfacesSameSubnet(t *testing.T) {
tearDown := setupNetworkTest(t)
defer tearDown()

assert := assert.New(t)

s := sandbox{}

// create a dummy link which we'll play with
macAddr := net.HardwareAddr{0x02, 0x00, 0xCA, 0xFE, 0x00, 0x48}
linkOne := &netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{
MTU: 1500,
TxQLen: -1,
Name: "ifc-name",
HardwareAddr: macAddr,
},
}
netHandle, _ := netlink.NewHandle()
defer netHandle.Delete()

netHandle.LinkAdd(linkOne)
if err := netHandle.LinkSetUp(linkOne); err != nil {
t.Fatal(err)
}
netlinkAddr, _ := netlink.ParseAddr("192.168.0.2/16")
netHandle.AddrAdd(linkOne, netlinkAddr)

linkTwo := &netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{
MTU: 1500,
TxQLen: -1,
Name: "ifc-name2",
HardwareAddr: macAddr,
},
}

netHandle.LinkAdd(linkTwo)
if err := netHandle.LinkSetUp(linkTwo); err != nil {
t.Fatal(err)
}
netlinkAddr, _ = netlink.ParseAddr("192.168.0.3/16")
netHandle.AddrAdd(linkTwo, netlinkAddr)

//Test a simple route setup:
inputRoutesSimple := []*types.Route{
{Dest: "", Gateway: "192.168.0.1", Source: "", Scope: 0, Device: "ifc-name"},
}

expectedRoutes := []*types.Route{
{Dest: "", Gateway: "192.168.0.1", Source: "", Scope: 0, Device: "ifc-name"},
{Dest: "192.168.0.0/16", Gateway: "", Source: "192.168.0.2", Scope: 253, Device: "ifc-name"},
{Dest: "192.168.0.0/16", Gateway: "", Source: "192.168.0.3", Scope: 253, Device: "ifc-name2"},
}

testRoutes := &pb.Routes{
Routes: inputRoutesSimple,
}

_, err := s.updateRoutes(netHandle, testRoutes)
assert.Nil(err)
results, err := s.listRoutes(nil)
assert.Nil(err, "Expected to list all routes")

assert.True(reflect.DeepEqual(results.Routes[0], expectedRoutes[0]),
"Route listed didn't match: got %+v, expecting %+v", results.Routes[0], expectedRoutes[0])
assert.True(reflect.DeepEqual(results.Routes[1], expectedRoutes[1]),
"Route listed didn't match: got %+v, expecting %+v", results.Routes[1], expectedRoutes[1])
assert.True(reflect.DeepEqual(results.Routes[2], expectedRoutes[2]),
"Route listed didn't match: got %+v, expecting %+v", results.Routes[2], expectedRoutes[2])

}

0 comments on commit b86f0de

Please sign in to comment.