1
0
mirror of https://github.com/rancher/os.git synced 2025-07-19 09:26:27 +00:00
os/pkg/netconf/netconf_linux_test.go

98 lines
1.5 KiB
Go
Raw Normal View History

package netconf
import (
"net"
"testing"
"github.com/vishvananda/netlink"
)
type mockLink struct {
attrs netlink.LinkAttrs
t string
}
func (l mockLink) Attrs() *netlink.LinkAttrs {
return &l.attrs
}
func (l mockLink) Type() string {
return l.t
}
func TestFindMatch(t *testing.T) {
testCases := []struct {
match string
mac string
t string
name string
bond string
expected bool
}{
{
"mac:aa:bb:cc:dd:ee:ff",
"aa:bb:cc:dd:ee:ff",
"fake",
"eth0",
"bond0",
true,
},
{
"mac:aa:bb:cc:*",
"aa:bb:cc:12:34:56",
"fake",
"eth0",
"bond0",
true,
},
{
"mac:aa:bb:cc:*",
"11:bb:cc:dd:ee:ff",
"fake",
"eth0",
"bond0",
false,
},
{
"mac:aa:bb:cc:dd:ee:ff",
"aa:bb:cc:dd:ee:11",
"fake",
"eth0",
"bond0",
false,
},
// This is a bond eg. bond0
{
"mac:aa:bb:*",
"aa:bb:cc:dd:ee:11",
"bond",
"bond0",
"bond0",
false,
},
}
for i, tt := range testCases {
netCfg := NetworkConfig{
Interfaces: map[string]InterfaceConfig{
tt.name: InterfaceConfig{
Match: tt.match,
Bond: tt.bond,
},
},
}
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = tt.name
linkAttrs.HardwareAddr, _ = net.ParseMAC(tt.mac)
link := mockLink{attrs: linkAttrs}
_, match := findMatch(link, &netCfg)
if match != tt.expected {
t.Errorf("Test case %d failed: mac: '%s' match '%s' expected: '%v' got: '%v'", i, tt.mac, tt.match, tt.expected, match)
}
}
}