mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-10 04:30:20 +02:00
chore(all): replace netlink library for more flexibility (#3107)
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
//go:build linux
|
||||
|
||||
package netlink
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func Test_NetLink_LinkList(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
netlink := &NetLink{}
|
||||
|
||||
initialLinks, err := netlink.LinkList()
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, initialLinks)
|
||||
|
||||
loopbackFound := false
|
||||
for _, link := range initialLinks {
|
||||
if link.Name != "lo" {
|
||||
continue
|
||||
}
|
||||
loopbackFound = true
|
||||
assert.Equal(t, DeviceTypeLoopback, link.DeviceType)
|
||||
break
|
||||
}
|
||||
assert.True(t, loopbackFound, "loopback interface not found")
|
||||
|
||||
testLink := Link{
|
||||
Name: makeLinkName(),
|
||||
// note if [Link.VirtualType] is set, [Link.DeviceType]
|
||||
// is ignored and gets set to [DeviceTypeNone] in LinkAdd.
|
||||
DeviceType: DeviceTypeNone,
|
||||
VirtualType: "wireguard",
|
||||
MTU: 1420,
|
||||
}
|
||||
index, err := netlink.LinkAdd(testLink)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() {
|
||||
_ = netlink.LinkDel(index)
|
||||
})
|
||||
|
||||
links, err := netlink.LinkList()
|
||||
require.NoError(t, err)
|
||||
|
||||
testLink.Index = index
|
||||
for _, link := range links {
|
||||
if link.Name != testLink.Name {
|
||||
continue
|
||||
}
|
||||
assert.Equal(t, testLink, link)
|
||||
return
|
||||
}
|
||||
t.Errorf("created link %q not found", testLink.Name)
|
||||
}
|
||||
|
||||
func Test_NetLink_LinkSetMTU(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
netlink := &NetLink{}
|
||||
|
||||
testLink := Link{
|
||||
Name: makeLinkName(),
|
||||
DeviceType: DeviceTypeNone,
|
||||
VirtualType: "wireguard",
|
||||
MTU: 1420,
|
||||
}
|
||||
index, err := netlink.LinkAdd(testLink)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() {
|
||||
_ = netlink.LinkDel(index)
|
||||
})
|
||||
testLink.Index = index
|
||||
|
||||
err = netlink.LinkSetMTU(index, 1500)
|
||||
require.NoError(t, err)
|
||||
|
||||
link, err := netlink.LinkByIndex(index)
|
||||
require.NoError(t, err)
|
||||
testLink.MTU = 1500
|
||||
assert.Equal(t, testLink, link)
|
||||
}
|
||||
Reference in New Issue
Block a user