pkg/ip link_test: ensure SetHWAddrByIP has an effect
This commit is contained in:
parent
55fd81f775
commit
f68cea27bc
@ -28,10 +28,17 @@ import (
|
|||||||
"github.com/vishvananda/netlink/nl"
|
"github.com/vishvananda/netlink/nl"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func getHwAddr(linkname string) string {
|
||||||
|
veth, err := netlink.LinkByName(linkname)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
return fmt.Sprintf("%s", veth.Attrs().HardwareAddr)
|
||||||
|
}
|
||||||
|
|
||||||
var _ = Describe("Link", func() {
|
var _ = Describe("Link", func() {
|
||||||
const (
|
const (
|
||||||
ifaceFormatString string = "i%d"
|
ifaceFormatString string = "i%d"
|
||||||
mtu int = 1400
|
mtu int = 1400
|
||||||
|
ip4onehwaddr = "0a:58:01:01:01:01"
|
||||||
)
|
)
|
||||||
var (
|
var (
|
||||||
hostNetNS ns.NetNS
|
hostNetNS ns.NetNS
|
||||||
@ -39,6 +46,9 @@ var _ = Describe("Link", func() {
|
|||||||
ifaceCounter int = 0
|
ifaceCounter int = 0
|
||||||
hostVethName string
|
hostVethName string
|
||||||
containerVethName string
|
containerVethName string
|
||||||
|
|
||||||
|
ip4one = net.ParseIP("1.1.1.1")
|
||||||
|
ip4two = net.ParseIP("1.1.1.2")
|
||||||
)
|
)
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
@ -129,4 +139,41 @@ var _ = Describe("Link", func() {
|
|||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("SetHWAddrByIP must change the interface hwaddr and be predictable", func() {
|
||||||
|
|
||||||
|
_ = containerNetNS.Do(func(ns.NetNS) error {
|
||||||
|
defer GinkgoRecover()
|
||||||
|
|
||||||
|
var err error
|
||||||
|
hwaddrBefore := getHwAddr(containerVethName)
|
||||||
|
|
||||||
|
err = ip.SetHWAddrByIP(containerVethName, ip4one, nil)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
hwaddrAfter1 := getHwAddr(containerVethName)
|
||||||
|
|
||||||
|
Expect(hwaddrBefore).NotTo(Equal(hwaddrAfter1))
|
||||||
|
Expect(hwaddrAfter1).To(Equal(ip4onehwaddr))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
It("SetHWAddrByIP must be injective", func() {
|
||||||
|
|
||||||
|
_ = containerNetNS.Do(func(ns.NetNS) error {
|
||||||
|
defer GinkgoRecover()
|
||||||
|
|
||||||
|
err := ip.SetHWAddrByIP(containerVethName, ip4one, nil)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
hwaddrAfter1 := getHwAddr(containerVethName)
|
||||||
|
|
||||||
|
err = ip.SetHWAddrByIP(containerVethName, ip4two, nil)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
hwaddrAfter2 := getHwAddr(containerVethName)
|
||||||
|
|
||||||
|
Expect(hwaddrAfter1).NotTo(Equal(hwaddrAfter2))
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user