1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- 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)
- }
- }
- }
|